feat: Add preset shift templates, admin SMTP settings, test email dispatch, and email verification opt-out option

This commit is contained in:
Richard
2026-07-31 10:26:55 +02:00
parent 6ffcc58a4c
commit 7c377937ea
26 changed files with 1434 additions and 642 deletions
+20 -1
View File
@@ -39,6 +39,7 @@ class RegistrationDomainRule(models.Model):
class RegistrationRestrictionSetting(models.Model):
is_restriction_enabled = models.BooleanField(default=False)
require_admin_approval = models.BooleanField(default=False, help_text="Neue Registrierungen müssen von einem Admin freigeschaltet werden")
require_email_verification = models.BooleanField(default=True, help_text="E-Mail Bestätigungslink für neue Konten erforderlich")
@classmethod
def get_solo(cls):
@@ -46,7 +47,25 @@ class RegistrationRestrictionSetting(models.Model):
return obj
def __str__(self):
return f"Domain-Einschränkung: {self.is_restriction_enabled}, Admin-Freischaltung: {self.require_admin_approval}"
return f"Domain-Einschränkung: {self.is_restriction_enabled}, Admin-Freischaltung: {self.require_admin_approval}, E-Mail-Pflicht: {self.require_email_verification}"
class SMTPSetting(models.Model):
is_active = models.BooleanField(default=False, help_text="SMTP-Versand aktivieren")
host = models.CharField(max_length=255, default="smtp.example.com")
port = models.IntegerField(default=587)
username = models.CharField(max_length=255, blank=True, default="")
password = models.CharField(max_length=255, blank=True, default="")
use_tls = models.BooleanField(default=True)
use_ssl = models.BooleanField(default=False)
from_email = models.EmailField(default="noreply@schichtplaner.local")
@classmethod
def get_solo(cls):
obj, _ = cls.objects.get_or_create(pk=1)
return obj
def __str__(self):
return f"SMTP {self.host}:{self.port} ({'Aktiv' if self.is_active else 'Inaktiv'})"
class EmailVerificationToken(models.Model):
token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)