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

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