from django.db import models from django.db.models.deletion import PROTECT from django.utils.translation import gettext_lazy as _ from filebrowser.fields import FileBrowseField class Process(models.Model): name = models.CharField(max_length=40, verbose_name=_('Process name')) sub_processes = models.ManyToManyField( "links.SubProcess", blank=True, verbose_name=_('Process sub-processes')) sources = models.ManyToManyField("links.Source", blank=True, verbose_name=_('Process sources')) class Meta: verbose_name = _('Process') verbose_name_plural = _('Processes') def __str__(self) -> str: return f"{self.name}" class SubProcess(models.Model): name = models.CharField(max_length=40, verbose_name=_('Sub-process name')) sources = models.ManyToManyField("links.Source", blank=True, verbose_name=_('Sub-process sources')) class Meta: verbose_name = _('Sub-process') verbose_name_plural = _('Sub-processes') def __str__(self) -> str: return f"{self.name}" class Source(models.Model): title = models.CharField(max_length=30, verbose_name=_('Source title')) icon = FileBrowseField(blank=True, null=True, directory="icons/web/", max_length=200, verbose_name=_('Source icon')) href = models.URLField(max_length=200, null=True, blank=True, verbose_name=_('Source url')) open_with_default_browser = models.BooleanField( default=False, verbose_name=_('Source open with default browser')) open_with_default_browser.help_text = _( 'Open with default system browser instead of electron browser window') is_frameless = models.BooleanField(default=False, verbose_name=_('Is frameless')) is_frameless.help_text = _('Open frameless window in kiosk mode') class Meta: verbose_name = _('Source') verbose_name_plural = _('Sources') def __str__(self) -> str: return f"{self.title}: {self.href}"