|
|
@@ -33,7 +33,7 @@ def create_multiple_shifts(request):
|
|
|
shifttype=shifttype,
|
|
|
info=info
|
|
|
)
|
|
|
- return redirect('current_week_shifts') # Annahme, dass Sie eine Erfolgsmeldung anzeigen möchten
|
|
|
+ return redirect('public') # Annahme, dass Sie eine Erfolgsmeldung anzeigen möchten
|
|
|
else:
|
|
|
form = MultipleShiftForm(initial=initial_data)
|
|
|
|
|
|
@@ -63,7 +63,7 @@ def create_event(request):
|
|
|
cvd=cvd,
|
|
|
cvt=cvt
|
|
|
)
|
|
|
- return redirect('current_week_shifts') # Annahme, dass Sie eine Erfolgsmeldung anzeigen möchten
|
|
|
+ return redirect('public') # Annahme, dass Sie eine Erfolgsmeldung anzeigen möchten
|
|
|
else:
|
|
|
form = EventForm(initial=initial_data)
|
|
|
|
|
|
@@ -75,107 +75,6 @@ def is_admin(user):
|
|
|
return user.is_authenticated and user.is_staff
|
|
|
|
|
|
|
|
|
-@user_passes_test(is_admin, login_url='/public')
|
|
|
-def current_week_shifts(request):
|
|
|
- # Standardmäßig die aktuelle Woche anzeigen
|
|
|
- today = timezone.now().date()
|
|
|
-
|
|
|
- # Überprüfen, ob ein Startdatum in der URL angegeben ist
|
|
|
- start_date_str = request.GET.get('start_date')
|
|
|
- if start_date_str:
|
|
|
- try:
|
|
|
- start_of_week = datetime.strptime(start_date_str, '%Y-%m-%d').date()
|
|
|
- except ValueError:
|
|
|
- start_of_week = today - timedelta(days=today.weekday()) # Fallback auf die aktuelle Woche bei Fehler
|
|
|
- else:
|
|
|
- start_of_week = today - timedelta(days=today.weekday()) # Montag der aktuellen Woche
|
|
|
-
|
|
|
- end_of_week = start_of_week + timedelta(days=6) # Sonntag der aktuellen Woche
|
|
|
-
|
|
|
- # Berechnung für die nächste und vorherige Woche
|
|
|
- previous_week = start_of_week - timedelta(days=7)
|
|
|
- next_week = start_of_week + timedelta(days=7)
|
|
|
-
|
|
|
- # Berechnung der Kalenderwoche
|
|
|
- calendar_week = start_of_week.isocalendar()[1]
|
|
|
-
|
|
|
- # Initialisiere ein Dictionary für die Schichten der Mitarbeiter
|
|
|
- shifts_by_employee = {}
|
|
|
- events_by_location = {}
|
|
|
- helpers_by_date = {}
|
|
|
- reinigungs_by_date = {}
|
|
|
- employees = Employee.objects.all()
|
|
|
- locations = Location.objects.all()
|
|
|
- helpers = Helper.objects.all()
|
|
|
- reinigungs = Reinigung.objects.all()
|
|
|
-
|
|
|
-
|
|
|
- for employee in employees:
|
|
|
- shifts_by_employee[employee] = {day: None for day in range(7)}
|
|
|
-
|
|
|
- for location in locations:
|
|
|
- events_by_location[location] = {day: None for day in range(7)}
|
|
|
-
|
|
|
- for helper in helpers:
|
|
|
- helpers_by_date = {day: None for day in range(7)}
|
|
|
-
|
|
|
- for reinigung in reinigungs:
|
|
|
- reinigungs_by_date = {day: None for day in range(7)}
|
|
|
-
|
|
|
- # Hole alle Schichten für die aktuelle Woche
|
|
|
- shifts = Shift.objects.filter(date__range=[start_of_week, end_of_week])
|
|
|
-
|
|
|
- events = Event.objects.filter(date__range=[start_of_week, end_of_week])
|
|
|
-
|
|
|
- helpers = Helper.objects.filter(date__range=[start_of_week, end_of_week])
|
|
|
-
|
|
|
- reinigungs = Reinigung.objects.filter(date__range=[start_of_week, end_of_week])
|
|
|
-
|
|
|
- # Fülle das Dictionary mit den Schichtdaten
|
|
|
- for shift in shifts:
|
|
|
- employee = shift.employee
|
|
|
- day_of_week = (shift.date - start_of_week).days
|
|
|
- shifts_by_employee[employee][day_of_week] = shift
|
|
|
-
|
|
|
- for event in events:
|
|
|
- location = event.location
|
|
|
- day_of_week = (event.date - start_of_week).days
|
|
|
- events_by_location[location][day_of_week] = event
|
|
|
-
|
|
|
- for helper in helpers:
|
|
|
- day_of_week = (helper.date - start_of_week).days
|
|
|
- helpers_by_date[day_of_week] = helper
|
|
|
-
|
|
|
- for reinigung in reinigungs:
|
|
|
- day_of_week = (reinigung.date - start_of_week).days
|
|
|
- reinigungs_by_date[day_of_week] = reinigung
|
|
|
-
|
|
|
-
|
|
|
- # Bereite die Daten der Woche für das Template vor
|
|
|
- week_dates = [(start_of_week + timedelta(days=i)).strftime("%d.%m.%Y") for i in range(7)]
|
|
|
- days_of_week = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So']
|
|
|
- days_with_dates = list(zip(days_of_week, week_dates))
|
|
|
-
|
|
|
- context = {
|
|
|
- 'shifts_by_employee': shifts_by_employee,
|
|
|
- 'events_by_location': events_by_location,
|
|
|
- 'helpers_by_date': helpers_by_date,
|
|
|
- 'reinigungs_by_date': reinigungs_by_date,
|
|
|
- 'start_of_week': start_of_week,
|
|
|
- 'end_of_week': end_of_week,
|
|
|
- 'days_with_dates': days_with_dates,
|
|
|
- 'range_days': range(7),
|
|
|
- 'previous_week': previous_week.strftime('%Y-%m-%d'),
|
|
|
- 'next_week': next_week.strftime('%Y-%m-%d'),
|
|
|
- 'calendar_week': calendar_week,
|
|
|
- }
|
|
|
- #print(shifts_by_employee)
|
|
|
- print(events_by_location)
|
|
|
- print(helpers_by_date)
|
|
|
- print(reinigungs_by_date)
|
|
|
- return render(request, 'main/current_week_shifts.html', context)
|
|
|
-
|
|
|
-
|
|
|
def public(request):
|
|
|
# Standardmäßig die aktuelle Woche anzeigen
|
|
|
today = timezone.now().date()
|
|
|
@@ -268,7 +167,7 @@ def create_reinigung(request):
|
|
|
form = ReinigungForm(request.POST)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
- return redirect('current_week_shifts') # Redirect to a relevant page after saving
|
|
|
+ return redirect('public') # Redirect to a relevant page after saving
|
|
|
else:
|
|
|
form = ReinigungForm()
|
|
|
return render(request, 'main/create_reinigung.html', {'form': form})
|
|
|
@@ -283,7 +182,7 @@ def create_helper(request):
|
|
|
form = HelperForm(request.POST)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
- return redirect('current_week_shifts') # Redirect to a relevant page after saving
|
|
|
+ return redirect('public') # Redirect to a relevant page after saving
|
|
|
else:
|
|
|
form = HelperForm()
|
|
|
return render(request, 'main/create_helper.html', {'form': form})
|
|
|
@@ -295,7 +194,7 @@ def edit_reinigung(request, pk):
|
|
|
form = ReinigungForm(request.POST, instance=reinigung)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
- return redirect('current_week_shifts')
|
|
|
+ return redirect('public')
|
|
|
else:
|
|
|
form = ReinigungForm(instance=reinigung)
|
|
|
return render(request, 'main/edit_reinigung.html', {'form': form, 'reinigung': reinigung})
|
|
|
@@ -306,7 +205,7 @@ def edit_helper(request, pk):
|
|
|
form = HelperForm(request.POST, instance=helper)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
- return redirect('current_week_shifts')
|
|
|
+ return redirect('public')
|
|
|
else:
|
|
|
form = HelperForm(instance=helper)
|
|
|
return render(request, 'main/edit_helper.html', {'form': form, 'helper': helper})
|
|
|
@@ -318,7 +217,7 @@ def edit_shift(request, pk):
|
|
|
form = ShiftForm(request.POST, instance=shift)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
- return redirect('current_week_shifts')
|
|
|
+ return redirect('public')
|
|
|
else:
|
|
|
form = ShiftForm(instance=shift)
|
|
|
return render(request, 'main/edit_shift.html', {'form': form, 'shift': shift})
|
|
|
@@ -330,7 +229,7 @@ def edit_event(request, pk):
|
|
|
form = EventForm(request.POST, instance=event)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
- return redirect('current_week_shifts')
|
|
|
+ return redirect('public')
|
|
|
else:
|
|
|
form = EventForm(instance=event)
|
|
|
return render(request, 'main/edit_event.html', {'form': form, 'event': event})
|
|
|
@@ -340,21 +239,21 @@ def delete_shift(request, pk):
|
|
|
shift = get_object_or_404(Shift, pk=pk)
|
|
|
if request.method == 'POST':
|
|
|
shift.delete()
|
|
|
- return redirect('current_week_shifts')
|
|
|
+ return redirect('public')
|
|
|
return render(request, 'main/delete_shift.html', {'shift': shift})
|
|
|
|
|
|
def delete_reinigung(request, pk):
|
|
|
reinigung = get_object_or_404(Reinigung, pk=pk)
|
|
|
if request.method == 'POST':
|
|
|
reinigung.delete()
|
|
|
- return redirect('current_week_shifts')
|
|
|
+ return redirect('public')
|
|
|
return render(request, 'main/delete_reinigung.html', {'reinigung': reinigung})
|
|
|
|
|
|
def delete_helper(request, pk):
|
|
|
helper = get_object_or_404(Helper, pk=pk)
|
|
|
if request.method == 'POST':
|
|
|
helper.delete()
|
|
|
- return redirect('current_week_shifts')
|
|
|
+ return redirect('public')
|
|
|
return render(request, 'main/delete_helper.html', {'helper': helper})
|
|
|
|
|
|
|
|
|
@@ -362,5 +261,5 @@ def delete_event(request, pk):
|
|
|
event = get_object_or_404(Event, pk=pk)
|
|
|
if request.method == 'POST':
|
|
|
event.delete()
|
|
|
- return redirect('current_week_shifts')
|
|
|
+ return redirect('public')
|
|
|
return render(request, 'main/delete_event.html', {'event': event})
|