Browse Source

20240722_2212
Worskl Reinigung

Rene 1 year ago
parent
commit
9f16e28a55

+ 1 - 1
AD/settings.py

@@ -107,7 +107,7 @@ AUTH_PASSWORD_VALIDATORS = [
 # Internationalization
 # https://docs.djangoproject.com/en/5.0/topics/i18n/
 
-LANGUAGE_CODE = 'en-en'
+LANGUAGE_CODE = 'de-de'
 
 TIME_ZONE = 'Europe/Berlin'
 

+ 1 - 0
AD/urls.py

@@ -18,6 +18,7 @@ from django.contrib import admin
 from django.urls import path, include
 from django.views.generic import RedirectView
 from django.urls import re_path as url
+admin.autodiscover()
 
 
 urlpatterns = [

BIN
db.sqlite3


+ 6 - 2
main/admin.py

@@ -1,11 +1,15 @@
 from django.contrib import admin
-from .models import Employee, Shift, Location, Event, Helper
+from .models import Employee, Shift, Location, Event, Helper, Reinigung
 
 
 class HelperAdmin(admin.ModelAdmin):
     list_display = ('date', 'ben', 'best', 'info')
     search_fields = ('date', 'info')
 
+class ReinigungAdmin(admin.ModelAdmin):
+    list_display = ('date', 'auftrag', 'info')
+    search_fields = ('date', 'info')
+
 
 class EmployeeAdmin(admin.ModelAdmin):
     list_display = ('name', 'daily_workhours', 'info')
@@ -23,9 +27,9 @@ class EventAdmin(admin.ModelAdmin):
     list_filter = ('date', 'name', 'event_type')
     search_fields = ('date', 'name', 'location', 'event_type')
 
-
 admin.site.register(Employee, EmployeeAdmin)
 admin.site.register(Shift, ShiftAdmin)
 admin.site.register(Event, EventAdmin)
 admin.site.register(Location)
 admin.site.register(Helper, HelperAdmin)
+admin.site.register(Reinigung, ReinigungAdmin)

+ 5 - 1
main/forms.py

@@ -1,5 +1,5 @@
 from django import forms
-from .models import Shift, Employee, Event, Helper
+from .models import Shift, Employee, Event, Helper, Reinigung
 from django.utils.translation import gettext_lazy as _
 
 class MultipleShiftForm(forms.Form):
@@ -21,6 +21,10 @@ class EventForm(forms.ModelForm):
         model = Event
         fields = ['date', 'name', 'event_type', 'location', 'cvd', 'cvt']
 
+class ReinigungForm(forms.ModelForm):
+    class Meta:
+        model = Reinigung
+        fields = ['date', 'auftrag', 'info']
 
 class HelperForm(forms.ModelForm):
 

+ 22 - 0
main/migrations/0006_reinigung.py

@@ -0,0 +1,22 @@
+# Generated by Django 5.0.2 on 2024-10-18 15:57
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('main', '0005_alter_helper_best'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Reinigung',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('date', models.DateField()),
+                ('Auftrag', models.CharField(choices=[('Beauftragen', 'Beauftragen'), ('Bestellt', 'Bestellt')], default='', max_length=12, null=True)),
+                ('Info', models.TextField(blank=True, null=True)),
+            ],
+        ),
+    ]

+ 17 - 0
main/models.py

@@ -12,6 +12,23 @@ class Helper(models.Model):
     def __str__(self):
         return f"{self.date} - {self.ben} - {self.best}"
 
+class Reinigung(models.Model):
+    class ShiftType(models.TextChoices):
+        Beauftragen = 'Beauftragen'  # Placeholder for "None" if you're using it
+        Bestellt = 'Bestellt'
+
+    date = models.DateField()
+    auftrag = models.CharField(
+        max_length=12,
+        choices=ShiftType.choices,
+        default='',
+        null=True,
+    )
+    info = models.TextField(blank=True, null=True)
+
+    def __str__(self):
+        return f"{self.date} - {self.auftrag}"
+
 class Employee(models.Model):
     name = models.CharField(max_length=100)
     daily_workhours = models.PositiveIntegerField()

+ 5 - 1
main/urls.py

