diff --git a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc
index 4905362..7758693 100644
Binary files a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc and b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc differ
diff --git a/standards/templatetags/counter_tag.py b/standards/templatetags/counter_tag.py
index f577032..a326b38 100644
--- a/standards/templatetags/counter_tag.py
+++ b/standards/templatetags/counter_tag.py
@@ -8,7 +8,7 @@ import os
from django.conf import settings
from django.utils import timezone
from datetime import date
-
+import datetime
register = template.Library()
b = 0
@@ -273,7 +273,7 @@ def getactualworkingday(user):
returnstat = 0
if(len(wd) > 0):
- returnstat = list(wd)[0].start
+ returnstat = list(wd)[0].start
return returnstat
# Return formatted Time-String
@@ -350,7 +350,7 @@ def getdailybreaktime(user):
@register.simple_tag
def getdailybreaktimetoday(user):
today = date.today()
- wd = list(Workday.objects.filter(user=user, agency=user.profile.agency, start__day=today.day).order_by("start"))[0]
+ wd = list(Workday.objects.filter(user=user, agency=user.profile.agency).order_by("start").exclude(end=None))[0]
breaksum = 0
for b in wd.breaks.all():
if(b.end != None):
@@ -372,7 +372,16 @@ def getsumworkday(workday):
mon, sec = divmod(finalsum, 60)
hr, mon = divmod(mon, 60)
#return ("%d Stunden und %02d:%02d" % (hr, mon, sec))
- return ("%d Stunden, %02d Minuten" % (hr, mon))
+ return ("%d:%02d" % (hr, mon))
+
+@register.simple_tag
+def getsumworkdayexcludebreak(workday):
+ finalsum = ((workday.end - workday.start).seconds)
+
+ mon, sec = divmod(finalsum, 60)
+ hr, mon = divmod(mon, 60)
+ #return ("%d Stunden und %02d:%02d" % (hr, mon, sec))
+ return ("%d:%02d" % (hr, mon))
@register.simple_tag
def getsumbreak(workday):
@@ -507,3 +516,81 @@ def startdatecheck(usertocheck, day):
return True
else:
return False
+
+# Gibt Minus/Null/Plus Gleitzeit für einen Arbeitstag
+@register.simple_tag
+def gettimeoveralldiff(workday, user):
+ sum_break = 0
+
+ if(len(workday.breaks.all()) > 0):
+
+ for ele in workday.breaks.all():
+ sum_break += (ele.end - ele.start).seconds
+
+ finalsum = ((workday.end - workday.start).seconds - sum_break)
+ hastowork = datetime.timedelta(hours=workday.target)
+
+ # Finale Summe Arbeitszeit inkl. Pausen und Arbeitszeit an diesem Tag
+ final_info = (int(finalsum) - int(hastowork.total_seconds()))/60
+
+ status = 0
+ # NEGATIVE GLEITZEIT
+ if(final_info < 0):
+ final_info = final_info * -1
+ status = 2
+ # Positive Gleitzeit
+ elif (final_info == 0):
+ status = 1
+ else:
+ status = 0
+
+ final_timeinfo = str(datetime.timedelta(minutes=final_info))
+ final_info_data = final_timeinfo.split(":")
+ final_info = str(final_info_data[0]) + ":" + str(final_info_data[1])
+
+ return [final_info, status]
+
+
+# Ladet das aktuelle Gleitzeitkonto
+@register.simple_tag
+def loadaccounttime(user):
+ status = 0
+ workdays = Workday.objects.filter(user=user).exclude(end=None)
+
+ finalaccounttimesum = datetime.timedelta(minutes=0)
+
+
+ for workday in workdays:
+ # Zeit, die der Mitarbeiter gearbeitet haben MUSS
+
+ sum_break = 0
+
+ if(len(workday.breaks.all()) > 0):
+
+ for ele in workday.breaks.all():
+ sum_break += (ele.end - ele.start).seconds
+
+ finalsum = ((workday.end - workday.start).seconds - sum_break)
+ hastowork = datetime.timedelta(hours=workday.target)
+ final_info = (int(finalsum) - int(hastowork.total_seconds()))/60
+
+ if(final_info >= 0.0):
+ finalaccounttimesum += datetime.timedelta(minutes=final_info)
+ else:
+ final_info = final_info * -1
+ finalaccounttimesum -= datetime.timedelta(minutes=final_info)
+
+
+ # Gesamtgleitzeit einmal schick darstellen mit rot und grün
+ # Wenn GLeitzeit NEGATIV ist
+ if(finalaccounttimesum.total_seconds() < 0):
+ status = 1
+ final_info_data = str(datetime.timedelta(seconds=finalaccounttimesum.total_seconds()*(-1))).split(":")
+ else:
+ status = 0
+ final_info_data = str(datetime.timedelta(seconds=finalaccounttimesum.total_seconds())).split(":")
+
+ final_info = str(final_info_data[0]) + ":" + str(final_info_data[1])
+
+ return [final_info, status]
+
diff --git a/timemanagement/forms.py b/timemanagement/forms.py
index 1362c51..19a7210 100644
--- a/timemanagement/forms.py
+++ b/timemanagement/forms.py
@@ -1,7 +1,7 @@
from bootstrap_datepicker_plus import DatePickerInput
from django import forms
from django.forms import ModelForm
-from .models import Absence, AbsenceReason, FreeDays
+from .models import Absence, AbsenceReason, FreeDays, Workday, Breaks
from users.models import UserFullName
from django.forms import HiddenInput
@@ -136,4 +136,50 @@ class AddFreeDayForm(forms.ModelForm):
def __init__(self, *arg, **kwargs):
super(AddFreeDayForm, self).__init__(*arg, **kwargs)
self.fields['name'].required = True
- self.fields['day'].required = True
\ No newline at end of file
+ self.fields['day'].required = True
+
+
+# UPDATE WORK FORM
+class UpdateWorkdayForm(forms.ModelForm):
+ class Meta:
+ model = Workday
+ labels = {
+ "start" : "Start",
+ "end" : "Ende",
+ "target" : "Zielarbeitszeit"
+ }
+
+ fields = [
+ "start", "end", "target"
+ ]
+ widgets = {
+ 'start': DatePickerInput(options={"format":'HH:mm', "locale":'de'}),
+ 'end': DatePickerInput(options={"format":'HH:mm', "locale":'de'}),
+ }
+
+ def __init__(self, *arg, **kwargs):
+ super(UpdateWorkdayForm, self).__init__(*arg, **kwargs)
+ self.fields['start'].required = True
+ self.fields['end'].required = True
+
+# ADD BREAK FORM
+class AddBreakForm(forms.ModelForm):
+ class Meta:
+ model = Breaks
+ labels = {
+ "start" : "Start",
+ "end" : "Ende"
+ }
+
+ fields = [
+ "start", "end"
+ ]
+ widgets = {
+ 'start': DatePickerInput(options={"format":'HH:mm', "locale":'de'}),
+ 'end': DatePickerInput(options={"format":'HH:mm', "locale":'de'}),
+ }
+
+ def __init__(self, *arg, **kwargs):
+ super(AddBreakForm, self).__init__(*arg, **kwargs)
+ self.fields['start'].required = True
+ self.fields['end'].required = True
\ No newline at end of file
diff --git a/timemanagement/models.py b/timemanagement/models.py
index 1d80ed3..11aeef9 100644
--- a/timemanagement/models.py
+++ b/timemanagement/models.py
@@ -11,6 +11,7 @@ class Workday(models.Model):
breaks = models.ManyToManyField("Breaks", blank=True, related_name='breaks_at_day')
start = models.DateTimeField(default=None, null=True, blank=True)
end = models.DateTimeField(default=None, null=True, blank=True)
+ target = models.FloatField(default=8.0)
class Breaks(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
diff --git a/timemanagement/templates/timemanagement/realtime_dropdown.html b/timemanagement/templates/timemanagement/realtime_dropdown.html
index d68fa6d..7e3a745 100644
--- a/timemanagement/templates/timemanagement/realtime_dropdown.html
+++ b/timemanagement/templates/timemanagement/realtime_dropdown.html
@@ -29,7 +29,13 @@
Arbeitstag starten
-Gleitzeitkonto: +00:13 Stunden
+{% loadaccounttime user as actualaccounttime %}
+Gleitzeitkonto:
+{% if actualaccounttime.1 == 0 %}
+ +{{actualaccounttime.0}} Stunden
+{% else %}
+ -{{actualaccounttime.0}} Stunden
+{% endif %}
+
+{% endif %}
+{% endblock content %}
\ No newline at end of file
diff --git a/timemanagement/templates/timemanagement/timemanagement_management.html b/timemanagement/templates/timemanagement/timemanagement_management.html
index 601fd96..2cbb12a 100644
--- a/timemanagement/templates/timemanagement/timemanagement_management.html
+++ b/timemanagement/templates/timemanagement/timemanagement_management.html
@@ -14,9 +14,8 @@
Ende
Arbeitszeit
Pausen
- Gesamtzeit
- Abwesenheit
- Gleitzeit in h
+ Gesamtzeit
+ Gleitzeit
@@ -27,31 +26,36 @@
{{forloop.counter}}
- {{workday.start}}
+ {{workday.start|date:"d.m.y H:i"}}
- {{workday.end}}
+ {{workday.end|date:"d.m.y H:i"}}
- {{ workday.end|timeuntil:workday.start }}
+ {% getsumworkdayexcludebreak workday as sumworkday %}
+ {{ sumworkday }}
{% getsumbreak workday as sumbreakofday %}
- {{sumbreakofday}} min. ({{workday.breaks.all|length}})
-
+ {{sumbreakofday}} min. ({{workday.breaks.all|length}})
{% getsumworkday workday as sumwd %}
{{sumwd}}
-
-
- DROPDOWN
+
+
+ {% gettimeoveralldiff workday user as erg%}
+ {% if erg.1 == 0 %}
+ +{{erg.0}}
+ {% elif erg.1 == 1 %}
+ {{erg.0}}
+ {% else %}
+ -{{erg.0}}
+ {% endif %}
-
-
-
-
+
+
@@ -60,6 +64,82 @@
+
+{% if user.usertime.usetime_start == None %}
+
+
+
+
+
+ Achtung! Es wurde kein Datum gefunden, ab wann die Zeiterfassung beginnen soll. Bitte tragen Sie dies in Ihrem Mitarbeiterkonto unter Einstellungen, Mitarbeiter, Ihre Vertragsdaten nach.
+
+ Dies können nur Mitarbeiter eintragen, die das Recht haben, Mitarbeiter zu verwalten.
+
+
+
+
+
+
+
+{% elif workdays|length == 0 %}
+
+
+
+
+
+ Es wurden keine Arbeitstage bis zum Beginn der Zeiterfassung am {{user.usertime.usetime_start|date:"d.m.Y"}} gefunden. Sollen diese Tage mit der Regelarbeitszeit aufgefüllt werden, welche bei den Vertragsdaten hinterlegt wurde?
+
+
+
+
+
+
+{% endif %}
+
{% for workday in workdays %}
diff --git a/timemanagement/templates/timemanagement/timemanagement_update.html b/timemanagement/templates/timemanagement/timemanagement_update.html
new file mode 100644
index 0000000..fc43925
--- /dev/null
+++ b/timemanagement/templates/timemanagement/timemanagement_update.html
@@ -0,0 +1,114 @@
+{% extends "users/base.html" %}
+{% block content %}
+{% load crispy_forms_tags %}
+{% load counter_tag %}
+{% if request.user.profile.agency.module_timemanagement %}
+
+
+
Arbeitstag am {{workday.start|date:"d.m.Y"}} bearbeiten
+
+
Start- und Endzeitpunkt
+
+
+
+
Pausen
+
+
+
+
+
+
+ #
+ Start
+ Ende
+
+
+
+
+ {% for break in workday.breaks.all %}
+
+ {{forloop.counter}}
+ {{break.start|date:"H:i"}}
+ {{break.end|date:"H:i"}}
+
+
+ {% endfor %}
+
+
+
+
+
Abbrechen
+
Arbeitstag aktualisieren
+
+
+
+
+{% for break in workday.breaks.all %}
+
+
+
+
+
+ Möchten Sie wirklich die Pause von {{break.start|date:"H:i"}} bis {{break.end|date:"H:i"}} löschen?
+
+
+
+
+
+
+{% endfor %}
+
+
+{% endif %}
+{% endblock content %}
\ No newline at end of file
diff --git a/timemanagement/urls.py b/timemanagement/urls.py
index f142e35..74577dd 100644
--- a/timemanagement/urls.py
+++ b/timemanagement/urls.py
@@ -1,22 +1,16 @@
from django.urls import path
from django.contrib.auth.decorators import login_required, permission_required
-from .views import TimeManagement, TimeAjax, AbsenceManagmenet, AbsenceUpdate
+from .views import TimeManagement, TimeAjax, AbsenceManagmenet, AbsenceUpdate, TimeUpdate, AddBreak
'''
Permissions definiert in models.py bei USERS und dann hier vor die View geschrieben!
'''
urlpatterns = [
path('', TimeManagement, name='tm-management'),
+ path('update/
', TimeUpdate, name='tm-update'),
+ path('update//addbreak/', AddBreak, name='add-break'),
path('abs/', AbsenceManagmenet, name='tma-management'),
path('abs//', AbsenceManagmenet, name='tma-management'),
path('ajax/', TimeAjax, name='tm-ajax'),
path('abs/update//', AbsenceUpdate, name='tma-update'),
- #path('newsadd/', permission_required('users.modulenews')(views.NewsAdd), name='news-add'),
- #path('newsupdate//', permission_required('users.modulenews')(views.NewsUpdate), name='news-update'),
- #path('news//delete', permission_required('users.modulenews')(NewsDeleteView.as_view()), name='news-delete'),
-
- #path('standard//changestat', views.StandardChangePublic, name="standard-status"),
- #path('news//single', views.NewsSingle, name="news-single"),
- #path('standard//area', views.StandardArea, name="standard-area"),
- #path('standard//task', views.StandardTask, name="standard-task")
]
diff --git a/timemanagement/views.py b/timemanagement/views.py
index 4664de2..5b56271 100644
--- a/timemanagement/views.py
+++ b/timemanagement/views.py
@@ -11,7 +11,7 @@ from django.contrib.auth.models import User
from calendar import monthrange
import datetime
import calendar
-from .forms import AddAbsence, ConfirmAbsenceForm, UpdateAbsence
+from .forms import AddAbsence, ConfirmAbsenceForm, UpdateAbsence, UpdateWorkdayForm, AddBreakForm
from django.contrib import messages
from users.models import UserFullName, UserYearAbsenceInfo
from users.models import UserTime
@@ -291,20 +291,86 @@ def AbsenceManagmenet(request, activemonth=False, activeyear=False):
@login_required
def TimeManagement(request):
+ # TODO: Abwesenheiten mit berücksichtigen!
+
context = {
"active_link" : "timemanagement",
- "workdays" : Workday.objects.filter(agency=request.user.profile.agency, user=request.user).order_by("-start")
+ "workdays" : Workday.objects.filter(agency=request.user.profile.agency, user=request.user).order_by("-start").exclude(end=None)
}
return render(request, 'timemanagement/timemanagement_management.html', context)
+@login_required
+def TimeUpdate(request, pk):
+ if(request.method == "POST"):
+ form = UpdateWorkdayForm(request.POST, instance=request.user)
+ workday = Workday.objects.get(pk=pk)
+
+ start = datetime.datetime(int(workday.start.year), int(workday.start.month), int(workday.start.day), int(((str(form["start"].value()).split(":"))[0])), int(((str(form["start"].value()).split(":"))[1])))
+
+ 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.start = start
+ workday.end = end
+ workday.target = form["target"].value()
+ workday.save()
+ messages.success(request, f'Arbeitstag aktualisiert')
+
+ return redirect('tm-management')
+ else:
+ context = {
+ "active_link" : "timemanagement",
+ "workday" : Workday.objects.get(pk=pk),
+ "form" : UpdateWorkdayForm(instance= Workday.objects.get(pk=pk))
+ }
+ return render(request, 'timemanagement/timemanagement_update.html', context)
+
+@login_required
+def AddBreak(request, pk):
+ if(request.method == "POST"):
+ workday = Workday.objects.get(pk=pk)
+ form = AddBreakForm(request.POST, instance=request.user)
+
+ start = datetime.datetime(int(workday.start.year), int(workday.start.month), int(workday.start.day), int(((str(form["start"].value()).split(":"))[0])), int(((str(form["start"].value()).split(":"))[1])))
+
+ 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])))
+
+ newbreak = Breaks.objects.create(workday=workday, user=request.user, agency=request.user.profile.agency, start=start, end=end)
+
+ workday.breaks.add(newbreak)
+ workday.save()
+ messages.success(request, f'Pause hinzugefügt')
+ return redirect('tm-update', pk=pk)
+ else:
+ context = {
+ "active_link" : "timemanagement",
+ "workday" : Workday.objects.get(pk=pk),
+ "form" : AddBreakForm(instance=request.user)
+ }
+ return render(request, 'timemanagement/timemanagement_break.html', context)
+
@login_required
def TimeAjax(request):
data = {}
if request.method == "GET":
# START WORKDAY
if request.GET["action"] == "start_day":
- wd = Workday(user=request.user, agency=request.user.profile.agency, start=timezone.now())
+
+ today = date.today()
+ targettime = 0.0
+ if(today.isoweekday() == 1):
+ targettime = request.user.usertime.wd_mo
+ elif(today.isoweekday() == 2):
+ targettime = request.user.usertime.wd_tu
+ elif(today.isoweekday() == 3):
+ targettime = request.user.usertime.wd_we
+ elif(today.isoweekday() == 4):
+ targettime = request.user.usertime.wd_th
+ elif(today.isoweekday() == 5):
+ targettime = request.user.usertime.wd_fr
+
+ wd = Workday(user=request.user, agency=request.user.profile.agency, start=timezone.now(), target=targettime)
wd.save()
+
data = {
"success" : True,
"wd_starttime" : wd.start.strftime("%H:%M:%S"),
@@ -368,6 +434,84 @@ def TimeAjax(request):
}
else:
data = { "success" : False}
+ # REMOVE BREAK
+ elif request.GET["action"] == "remove_break":
+ breakwd = Breaks.objects.get(pk=request.GET.get("break"))
+ if(breakwd.user == request.user and breakwd.agency == request.user.profile.agency):
+ breakwd.delete()
+ data = {
+ "success" : True
+ }
+ else:
+ data = { "success" : False}
+ # LOADING INTIAIL WORKDAYS
+ elif request.GET["action"] == "initial_load":
+
+ allfreedays = FreeDays.objects.filter(agency=request.user.profile.agency, day__gt=request.user.usertime.usetime_start, day__lt=date.today())
+
+
+ weekdays = [6,7]
+ for dt in daterange(request.user.usertime.usetime_start, date.today()):
+ if dt.isoweekday() not in weekdays:
+ in_freedays = False
+ for freeday in allfreedays.all():
+ if(dt == freeday.day):
+ in_freedays = True
+ break;
+
+ if(not in_freedays):
+ # MONDAY
+ if(dt.isoweekday() == 1):
+ start_time = datetime.timedelta(hours=8)
+ start_date = datetime.date(int(dt.year), int(dt.month), int(dt.day))
+ end_time = datetime.timedelta(hours=request.user.usertime.wd_mo) + start_time
+ time_start = datetime.datetime.strptime(str(start_time), "%H:%M:%S").time()
+ time_end = datetime.datetime.strptime(str(end_time), "%H:%M:%S").time()
+ start_datetime = datetime.datetime.combine(start_date, time_start)
+ end_datetime = datetime.datetime.combine(start_date, time_end)
+
+ Workday.objects.create(user=request.user, agency=request.user.profile.agency, start=start_datetime, end=end_datetime, target=request.user.usertime.wd_mo)
+ if(dt.isoweekday() == 2):
+ start_time = datetime.timedelta(hours=8)
+ start_date = datetime.date(int(dt.year), int(dt.month), int(dt.day))
+ end_time = datetime.timedelta(hours=request.user.usertime.wd_tu) + start_time
+ time_start = datetime.datetime.strptime(str(start_time), "%H:%M:%S").time()
+ time_end = datetime.datetime.strptime(str(end_time), "%H:%M:%S").time()
+ start_datetime = datetime.datetime.combine(start_date, time_start)
+ end_datetime = datetime.datetime.combine(start_date, time_end)
+
+ Workday.objects.create(user=request.user, agency=request.user.profile.agency, start=start_datetime, end=end_datetime, target=request.user.usertime.wd_tu)
+ if(dt.isoweekday() == 3):
+ start_time = datetime.timedelta(hours=8)
+ start_date = datetime.date(int(dt.year), int(dt.month), int(dt.day))
+ end_time = datetime.timedelta(hours=request.user.usertime.wd_we) + start_time
+ time_start = datetime.datetime.strptime(str(start_time), "%H:%M:%S").time()
+ time_end = datetime.datetime.strptime(str(end_time), "%H:%M:%S").time()
+ start_datetime = datetime.datetime.combine(start_date, time_start)
+ end_datetime = datetime.datetime.combine(start_date, time_end)
+
+ Workday.objects.create(user=request.user, agency=request.user.profile.agency, start=start_datetime, end=end_datetime, target=request.user.usertime.wd_we)
+ if(dt.isoweekday() == 4):
+ start_time = datetime.timedelta(hours=8)
+ start_date = datetime.date(int(dt.year), int(dt.month), int(dt.day))
+ end_time = datetime.timedelta(hours=request.user.usertime.wd_th) + start_time
+ time_start = datetime.datetime.strptime(str(start_time), "%H:%M:%S").time()
+ time_end = datetime.datetime.strptime(str(end_time), "%H:%M:%S").time()
+ start_datetime = datetime.datetime.combine(start_date, time_start)
+ end_datetime = datetime.datetime.combine(start_date, time_end)
+
+ Workday.objects.create(user=request.user, agency=request.user.profile.agency, start=start_datetime, end=end_datetime, target=request.user.usertime.wd_th)
+ if(dt.isoweekday() == 5):
+ start_time = datetime.timedelta(hours=8)
+ start_date = datetime.date(int(dt.year), int(dt.month), int(dt.day))
+ end_time = datetime.timedelta(hours=request.user.usertime.wd_fr) + start_time
+ time_start = datetime.datetime.strptime(str(start_time), "%H:%M:%S").time()
+ time_end = datetime.datetime.strptime(str(end_time), "%H:%M:%S").time()
+ start_datetime = datetime.datetime.combine(start_date, time_start)
+ end_datetime = datetime.datetime.combine(start_date, time_end)
+
+ Workday.objects.create(user=request.user, agency=request.user.profile.agency, start=start_datetime, end=end_datetime, target=request.user.usertime.wd_fr)
+
# Get Rendered Table
elif request.GET["action"] == "getrenderedtable":
prevmonth = ""
@@ -440,7 +584,7 @@ def TimeAjax(request):
}
return render(request, "timemanagement/rendered_table.html", context)
- # Get Rendered Table
+ # Prüfung, ob eine Vertretung nötig ist oder nicht
elif request.GET["action"] == "checkrequired":
reason = AbsenceReason.objects.get(pk=request.GET["rid"])
if(reason.agency == request.user.profile.agency):
@@ -725,3 +869,4 @@ def daterange(date1, date2):
yield date1 + timedelta(n)
+
diff --git a/users/signals.py b/users/signals.py
index 2d33bd8..863edec 100644
--- a/users/signals.py
+++ b/users/signals.py
@@ -77,7 +77,9 @@ def checkDefaultAbsenceReasons(sender, user, request, **kwargs):
new_ar_education = AbsenceReason(agency=user.profile.agency, name="Fortbildung", color="#2ECC71", need_confirm=True, need_rep=True, is_holiday=False)
new_ar_education.save()
-
+ new_ar_time = AbsenceReason(agency=user.profile.agency, name="Gleitzeit", color="#9B59B6", need_confirm=True, need_rep=False, is_holiday=False)
+ new_ar_time.save()
+
today = date.today()
# FREEDAYS LADEN
diff --git a/users/templates/users/base.html b/users/templates/users/base.html
index 4680b6e..4b03fcc 100644
--- a/users/templates/users/base.html
+++ b/users/templates/users/base.html
@@ -162,7 +162,7 @@
- Chat
+ Chat BETA
{% endif %}
@@ -175,7 +175,7 @@
{%endif%}
- Abwesenheiten
+ Abwesenheiten BETA
{% endif %}
@@ -188,7 +188,7 @@
{%endif%}
- Zeiterfassung
+ Zeiterfassung BETA
{% endif %}
@@ -310,7 +310,7 @@
- {% if request.user.usertime.usetime %}
+ {% if request.user.usertime.usetime and user.usertime.usetime_start != None %}
@@ -327,10 +327,6 @@
Zur Zeiterfassung
-
-
-
-
{% endif %}