from django.db import models from django.utils.translation import gettext_lazy as _ class WorkflowConfig(models.Model): REMOTE_BACKUP_TARGET_CHOICES = [('nextcloud', _('Nextcloud')), ('s3', _('S3')), ('nfs', _('NFS'))] name = models.CharField(max_length=120, default='Default', unique=True) it_onboarding_email = models.EmailField(blank=True) general_info_email = models.EmailField(blank=True) business_card_email = models.EmailField(blank=True) hr_works_email = models.EmailField(blank=True) key_notification_email = models.EmailField(blank=True) nextcloud_enabled_override = models.BooleanField(null=True, blank=True, default=None, verbose_name='Nextcloud Upload aktiviert (Override)', help_text='Leer = ENV-Wert nutzen, Ja = erzwingen aktiv, Nein = erzwingen inaktiv') email_test_mode_override = models.BooleanField(null=True, blank=True, default=None, verbose_name='E-Mail Testmodus aktiv (Override)', help_text='Leer = ENV-Wert nutzen, Ja = Testmodus erzwingen, Nein = Produktionsmodus erzwingen') nextcloud_base_url_override = models.CharField(max_length=500, blank=True, verbose_name='Nextcloud Base URL (Override)') nextcloud_username_override = models.CharField(max_length=255, blank=True, verbose_name='Nextcloud Benutzername (Override)') nextcloud_password_override = models.CharField(max_length=255, blank=True, verbose_name='Nextcloud Passwort (Override)') nextcloud_directory_override = models.CharField(max_length=255, blank=True, verbose_name='Nextcloud Verzeichnis (Override)') sync_interval_seconds = models.PositiveIntegerField(default=60, verbose_name='Sync-Intervall (Sekunden)') device_handover_lead_days = models.PositiveIntegerField(default=5, verbose_name='Vorlauf Geräteübergabe (Tage)') remote_backup_enabled = models.BooleanField(default=False, verbose_name='Remote Backup aktiviert') remote_backup_target_type = models.CharField(max_length=20, choices=REMOTE_BACKUP_TARGET_CHOICES, default='nextcloud', verbose_name='Remote Backup Zieltyp') remote_backup_nextcloud_directory = models.CharField(max_length=255, blank=True, verbose_name='Nextcloud Backup-Verzeichnis') remote_backup_s3_bucket = models.CharField(max_length=255, blank=True, verbose_name='S3 Bucket (optional)') remote_backup_nfs_path = models.CharField(max_length=255, blank=True, verbose_name='NFS Pfad (optional)') welcome_email_delay_days = models.PositiveIntegerField(default=5, verbose_name='Welcome E-Mail Verzögerung (Tage)') welcome_sender_email = models.EmailField(blank=True, verbose_name='Welcome E-Mail Absender') welcome_include_pdf = models.BooleanField(default=True, verbose_name='Welcome E-Mail mit PDF-Anhang') imap_server = models.CharField(max_length=255, blank=True, verbose_name='IMAP Server') mailbox = models.CharField(max_length=120, blank=True, default='INBOX', verbose_name='Mailbox') smtp_server = models.CharField(max_length=255, blank=True, verbose_name='SMTP Server') smtp_port = models.PositiveIntegerField(default=465, verbose_name='SMTP Port') email_account = models.EmailField(blank=True, verbose_name='E-Mail Konto') email_password = models.CharField(max_length=255, blank=True, verbose_name='E-Mail Passwort') smtp_use_ssl = models.BooleanField(default=True, verbose_name='SMTP SSL nutzen') smtp_use_tls = models.BooleanField(default=False, verbose_name='SMTP TLS nutzen') legal_text = models.TextField(blank=True, default='Eine Ausrüstungsvereinbarung erlaubt es einem Mitarbeitenden, die Ausrüstung des Unternehmens im Außendienst oder zu Hause zu nutzen und mitzunehmen.') def __str__(self) -> str: return self.name class SystemEmailConfig(models.Model): name = models.CharField(max_length=120, default='Default SMTP', unique=True) is_active = models.BooleanField(default=False) host = models.CharField(max_length=255, blank=True) port = models.PositiveIntegerField(default=587) username = models.CharField(max_length=255, blank=True) password = models.CharField(max_length=255, blank=True) use_tls = models.BooleanField(default=True) use_ssl = models.BooleanField(default=False) from_email = models.EmailField(blank=True) updated_at = models.DateTimeField(auto_now=True) class Meta: verbose_name = 'System SMTP Konfiguration' verbose_name_plural = 'System SMTP Konfigurationen' def __str__(self) -> str: state = 'aktiv' if self.is_active else 'inaktiv' return f'{self.name} ({state})'