feat: dodaj display_code polje za putne naloge (MT070626 format)
- Dodano polje 'display_code' na WorkOrder model (format: 2 inicijala + ddmmyy) - Migracije za kreiranje polja i backfill postojećih naloga - Ažuriran WorkOrderSerializer za validaciju i serijalizaciju display_code - Backend tasks za auto-generiranje display_code pri kreiranju - Frontend komponente ažurirane za prikaz display_code umjesto UUID: * FleetDashboardShell tablica putnih naloga * WorkOrderDetailModal * TaskCreateModal * Sve PDF stranice - displayIds.js utility za formatiranjeDisplay ID-eva - Admin interface prikazuje display_code
This commit is contained in:
@@ -287,6 +287,13 @@ class WorkOrder(BaseModel):
|
||||
location = models.CharField(max_length=255, blank=True, verbose_name=_("Lokacija odredišta"))
|
||||
travel_start_at = models.DateTimeField(null=True, blank=True, verbose_name=_("Početak puta"))
|
||||
travel_end_at = models.DateTimeField(null=True, blank=True, verbose_name=_("Kraj puta"))
|
||||
display_code = models.CharField(
|
||||
max_length=8,
|
||||
blank=True,
|
||||
db_index=True,
|
||||
verbose_name=_("Prikaz putnog naloga"),
|
||||
help_text=_("Format: MT070626 (2 slova + 6 znamenki)."),
|
||||
)
|
||||
purpose = models.CharField(max_length=50, choices=PURPOSE_CHOICES, blank=True, verbose_name=_("Svrha"))
|
||||
notes = models.TextField(blank=True, verbose_name=_("Bilješke"))
|
||||
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='open', verbose_name=_("Status"))
|
||||
@@ -322,6 +329,12 @@ class WorkOrder(BaseModel):
|
||||
|
||||
def clean(self):
|
||||
super().clean()
|
||||
if self.display_code:
|
||||
self.display_code = str(self.display_code).strip().upper()
|
||||
if not re.fullmatch(r"[A-Z]{2}[0-9]{6}", self.display_code):
|
||||
raise ValidationError({
|
||||
"display_code": _("Prikaz putnog naloga mora biti u formatu MT070626 (2 slova + 6 znamenki).")
|
||||
})
|
||||
if self.travel_start_at and self.travel_end_at and self.travel_end_at < self.travel_start_at:
|
||||
raise ValidationError({"travel_end_at": _("Kraj puta ne može biti prije početka puta.")})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user