Files
workdock-platform/backend/workflows/model_system.py
2026-03-28 09:18:53 +01:00

63 lines
4.4 KiB
Python

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})'