feat: dodaj prefill email potpisa i body logging
Uvodi signature polje i default predlozak potpisa za nove korisnike, te data migraciju koja popunjava postojece prazne potpise. Email flow sada dosljedno dodaje korisnicki potpis i sprema finalni body poruke u dispatch log radi audita.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -3,6 +3,17 @@ from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
from .managers import CustomUserManager
|
||||
|
||||
DEFAULT_EMAIL_SIGNATURE_TEMPLATE = (
|
||||
"Poslano iz aplikacije\n"
|
||||
"S poštovanjem / Freundliche Grüße / Kind regards\n\n"
|
||||
"{name_line}\n\n"
|
||||
"KNEZ LJUBO d.o.o.\n"
|
||||
"Ivlje 44, 10040 Zagreb\n\n"
|
||||
"Office: Donje Svetice 40, 10000 Zagreb\n\n"
|
||||
"Mobile: {mobile}\n\n"
|
||||
"www.knezljubo.hr"
|
||||
)
|
||||
|
||||
class CustomUser(AbstractUser):
|
||||
# Email koristimo za login, pa mora biti jedinstven
|
||||
username=None
|
||||
@@ -19,6 +30,7 @@ class CustomUser(AbstractUser):
|
||||
occupation = models.CharField(max_length=120, blank=True, default='', verbose_name="Zanimanje")
|
||||
residence = models.CharField(max_length=255, blank=True, default='', verbose_name="Prebivalište")
|
||||
work_position = models.CharField(max_length=120, blank=True, default='', verbose_name="Na radnom mjestu")
|
||||
signature = models.TextField(blank=True, default='', verbose_name="Email potpis")
|
||||
licence_number = models.CharField(max_length=50, blank=True, null=True, verbose_name="Broj licence")
|
||||
is_verified = models.BooleanField(default=False, verbose_name="Verificiran profil")
|
||||
|
||||
@@ -47,6 +59,27 @@ class CustomUser(AbstractUser):
|
||||
if self.is_kupac and not self.client_profile:
|
||||
raise ValidationError({'client_profile': "Korisnik koji je označen kao kupac mora imati povezan klijentski profil."})
|
||||
|
||||
def build_default_signature(self):
|
||||
full_name = self.get_full_name().strip()
|
||||
fallback_name = self.email.strip() if isinstance(self.email, str) and self.email.strip() else 'Ime i prezime'
|
||||
display_name = full_name or fallback_name
|
||||
occupation = self.occupation.strip() if isinstance(self.occupation, str) else ''
|
||||
name_line = f"{occupation} {display_name}".strip() if occupation else display_name
|
||||
mobile = self.telefon.strip() if isinstance(self.telefon, str) and self.telefon.strip() else "+385 91 636 3466"
|
||||
return DEFAULT_EMAIL_SIGNATURE_TEMPLATE.format(
|
||||
name_line=name_line,
|
||||
mobile=mobile,
|
||||
)
|
||||
|
||||
def get_email_signature(self):
|
||||
stored_signature = self.signature.strip() if isinstance(self.signature, str) else ''
|
||||
if stored_signature:
|
||||
return stored_signature
|
||||
return self.build_default_signature()
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
signature = self.signature.strip() if isinstance(self.signature, str) else ''
|
||||
if not signature:
|
||||
self.signature = self.build_default_signature()
|
||||
self.full_clean() # Prisiljava pokretanje clean() prije svakog save()
|
||||
super().save(*args, **kwargs)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user