add parent_role

This commit is contained in:
2025-10-28 09:09:06 +03:30
parent f4868f6f83
commit 8baf111461
5 changed files with 240 additions and 3 deletions

View File

@@ -30,6 +30,8 @@ class RoleViewSet(SoftDeleteMixin, viewsets.ModelViewSet):
queryset = Role.objects.all()
serializer_class = RoleSerializer
filter_backends = [filters.SearchFilter]
search_fields = ['role_name', 'type__name']
class PageViewSet(SoftDeleteMixin, viewsets.ModelViewSet):
@@ -132,12 +134,13 @@ class UserRelationViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSet, D
'user__username',
'user__mobile',
'user__phone',
'user__first_name',
'user__last_name',
'user__national_code',
'user__province__name',
'user__city__name',
'user__unit_name',
'user__unit_national_id',
'user__city__name',
'role__name'
]
def list(self, request, *args, **kwargs):
@@ -148,7 +151,7 @@ class UserRelationViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSet, D
else:
queryset = self.get_queryset().order_by('-create_date')
queryset = self.filter_query(queryset) # noqa
queryset = self.filter_queryset(queryset) # noqa
page = self.paginate_queryset(queryset)
if page is not None:

View File

@@ -90,6 +90,7 @@ class RoleSerializer(serializers.ModelSerializer):
fields = [
'id',
'role_name',
'parent_role',
'description',
'type',
'permissions' # noqa

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.0 on 2025-10-28 05:33
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('authorization', '0019_page_is_active_permissions_is_active'),
]
operations = [
migrations.AddField(
model_name='role',
name='parent_role',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='child', to='authorization.role'),
),
]

View File

@@ -1,4 +1,5 @@
from django.db import models
from apps.authentication import models as auth_models
from apps.core.models import BaseModel
@@ -52,6 +53,12 @@ class Permissions(BaseModel):
class Role(BaseModel):
parent_role = models.ForeignKey(
'self',
on_delete=models.CASCADE,
related_name='child',
null=True
)
role_name = models.CharField(max_length=50, unique=True)
description = models.TextField(max_length=500)
type = models.ForeignKey(