Files
backend-v1/core/apps/accounts/models/permission.py
2026-04-28 16:04:59 +05:00

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')