diff --git a/timemanagement/forms.py b/timemanagement/forms.py
index 6e24724..1362c51 100644
--- a/timemanagement/forms.py
+++ b/timemanagement/forms.py
@@ -45,6 +45,54 @@ class AddAbsence(forms.ModelForm):
self.fields['activeyear'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput())
self.fields['userid'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput())
+
+
+class UpdateAbsence(forms.ModelForm):
+
+ class Meta:
+ model = Absence
+ labels = {
+ "start" : "Beginn der Abwesenheit",
+ "start_ishalf" : "Halber Tag?",
+ "end" : "Ende der Abwesenheit",
+ "end_ishalf" : "Halber Tag?",
+ "reason" : "Abwesenheitsgrund",
+ "representator" : "Vertreter",
+ "info" : "Begründung",
+ "startday_info" : "",
+ "endday_info" : ""
+ }
+ widgets = {
+ 'start': DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}),
+ 'end': DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}),
+ }
+
+
+ #fields = ['start', 'start_ishalf', 'end','end_ishalf', 'reason', "representator", 'info']
+ fields = ['start', 'startday_info', 'end','endday_info', 'reason', "representator", 'info', 'holidays_normal', 'holidays_rest', 'holidays_normal_next', 'holidays_rest_next' ]
+
+ def __init__(self, *arg, **kwargs):
+ super(UpdateAbsence, self).__init__(*arg, **kwargs)
+ self.fields['reason'].queryset = AbsenceReason.objects.filter(agency=kwargs['instance'].profile.agency).order_by('-name')
+ self.fields['representator'].queryset = UserFullName.objects.filter(profile__agency=kwargs['instance'].profile.agency, )
+ self.fields['info'].widget.attrs['rows'] = 3
+ self.fields['start'].required = True
+ self.fields['end'].required = True
+ self.fields['reason'].required = True
+
+ self.fields['nextmonth'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput())
+ self.fields['prevmonth'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput())
+ self.fields['nextyear'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput())
+ self.fields['prevyear'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput())
+ self.fields['activemonth'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput())
+ self.fields['activeyear'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput())
+ self.fields['userid'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput())
+
+ self.fields['holidays_normal'] = forms.FloatField(required=False, widget=forms.HiddenInput())
+ self.fields['holidays_rest'] = forms.FloatField(required=False, widget=forms.HiddenInput())
+ self.fields['holidays_normal_next'] = forms.FloatField(required=False, widget=forms.HiddenInput())
+ self.fields['holidays_rest_next'] = forms.FloatField(required=False, widget=forms.HiddenInput())
+
'''
def clean(self):
start_date = self.cleaned_data['start']
diff --git a/timemanagement/templates/timemanagement/rendered_table.html b/timemanagement/templates/timemanagement/rendered_table.html
index 948a3ab..fb056a4 100644
--- a/timemanagement/templates/timemanagement/rendered_table.html
+++ b/timemanagement/templates/timemanagement/rendered_table.html
@@ -458,7 +458,8 @@ function recalculateChoosenDaysAfterInit(){
$("#detail_tocontract").html(data["need_days"]);
$("#detail_tocontract_overall").html(data["need_days"]);
-
+ $("#detail_next_rest").html(data["restholiday_nextyear_rest"]);
+
if(data["two_years"] == true){
$("#detail_tocontract").html(data["need_days_this"]);
$("#two_years").show();
diff --git a/timemanagement/templates/timemanagement/tm_ab_all.html b/timemanagement/templates/timemanagement/tm_ab_all.html
index 97c6651..4818540 100644
--- a/timemanagement/templates/timemanagement/tm_ab_all.html
+++ b/timemanagement/templates/timemanagement/tm_ab_all.html
@@ -23,7 +23,8 @@
{{abday.reason.name}} |
{{abday.info}} |
{% if abday.confirm_status == 0 %} Genehmigt {% elif abday.confirm_status == 1 %} Beantragt {% else %} Abgelehnt {% endif %} |
-
+ |
+
|
@@ -33,6 +34,12 @@
+
+{% endif %}
+{% endblock content %}
diff --git a/timemanagement/urls.py b/timemanagement/urls.py
index 9b1cf57..f142e35 100644
--- a/timemanagement/urls.py
+++ b/timemanagement/urls.py
@@ -1,6 +1,6 @@
from django.urls import path
from django.contrib.auth.decorators import login_required, permission_required
-from .views import TimeManagement, TimeAjax, AbsenceManagmenet
+from .views import TimeManagement, TimeAjax, AbsenceManagmenet, AbsenceUpdate
'''
Permissions definiert in models.py bei USERS und dann hier vor die View geschrieben!
'''
@@ -10,6 +10,7 @@ urlpatterns = [
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'),
diff --git a/timemanagement/views.py b/timemanagement/views.py
index 0fe0f4b..4664de2 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
+from .forms import AddAbsence, ConfirmAbsenceForm, UpdateAbsence
from django.contrib import messages
from users.models import UserFullName, UserYearAbsenceInfo
from users.models import UserTime
@@ -50,6 +50,90 @@ def get_datetime_range(year, month):
nb_days = monthrange(year, month)[1]
return [datetime.date(year, month, day) for day in range(1, nb_days+1)]
+@login_required
+def AbsenceUpdate(request, pk):
+
+ if request.method == "GET":
+ absence = Absence.objects.get(pk=pk)
+ timeinfo_thisyear = list(UserYearAbsenceInfo.objects.filter(year=absence.start.year, user=absence.user))[0]
+ try:
+ timeinfo_nextyear = list(UserYearAbsenceInfo.objects.filter(year=absence.start.year+1, user=absence.user))[0]
+ except:
+ timeinfo_nextyear = False
+
+ context = {
+ "active_link" : "abscence",
+ "form" : UpdateAbsence(instance=request.user),
+ "absence" : absence,
+ "timeinfo_thisyear" : timeinfo_thisyear,
+ "timeinfo_nextyear" : timeinfo_nextyear,
+ "start" : absence.start.strftime("%d.%m.%Y"),
+ "end" : absence.end.strftime("%d.%m.%Y"),
+ }
+ return render(request, 'timemanagement/tm_ab_update.html', context)
+ elif request.method == "POST":
+ absence = Absence.objects.get(pk=pk)
+ formtocheck = UpdateAbsence(request.POST, instance=request.user)
+ if(formtocheck.is_valid()):
+
+ abinfo = list(UserYearAbsenceInfo.objects.filter(user=absence.user, year=absence.start.year))[0]
+ abinfo_lastyear = ""
+ abinfo_nextyear = ""
+
+ is_lastyear = False
+
+ abinfo_lastyear = list(UserYearAbsenceInfo.objects.filter(user=absence.user, year=absence.start.year-1))
+ if(len(abinfo_lastyear) > 0):
+ is_lastyear = True
+ abinfo_lastyear = abinfo_lastyear[0]
+
+ is_nextyear = False
+ abinfo_nextyear = list(UserYearAbsenceInfo.objects.filter(user=absence.user, year=absence.start.year+1))
+ if(len(abinfo_nextyear) > 0):
+ is_nextyear = True
+ abinfo_nextyear = abinfo_nextyear[0]
+
+
+ print(formtocheck.cleaned_data["holidays_normal"])
+ print(formtocheck.cleaned_data["holidays_rest"])
+
+ print(formtocheck.cleaned_data["startday_info"])
+ print(formtocheck.cleaned_data["endday_info"])
+
+ abinfo.days_inuse -= formtocheck.cleaned_data["holidays_normal"]
+ abinfo.restdays -= formtocheck.cleaned_data["holidays_rest"]
+ abinfo.save()
+
+ abinfo_nextyear.days_inuse -= formtocheck.cleaned_data["holidays_normal_next"]
+ abinfo_nextyear.restdays -= formtocheck.cleaned_data["holidays_rest_next"]
+ abinfo_nextyear.save()
+
+ absence.start = formtocheck.cleaned_data["start"]
+ absence.end = formtocheck.cleaned_data["end"]
+ absence.startday_info = str(formtocheck.cleaned_data["startday_info"])
+ absence.endday_info = str(formtocheck.cleaned_data["endday_info"])
+ absence.reason = formtocheck.cleaned_data["reason"]
+
+ rep = None
+ if(formtocheck.cleaned_data["representator"] != None):
+ rep = User.objects.get(pk=formtocheck.cleaned_data["representator"].pk)
+ absence.representator = rep
+ absence.info = formtocheck.cleaned_data["info"]
+
+ absence.holidays_normal = 0.0
+ absence.holidays_rest = 0.0
+ absence.holidays_normal_next = 0.0
+ absence.holidays_rest_next = 0.0
+
+ absence.save()
+
+ messages.success(request, f'Abwesenheit aktualisiert!')
+ else:
+ messages.success(request, f'Fehler bei Abwesenheitsaktualisierung!')
+ context = {
+ "active_link" : "abscence",
+ }
+ return redirect("tma-management")
@login_required
def AbsenceManagmenet(request, activemonth=False, activeyear=False):
@@ -530,7 +614,7 @@ def TimeAjax(request):
days_nextyear_normal = temprest * -1
# POrüfen, ob es in diesem Zeitraum noch andere Abwesenheiten gibt
- other_absences = Absence.objects.filter(start__lte=start_day_obj, end__gte=end_day_obj, agency=request.user.profile.agency)
+ other_absences = Absence.objects.filter(start__lte=start_day_obj, end__gte=end_day_obj, agency=request.user.profile.agency).exclude(user=user)
other_absences_string = False
if (len(other_absences) > 0):