Prechádzať zdrojové kódy

20240722_2212
Work on Helpers1

Rene 1 rok pred
rodič
commit
56194977f4

+ 5 - 0
.idea/codeStyles/codeStyleConfig.xml

@@ -0,0 +1,5 @@
+<component name="ProjectCodeStyleConfiguration">
+  <state>
+    <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
+  </state>
+</component>

+ 1 - 1
AD/settings.py

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

BIN
db.sqlite3


+ 18 - 1
main/forms.py

@@ -1,5 +1,6 @@
 from django import forms
-from .models import Shift, Employee, Event
+from .models import Shift, Employee, Event, Helper
+from django.utils.translation import gettext_lazy as _
 
 class MultipleShiftForm(forms.Form):
     employees = forms.ModelMultipleChoiceField(queryset=Employee.objects.all(), widget=forms.CheckboxSelectMultiple)
@@ -19,3 +20,19 @@ class EventForm(forms.ModelForm):
     class Meta:
         model = Event
         fields = ['date', 'name', 'event_type', 'location', 'cvd', 'cvt']
+
+
+class HelperForm(forms.ModelForm):
+
+    class Meta:
+        model = Helper
+        fields = ['date', 'ben', 'best', 'info']
+        widgets = {
+            'date': forms.widgets.DateInput(attrs={'type': 'date'})
+        }
+        labels = {
+            'date': _('Datum'),
+            'ben': _('Benötigt'),
+            'best': _('Bestätigt'),
+            'info': _('Info')
+        }

+ 18 - 0
main/migrations/0005_alter_helper_best.py

@@ -0,0 +1,18 @@
+# Generated by Django 5.0.2 on 2024-07-22 19:54
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('main', '0004_rename_benoetigt_helper_ben_and_more'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='helper',
+            name='best',
+            field=models.PositiveSmallIntegerField(blank=True, null=True),
+        ),
+    ]

+ 1 - 1
main/models.py

@@ -6,7 +6,7 @@ from django.utils.translation import gettext_lazy as _
 class Helper(models.Model):
     date = models.DateField()
     ben = models.PositiveSmallIntegerField()
-    best = models.PositiveSmallIntegerField()
+    best = models.PositiveSmallIntegerField(blank=True, null=True)
     info = models.TextField(blank=True, null=True)
 
     def __str__(self):

+ 5 - 1
main/urls.py

@@ -1,13 +1,17 @@
 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
+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)
 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('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('delete-shift/<int:pk>/', delete_shift, name='delete_shift'),
+    path('delete-helper/<int:pk>/', delete_helper, name='delete_helper'),
     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'),

+ 32 - 1
main/views.py

@@ -1,5 +1,5 @@
 from django.shortcuts import render, redirect, get_object_or_404
-from .forms import MultipleShiftForm, ShiftForm, EventForm
+from .forms import MultipleShiftForm, ShiftForm, EventForm, HelperForm
 from .models import Shift, Employee, Location, Event, Helper
 from django.utils.timezone import datetime, timedelta
 from django.utils import timezone
@@ -229,6 +229,29 @@ def public(request):
     return render(request, 'main/public.html', context)
 
 
+def create_helper(request):
+    if request.method == 'POST':
+        form = HelperForm(request.POST)
+        if form.is_valid():
+            form.save()
+            return redirect('current_week_shifts')  # Redirect to a relevant page after saving
+    else:
+        form = HelperForm()
+    return render(request, 'main/create_helper.html', {'form': form})
+
+
+def edit_helper(request, pk):
+    helper = get_object_or_404(Helper, pk=pk)
+    if request.method == 'POST':
+        form = HelperForm(request.POST, instance=helper)
+        if form.is_valid():
+            form.save()
+            return redirect('current_week_shifts')
+    else:
+        form = HelperForm(instance=helper)
+    return render(request, 'main/edit_helper.html', {'form': form, 'helper': helper})
+
+
 def edit_shift(request, pk):
     shift = get_object_or_404(Shift, pk=pk)
     if request.method == 'POST':
@@ -261,6 +284,14 @@ def delete_shift(request, pk):
     return render(request, 'main/delete_shift.html', {'shift': shift})
 
 
+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 render(request, 'main/delete_helper.html', {'helper': helper})
+
+
 def delete_event(request, pk):
     event = get_object_or_404(Event, pk=pk)
     if request.method == 'POST':

+ 21 - 0
templates/main/create_helper.html

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

+ 4 - 4
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={{ date }}'"></td>
+                                    <td class="shift-none" onclick="window.location.href='{% url 'create_event' %}?date={{ helper.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 %}
@@ -127,15 +127,15 @@
                             {% if helpers_by_date|default_if_none:None %}
                                 {% if helpers_by_date|get_item:day %}
                                     {% with helper=helpers_by_date|get_item:day %}
-                                        <td align="center" class="shift-none">
+                                        <td class="shift-none" onclick="window.location.href='{% url 'edit_helper' pk=helper.id %}'">
                                             {{ helper.ben }}/{{ helper.best }}
                                         </td>
                                     {% endwith %}
                                 {% else %}
-                                    <td class="shift-none">-/-</td>
+                                    <td class="shift-none" onclick="window.location.href='{% url 'create_helper' %}?date={{ date }}'">--</td>
                                 {% endif %}
                             {% else %}
-                                <td class="shift-none">-/-</td>
+                                <td class="shift-none" onclick="window.location.href='{% url 'create_helper' %}?date={{ date }}'">--</td>
                             {% endif %}
                         {% endfor %}
                     </tr>

+ 22 - 0
templates/main/delete_helper.html

@@ -0,0 +1,22 @@
+{% load bootstrap5 %}
+
+<!DOCTYPE html>
+<html lang="de">
+<head>
+    <meta charset="UTF-8">
+    <title>Helfer löschen</title>
+    {% bootstrap_css %}
+</head>
+<body>
+    <div class="container">
+        <h2>Helfer löschen</h2>
+        <p>Möchten Sie die Helferschicht 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_helper.html

@@ -0,0 +1,25 @@
+{% load bootstrap5 %}
+<!DOCTYPE html>
+<html lang="de">
+<head>
+    <meta charset="UTF-8">
+    <title>Helfer bearbeiten</title>
+    {% bootstrap_css %}
+</head>
+<body>
+    <div class="container">
+        <h2>Helfer 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_helper' pk=helper.id %}" class="mt-3">
+            {% csrf_token %}
+            <button type="submit" class="btn btn-danger">Löschen</button>
+        </form>
+    </div>
+    {% bootstrap_javascript %}
+</body>
+</html>