add permission list api view

This commit is contained in:
behruz-dev
2025-08-06 16:50:09 +05:00
parent 2e9ddd5f8d
commit ce54f66a32
15 changed files with 196 additions and 9 deletions

View File

@@ -4,9 +4,24 @@ from django.utils.translation import gettext_lazy as _
from core.apps.shared.models import BaseModel
class PermissionToAction(BaseModel):
name = models.CharField(max_length=200)
code = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.name
class Meta:
verbose_name = _('Harakatlar uchun ruxsatnoma')
verbose_name_plural = _('Harakatlar uchun ruxsatnomalar')
class PermissionToTab(BaseModel):
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}'

View File

@@ -2,12 +2,17 @@ from django.db import models
from django.utils.translation import gettext_lazy as _
from core.apps.shared.models import BaseModel
from core.apps.accounts.models.permission import Permission, PermissionToTab
from core.apps.accounts.models.permission import Permission, PermissionToTab, PermissionToAction
class Role(BaseModel):
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

View File

@@ -10,7 +10,7 @@ class User(BaseModel, AbstractUser):
profile_image = models.ImageField(
upload_to="users/profile_images/", null=True, blank=True, verbose_name=_('profil rasmi')
)
role = models.ForeignKey(Role, on_delete=models.DO_NOTHING, null=True, related_name="users")
role = models.ForeignKey(Role, on_delete=models.SET_NULL, null=True, related_name="users")
full_name = models.CharField(max_length=200, null=True)
is_blocked = models.BooleanField(default=False)
phone_number = models.CharField(max_length=15, null=True)