61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django_core.models import AbstractBaseModel
|
|
|
|
|
|
class PermissionToAction(AbstractBaseModel):
|
|
name = models.CharField(max_length=200)
|
|
code = models.CharField(max_length=100, unique=True)
|
|
|
|
def __str__(self):
|
|
return f"{self.name} - {self.code}"
|
|
|
|
class Meta:
|
|
verbose_name = _('Harakatlar uchun ruxsatnoma')
|
|
verbose_name_plural = _('Harakatlar uchun ruxsatnomalar')
|
|
|
|
|
|
class PermissionToTab(AbstractBaseModel):
|
|
name = models.CharField(max_length=200)
|
|
code = models.CharField(max_length=100, unique=True)
|
|
permission_to_actions = models.ManyToManyField(
|
|
PermissionToAction, related_name='permission_to_tabs'
|
|
)
|
|
|
|
def __str__(self):
|
|
return f'{self.name} - {self.code}'
|
|
|
|
class Meta:
|
|
verbose_name = _("Bo'lim uchun ruxsatnoma")
|
|
verbose_name_plural = _("Bo'lim uchun ruxsatnomalar")
|
|
|
|
|
|
class Permission(AbstractBaseModel):
|
|
name = models.CharField(max_length=200)
|
|
code = models.CharField(max_length=100, unique=True)
|
|
permission_tabs = models.ManyToManyField(PermissionToTab, related_name='permissions')
|
|
|
|
def __str__(self):
|
|
return f'{self.name} - {self.code}'
|
|
|
|
class Meta:
|
|
verbose_name = _('Sahifa uchun ruxsatnoma')
|
|
verbose_name_plural = _('Sahifa uchun ruxsatnomalar')
|
|
|
|
class Role(models.Model):
|
|
name = models.CharField(max_length=200, unique=True)
|
|
permissions = models.ManyToManyField(Permission, related_name='roles', blank=True)
|
|
permission_to_tabs = models.ManyToManyField(PermissionToTab, related_name='roles', blank=True)
|
|
permission_to_actions = models.ManyToManyField(
|
|
PermissionToAction, related_name='roles', blank=True
|
|
)
|
|
comment = models.CharField(max_length=200, null=True, blank=True)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta:
|
|
verbose_name = _('Rol')
|
|
verbose_name_plural = _('Rollar')
|
|
|