@@ -1,17 +1,21 @@
 from django.urls import path
 from .views import (create_multiple_shifts, current_week_shifts, edit_shift, delete_shift, delete_event, edit_event,
-                    create_event, public, create_helper, edit_helper, delete_helper)
+                    create_event, public, create_helper, edit_helper, delete_helper, create_reinigung, edit_reinigung,
+                    delete_reinigung)
 from django.contrib.auth import views as auth_views
 
 urlpatterns = [
     path('create-multiple-shifts/', create_multiple_shifts, name='create_multiple_shifts'),
     path('create-event/', create_event, name='create_event'),
     path('create-helper/', create_helper, name='create_helper'),
+    path('create-reinigung/', create_reinigung, name='create_reinigung'),
     path('current-week-shifts/', current_week_shifts, name='current_week_shifts'),
     path('edit-shift/<int:pk>/', edit_shift, name='edit_shift'),
     path('edit-helper/<int:pk>/', edit_helper, name='edit_helper'),
+    path('edit-reinigung/<int:pk>/', edit_reinigung, name='edit_reinigung'),
     path('delete-shift/<int:pk>/', delete_shift, name='delete_shift'),
     path('delete-helper/<int:pk>/', delete_helper, name='delete_helper'),
+    path('delete-reinigung/<int:pk>/', delete_reinigung, name='delete_reinigung'),
     path('edit-event/<int:pk>/', edit_event, name='edit_event'),
     path('delete-event/<int:pk>/', delete_event, name='delete_event'),
     path('login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'),

+ 53 - 2
main/views.py

@@ -1,6 +1,6 @@
 from django.shortcuts import render, redirect, get_object_or_404
-from .forms import MultipleShiftForm, ShiftForm, EventForm, HelperForm
-from .models import Shift, Employee, Location, Event, Helper
+from .forms import MultipleShiftForm, ShiftForm, EventForm, HelperForm, ReinigungForm
+from .models import Shift, Employee, Location, Event, Helper, Reinigung
 from django.utils.timezone import datetime, timedelta
 from django.utils import timezone
 from django.contrib.auth.decorators import user_passes_test
@@ -100,9 +100,12 @@ def current_week_shifts(request):
     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)}
@@ -113,6 +116,9 @@ def current_week_shifts(request):
     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])
 
@@ -120,6 +126,8 @@ def current_week_shifts(request):
 
     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
@@ -135,6 +143,11 @@ def current_week_shifts(request):
         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']
@@ -144,6 +157,7 @@ def current_week_shifts(request):
         '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,
@@ -155,6 +169,7 @@ def current_week_shifts(request):
     #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)
 
 
@@ -228,8 +243,27 @@ def public(request):
     }
     return render(request, 'main/public.html', context)
 
+def create_reinigung(request):
+    date_str = request.GET.get('date')
+    initial_data = {}
+    if date_str:
+        initial_data['date'] = date_str
+
+    if request.method == 'POST':
+        form = ReinigungForm(request.POST)
+        if form.is_valid():
+            form.save()
+            return redirect('current_week_shifts')  # Redirect to a relevant page after saving
+    else:
+        form = ReinigungForm()
+    return render(request, 'main/create_reinigung.html', {'form': form})
 
 def create_helper(request):
+    date_str = request.GET.get('date')
+    initial_data = {}
+    if date_str:
+        initial_data['date'] = date_str
+
     if request.method == 'POST':
         form = HelperForm(request.POST)
         if form.is_valid():
@@ -240,6 +274,17 @@ def create_helper(request):
     return render(request, 'main/create_helper.html', {'form': form})
 
 
+def edit_reinigung(request, pk):
+    reinigung = get_object_or_404(Reinigung, pk=pk)
+    if request.method == 'POST':
+        form = ReinigungForm(request.POST, instance=reinigung)
+        if form.is_valid():
+            form.save()
+            return redirect('current_week_shifts')
+    else:
+        form = ReinigungForm(instance=reinigung)
+    return render(request, 'main/edit_reinigung.html', {'form': form, 'reinigung': reinigung})
+
 def edit_helper(request, pk):
     helper = get_object_or_404(Helper, pk=pk)
     if request.method == 'POST':
@@ -283,6 +328,12 @@ def delete_shift(request, pk):
         return redirect('current_week_shifts')
     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 render(request, 'main/delete_reinigung.html', {'reinigung': reinigung})
 
 def delete_helper(request, pk):
     helper = get_object_or_404(Helper, pk=pk)

+ 21 - 0
templates/main/create_reinigung.html

