production-taskbar / backend / links / models.py
models.py
Raw
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}"