add - modify state to permissions

This commit is contained in:
2025-11-03 12:54:08 +03:30
parent d8f5f6a22a
commit c4f015df79
6 changed files with 124 additions and 6 deletions

View File

@@ -146,7 +146,7 @@ class PermissionViewSet(SoftDeleteMixin, viewsets.ModelViewSet):
class UserRelationViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSet, DynamicSearchMixin):
""" Crud Operations for User Relations """
queryset = UserRelations.objects.all()
queryset = UserRelations.objects.select_related('organization', 'role', 'user')
serializer_class = UserRelationSerializer
filter_backends = [filters.SearchFilter]
search_fields = [

View File

@@ -47,7 +47,8 @@ class PermissionSerializer(serializers.ModelSerializer):
'description',
'category',
'page',
'is_active'
'is_active',
'modify_state'
]
def to_representation(self, instance):
@@ -107,9 +108,6 @@ class RoleSerializer(serializers.ModelSerializer):
representation['type'] = auth_serializer.OrganizationTypeSerializer(instance.type).data
if instance.parent_role:
representation['parent_role'] = {'name': instance.parent_role.role_name, 'id': instance.parent_role.id}
if instance.permissions: # noqa
permissions = instance.permissions.filter(is_active=True)
representation['permissions'] = PermissionSerializer(permissions, many=True).data
return representation

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.0 on 2025-11-03 09:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('authorization', '0020_role_parent_role'),
]
operations = [
migrations.AddField(
model_name='permissions',
name='modify_state',
field=models.BooleanField(default=False),
),
]

View File

@@ -44,6 +44,7 @@ class Permissions(BaseModel):
null=True
)
is_active = models.BooleanField(default=True)
modify_state = models.BooleanField(default=False)
def __str__(self):
return f'{self.name}-{self.description}'

View File

@@ -97,7 +97,6 @@ class DeviceViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSet, AdminFi
def my_devices(self, request):
""" list of company devices """
organization = get_organization_by_user(request.user)
# using admin filter mixin to get query
devices = self.get_queryset(
visibility_by_org_scope=True
) if organization.free_visibility_by_scope else self.get_queryset()