@@ -0,0 +1,21 @@
+{% load bootstrap5 %}
+<!DOCTYPE html>
+<html lang="de">
+<head>
+    <meta charset="UTF-8">
+    <title>Reinigungsauftrag erstellen</title>
+    {% bootstrap_css %}
+</head>
+<body>
+    <div class="container">
+        <h2>Reinigungsauftrag erstellen</h2>
+        <form method="post">
+            {% csrf_token %}
+            {% bootstrap_form form %}
+            <button type="submit" class="btn btn-primary">Event erstellen</button>
+            <a href="{% url 'current_week_shifts' %}" class="btn btn-secondary">Abbrechen</a>
+        </form>
+    </div>
+    {% bootstrap_javascript %}
+</body>
+</html>

+ 19 - 1
templates/main/current_week_shifts.html

@@ -107,7 +107,7 @@
                         {% for day, date in days_with_dates %}
                             {% with event=events|get_item:forloop.counter0 %}
                                 {% if event == None %}
-                                    <td class="shift-none" onclick="window.location.href='{% url 'create_event' %}?date={{ helper.date }}'"></td>
+                                    <td class="shift-none" onclick="window.location.href='{% url 'create_event' %}?date={{ date }}'"></td>
                                 {% else %}
                                     <td class="shift-none" onclick="window.location.href='{% url 'edit_event' pk=event.id %}'" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-html="true" title="Name: {{ event.name }}<br> Location: {{ event.location }}<br> CVD: {{ event.cvd }}<br> CVT: {{ event.cvt }}">
                                             {% if event.name %}
@@ -121,6 +121,24 @@
                         {% endfor %}
                     </tr>
                     {% endfor %}
+                    <tr>
+                        <td class="employee-name">Reinigung</td>
+                        {% for day in range_days %}
+                            {% if reinigungs_by_date|default_if_none:None %}
+                                {% if reinigungs_by_date|get_item:day %}
+                                    {% with reinigung=reinigungs_by_date|get_item:day %}
+                                        <td class="shift-none" onclick="window.location.href='{% url 'edit_reinigung' pk=reinigung.id %}'">
+                                            {{ reinigung.auftrag }}
+                                        </td>
+                                    {% endwith %}
+                                {% else %}
+                                    <td class="shift-none" onclick="window.location.href='{% url 'create_reinigung' %}?date={{ date }}'">--</td>
+                                {% endif %}
+                            {% else %}
+                                <td class="shift-none" onclick="window.location.href='{% url 'create_reinigung' %}?date={{ date }}'">--</td>
+                            {% endif %}
+                        {% endfor %}
+                    </tr>
                     <tr>
                         <td class="employee-name">Helfer</td>
                         {% for day in range_days %}

+ 22 - 0
templates/main/delete_reinigung.html

@@ -0,0 +1,22 @@
+{% load bootstrap5 %}
+
+<!DOCTYPE html>
+<html lang="de">
+<head>
+    <meta charset="UTF-8">
+    <title>Reinigungsauftrag löschen</title>
+    {% bootstrap_css %}
+</head>
+<body>
+    <div class="container">
+        <h2>Helfer löschen</h2>
+        <p>Möchten Sie den Reinigungsauftrag wirklich löschen?</p>
+        <form method="post">
+            {% csrf_token %}
+            <button type="submit" class="btn btn-danger">Löschen</button>
+            <a href="{% url 'current_week_shifts' %}" class="btn btn-secondary">Abbrechen</a>
+        </form>
+    </div>
+    {% bootstrap_javascript %}
+</body>
+</html>

+ 25 - 0
templates/main/edit_reinigung.html

@@ -0,0 +1,25 @@
+{% load bootstrap5 %}
+<!DOCTYPE html>
+<html lang="de">
+<head>
+    <meta charset="UTF-8">
+    <title>Reinigungsauftrag bearbeiten</title>
+    {% bootstrap_css %}
+</head>
+<body>
+    <div class="container">
+        <h2>Reinigungsauftrag bearbeiten</h2>
+        <form method="post">
+            {% csrf_token %}
+            {% bootstrap_form form %}
+            <button type="submit" class="btn btn-primary">Speichern</button>
+            <a href="{% url 'current_week_shifts' %}" class="btn btn-secondary">Abbrechen</a>
+        </form>
+        <form method="post" action="{% url 'delete_reinigung' pk=reinigung.id %}" class="mt-3">
+            {% csrf_token %}
+            <button type="submit" class="btn btn-danger">Löschen</button>
+        </form>
+    </div>
+    {% bootstrap_javascript %}
+</body>
+</html>