feat: dodaj scheduled_date na Task i kalendar widget

- Novo polje Task.scheduled_date (DateField, nullable, db_index) za planiranje
- Migracija 0009_task_scheduled_date
- Celery task notify_upcoming_tasks: dnevno u 08:00 šalje Pusher + email za sutrašnje zadatke
- TaskCalendarWidget: react-spring slide panel s lijeve strane, grid prikaz mjeseca, dot indikatori, klik otvara TaskServiceRecordsModal
- FleetDashboardShell: import + render kalendara, Planirano stupac u tablici zadataka
- TaskCreateModal + TaskServiceRecordsModal: scheduled_date input i prikaz
- Admin + serializer + views: scheduled_date filter i prikaz
- 47 backend testova prolaze (uključuje 8 novih za notify_upcoming_tasks)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
mariomitte
2026-07-19 14:52:10 +02:00
parent bf8e25efe7
commit 0c9e1b7d50
17 changed files with 610 additions and 7 deletions

View File

@@ -96,6 +96,7 @@ class TaskSerializer(serializers.ModelSerializer):
'assigned_to', 'assigned_to_name',
'vehicle', 'vehicle_registration',
'work_order', 'work_order_label',
'scheduled_date',
'template_id', 'auto_close_work_order',
'created_at',
]
@@ -106,6 +107,7 @@ class TaskSerializer(serializers.ModelSerializer):
'status': {'required': False},
'work_order': {'required': False, 'allow_null': True},
'vehicle': {'required': False, 'allow_null': True},
'scheduled_date': {'required': False, 'allow_null': True},
}
def validate_title(self, value):