feat: dodaj bilješke widget i admin kalendar/notifikacije
Uveden je novi Notes drawer s kalendar integracijom, zajednički DRY left-slide mehanizam te međusobno isključivo prikazivanje s Kalendar widgetom. Backend i frontend su prošireni za servisne bilješke (uključujući slanje na više servisera), dodan je users/servicers endpoint, te su uvedene warning notifikacije kada serviser ima više od 2 zadatka isti dan. U admin su dodane stavke za Bilješke i zaseban Kalendar zadataka (proxy TaskCalendar) radi lakšeg operativnog pregleda. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
from django.test import TestCase
|
||||
from django.contrib.auth import get_user_model
|
||||
from unittest.mock import patch
|
||||
from datetime import date
|
||||
from rest_framework.exceptions import ValidationError
|
||||
from modules.task_management.services import TaskService
|
||||
from modules.task_management.exceptions import OpenWorkOrderBlockingTaskClose
|
||||
@@ -192,4 +194,76 @@ class TaskServiceTests(TestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(TaskWorkEntry.objects.filter(task=created).count(), 10)
|
||||
self.assertEqual(VehicleServiceRecord.objects.filter(task=created).count(), 10)
|
||||
self.assertEqual(VehicleServiceRecord.objects.filter(task=created).count(), 10)
|
||||
|
||||
@patch('modules.fleet.services.NotificationService.create_notification')
|
||||
def test_create_task_entry_sends_overload_notifications_after_two_tasks(self, mock_notify):
|
||||
servicer = get_user_model().objects.create_user(
|
||||
username='servicer-overload',
|
||||
email='servicer-overload@example.test',
|
||||
password='test1234',
|
||||
is_serviser=True,
|
||||
is_team_member=True,
|
||||
)
|
||||
supervisor = get_user_model().objects.create_user(
|
||||
username='supervisor-overload',
|
||||
email='supervisor-overload@example.test',
|
||||
password='test1234',
|
||||
is_team_member=True,
|
||||
is_serviser=False,
|
||||
)
|
||||
vehicle = Vehicle.objects.create(registration_number="ZG-TASK-OVER1", asset_type='crane')
|
||||
scheduled = date(2026, 7, 21)
|
||||
|
||||
Task.objects.create(title="Postojeći 1", assigned_to=servicer, vehicle=vehicle, status='aktivan', scheduled_date=scheduled)
|
||||
Task.objects.create(title="Postojeći 2", assigned_to=servicer, vehicle=vehicle, status='servis', scheduled_date=scheduled)
|
||||
|
||||
TaskService.create_task_entry(
|
||||
data={
|
||||
"title": "Treći task",
|
||||
"status": "aktivan",
|
||||
"assigned_to": servicer,
|
||||
"vehicle": vehicle,
|
||||
"scheduled_date": scheduled,
|
||||
},
|
||||
user=self.staff,
|
||||
)
|
||||
|
||||
recipients = [call.kwargs.get('recipient') for call in mock_notify.call_args_list]
|
||||
recipient_ids = {str(recipient.id) for recipient in recipients if recipient}
|
||||
self.assertIn(str(servicer.id), recipient_ids)
|
||||
self.assertIn(str(supervisor.id), recipient_ids)
|
||||
|
||||
@patch('modules.fleet.services.NotificationService.create_notification')
|
||||
def test_create_task_entry_does_not_send_overload_notifications_when_two_or_less(self, mock_notify):
|
||||
servicer = get_user_model().objects.create_user(
|
||||
username='servicer-normal-load',
|
||||
email='servicer-normal-load@example.test',
|
||||
password='test1234',
|
||||
is_serviser=True,
|
||||
is_team_member=True,
|
||||
)
|
||||
vehicle = Vehicle.objects.create(registration_number="ZG-TASK-OVER2", asset_type='crane')
|
||||
scheduled = date(2026, 7, 21)
|
||||
|
||||
TaskService.create_task_entry(
|
||||
data={
|
||||
"title": "Prvi task",
|
||||
"status": "aktivan",
|
||||
"assigned_to": servicer,
|
||||
"vehicle": vehicle,
|
||||
"scheduled_date": scheduled,
|
||||
},
|
||||
user=self.staff,
|
||||
)
|
||||
TaskService.create_task_entry(
|
||||
data={
|
||||
"title": "Drugi task",
|
||||
"status": "aktivan",
|
||||
"assigned_to": servicer,
|
||||
"vehicle": vehicle,
|
||||
"scheduled_date": scheduled,
|
||||
},
|
||||
user=self.staff,
|
||||
)
|
||||
self.assertEqual(mock_notify.call_count, 0)
|
||||
Reference in New Issue
Block a user