You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.5 KiB
83 lines
2.5 KiB
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
|
|
class QuickAccessLink(models.Model):
|
|
class ColorChoice(models.TextChoices):
|
|
EMERALD = "emerald", _("سبز رضوی (Emerald)")
|
|
ROSE = "rose", _("سرخ زنده (Rose)")
|
|
BLUE = "blue", _("آبی دانش (Blue)")
|
|
PURPLE = "purple", _("بنفش چندرسانهای (Purple)")
|
|
AMBER = "amber", _("طلایی ویژه (Amber)")
|
|
TEAL = "teal", _("فیروزهای (Teal)")
|
|
|
|
institution = models.ForeignKey(
|
|
"profiles.Institution",
|
|
on_delete=models.CASCADE,
|
|
related_name="quick_access_links",
|
|
verbose_name=_("مؤسسه مربوطه"),
|
|
)
|
|
title = models.CharField(
|
|
max_length=255,
|
|
verbose_name=_("عنوان خدمت")
|
|
)
|
|
url = models.CharField(
|
|
max_length=500,
|
|
verbose_name=_("نشانی اینترنتی یا مسیر")
|
|
)
|
|
description = models.CharField(
|
|
max_length=500,
|
|
blank=True,
|
|
default="",
|
|
verbose_name=_("توضیح مختصر")
|
|
)
|
|
icon = models.CharField(
|
|
max_length=50,
|
|
default="link",
|
|
verbose_name=_("شناسه آیکون")
|
|
)
|
|
color = models.CharField(
|
|
max_length=20,
|
|
choices=ColorChoice.choices,
|
|
default=ColorChoice.EMERALD,
|
|
verbose_name=_("طیف رنگی"),
|
|
)
|
|
category = models.CharField(
|
|
max_length=100,
|
|
blank=True,
|
|
default="",
|
|
verbose_name=_("برچسب یا دستهبندی")
|
|
)
|
|
is_live = models.BooleanField(
|
|
default=False,
|
|
verbose_name=_("نشانگر پخش زنده")
|
|
)
|
|
is_external = models.BooleanField(
|
|
default=True,
|
|
verbose_name=_("باز شدن در برگه جدید")
|
|
)
|
|
order = models.PositiveIntegerField(
|
|
default=0,
|
|
verbose_name=_("ترتیب نمایش")
|
|
)
|
|
is_active = models.BooleanField(
|
|
default=True,
|
|
verbose_name=_("فعال بودن")
|
|
)
|
|
|
|
created_at = models.DateTimeField(
|
|
auto_now_add=True,
|
|
verbose_name=_("تاریخ ایجاد")
|
|
)
|
|
updated_at = models.DateTimeField(
|
|
auto_now=True,
|
|
verbose_name=_("آخرین بروزرسانی")
|
|
)
|
|
|
|
class Meta:
|
|
verbose_name = _("لینک دسترسی سریع")
|
|
verbose_name_plural = _("لینکهای دسترسی سریع")
|
|
ordering = ["order", "id"]
|
|
|
|
def __str__(self):
|
|
return f"{self.title} ({self.institution.name})"
|