From 886d1ff0d75a7c3afdd29211e8ed03385f4b4b1b Mon Sep 17 00:00:00 2001 From: "holger.trampe" Date: Mon, 18 Jan 2021 07:22:54 +0100 Subject: [PATCH] Added Freefield --- dump.rdb | Bin 4189 -> 29602 bytes timemanagement/forms.py | 10 +++--- timemanagement/models.py | 1 + .../timemanagement/timemanagement_add.html | 6 ++-- .../timemanagement_singleview.html | 30 ++++++++++++++++-- .../timemanagement_teamview_single.html | 28 +++++++++++++++- .../timemanagement/timemanagement_update.html | 6 ++-- timemanagement/views.py | 5 +-- 8 files changed, 71 insertions(+), 15 deletions(-) diff --git a/dump.rdb b/dump.rdb index edf7747eccfc1db645fe2eeec92454e51d06a0c8..d21c9aa7709458793d3d3f7eb84c4e1c9f71a21f 100644 GIT binary patch literal 29602 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 diff --git a/timemanagement/forms.py b/timemanagement/forms.py index 905c100..03013e9 100644 --- a/timemanagement/forms.py +++ b/timemanagement/forms.py @@ -148,11 +148,12 @@ class UpdateWorkdayForm(forms.ModelForm): labels = { "start" : "Start", "end" : "Ende", - "target" : "Zielarbeitszeit" + "target" : "Zielarbeitszeit", + "freefield" : "Notiz" } fields = [ - "start", "end", "target" + "start", "end", "target", "freefield" ] widgets = { 'start': DatePickerInput(options={"format":'HH:mm', "locale":'de'}), @@ -172,11 +173,12 @@ class AddWorkdayForm(forms.ModelForm): labels = { "start" : "Start", "end" : "Ende", - "target" : "Zielarbeitszeit" + "target" : "Zielarbeitszeit", + "freefield" : "Notiz" } fields = [ - "start", "end", "target" + "start", "end", "target", "freefield" ] widgets = { 'start': DatePickerInput(options={"format":'DD.MM.YYYY HH:mm', "locale":'de'}), diff --git a/timemanagement/models.py b/timemanagement/models.py index b4a342f..cbc7bd2 100644 --- a/timemanagement/models.py +++ b/timemanagement/models.py @@ -15,6 +15,7 @@ class Workday(models.Model): start = models.DateTimeField(default=None, null=True, blank=True) end = models.DateTimeField(default=None, null=True, blank=True) target = models.FloatField(default=8.0) + freefield = models.TextField(max_length=10000, default="", blank=True) history = HistoricalRecords() class Breaks(models.Model): diff --git a/timemanagement/templates/timemanagement/timemanagement_add.html b/timemanagement/templates/timemanagement/timemanagement_add.html index f1e4938..9e983b3 100644 --- a/timemanagement/templates/timemanagement/timemanagement_add.html +++ b/timemanagement/templates/timemanagement/timemanagement_add.html @@ -5,16 +5,16 @@ {% if request.user.profile.agency.module_timemanagement %} -
+

Arbeitstag {% if team == 1 %} von {{user.get_full_name}} {% endif %} hinzufügen


Start- und Endzeitpunkt
-
+
{% csrf_token %} {{form.media}} {{form|crispy}} -
+
Abbrechen diff --git a/timemanagement/templates/timemanagement/timemanagement_singleview.html b/timemanagement/templates/timemanagement/timemanagement_singleview.html index 25173d6..9660519 100644 --- a/timemanagement/templates/timemanagement/timemanagement_singleview.html +++ b/timemanagement/templates/timemanagement/timemanagement_singleview.html @@ -293,7 +293,7 @@ {% endfor %} - + {% counterWDreset %} {% for workday in workdays %} @@ -307,8 +307,34 @@ {% counterWDUp %} + + {% if workday.freefield != "" %} + + + + + + {% endif %} + {% if breakmonthline < da %} - + {% endif %} {% endif %} diff --git a/timemanagement/templates/timemanagement/timemanagement_teamview_single.html b/timemanagement/templates/timemanagement/timemanagement_teamview_single.html index bff0374..0392dd1 100644 --- a/timemanagement/templates/timemanagement/timemanagement_teamview_single.html +++ b/timemanagement/templates/timemanagement/timemanagement_teamview_single.html @@ -310,7 +310,7 @@ {% endif %} {% endfor %} - + {% counterWDreset %} {% for workday in workdays %} @@ -325,6 +325,32 @@ {% counterWDUp %} + {% if workday.freefield != "" %} + + + + + + {% endif %} + + diff --git a/timemanagement/templates/timemanagement/timemanagement_update.html b/timemanagement/templates/timemanagement/timemanagement_update.html index 8d83637..b1b8988 100644 --- a/timemanagement/templates/timemanagement/timemanagement_update.html +++ b/timemanagement/templates/timemanagement/timemanagement_update.html @@ -3,17 +3,17 @@ {% load crispy_forms_tags %} {% load counter_tag %} {% if request.user.profile.agency.module_timemanagement %} -
+

Arbeitstag am {{workday.start|date:"d.m.Y"}} {% if team == 1 %} von {{user.get_full_name}} {% endif %} bearbeiten


Start- und Endzeitpunkt
-
+ {% csrf_token %} {{form.media}} {{form|crispy}} -
+
Pausen {% if team == 1 %} diff --git a/timemanagement/views.py b/timemanagement/views.py index fb03c10..276d602 100644 --- a/timemanagement/views.py +++ b/timemanagement/views.py @@ -347,7 +347,7 @@ def TimeManagementTeamSingle(request, pk, activemonth=False, activeyear=False): # Requestet User has no rights... else: - messages.success(request, f'Das würfen Sie nicht!') + messages.success(request, f'Das dürfen Sie nicht!') return redirect("tm-management") @@ -425,6 +425,7 @@ def TimeUpdate(request, pk, team=0): workday.start = start workday.end = end + workday.freefield = form["freefield"].value() workday.target = form["target"].value() workday.save() messages.success(request, f'Arbeitstag aktualisiert') @@ -457,7 +458,7 @@ def TimeAdd(request, team=0, pk=0): #end = datetime.datetime(int(workday.end.year), int(workday.end.month), int(workday.end.day), int(((str(form["end"].value()).split(":"))[0])), int(((str(form["end"].value()).split(":"))[1]))) - workday = Workday(start=form.cleaned_data["start"], end=form.cleaned_data["end"], target=form.cleaned_data["target"], user=user, agency=request.user.profile.agency) + workday = Workday(start=form.cleaned_data["start"], end=form.cleaned_data["end"], target=form.cleaned_data["target"], user=user, freefield=form.cleaned_data["freefield"], agency=request.user.profile.agency) if workday.start.day != workday.end.day or workday.start.month != workday.end.month or workday.start.year != workday.end.year or workday.start > workday.end: messages.success(request, f'Der Arbeitstag darf nur an einem Tag stattfinden und das Ende muss nach dem Anfang liegen.')