permissions per page and add dam.rasadyar.com in allowed hosts
This commit is contained in:
@@ -5,6 +5,7 @@ from apps.authorization.api.v1.serializers import (
|
||||
PermissionSerializer,
|
||||
UserRelationSerializer
|
||||
)
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
from apps.authorization.models import (
|
||||
Role,
|
||||
@@ -12,6 +13,7 @@ from apps.authorization.models import (
|
||||
UserRelations
|
||||
)
|
||||
from rest_framework import viewsets
|
||||
from django.db import transaction
|
||||
|
||||
|
||||
class RoleViewSet(viewsets.ModelViewSet):
|
||||
@@ -27,6 +29,17 @@ class PermissionViewSet(viewsets.ModelViewSet):
|
||||
queryset = Permissions.objects.all()
|
||||
serializer_class = PermissionSerializer
|
||||
|
||||
@action(
|
||||
methods=['get'],
|
||||
detail=False,
|
||||
url_path='get_user_permissions',
|
||||
url_name='get_user_permissions',
|
||||
name='get_user_permissions'
|
||||
)
|
||||
@transaction.atomic
|
||||
def get_user_permissions(self, request):
|
||||
pass
|
||||
|
||||
|
||||
class UserRelationViewSet(viewsets.ModelViewSet):
|
||||
""" Crud Operations for User Relations """
|
||||
|
||||
@@ -14,9 +14,17 @@ class PermissionSerializer(serializers.ModelSerializer):
|
||||
fields = [
|
||||
'id',
|
||||
'name',
|
||||
'description'
|
||||
'description',
|
||||
'category',
|
||||
'page'
|
||||
]
|
||||
|
||||
def to_representation(self, instance):
|
||||
representation = super().to_representation(instance)
|
||||
representation['name'] = 'Hello'
|
||||
|
||||
return representation
|
||||
|
||||
|
||||
class RoleSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
@@ -63,7 +71,14 @@ class UserRelationSerializer(serializers.ModelSerializer):
|
||||
if instance.role:
|
||||
representation['role'] = RoleSerializer(instance.role).data
|
||||
if instance.permissions:
|
||||
representation['permissions'] = PermissionSerializer(instance.permissions, many=True).data
|
||||
permissions = instance.permissions.all()
|
||||
pages = {}
|
||||
for permission in permissions:
|
||||
if permission.page.name not in pages.keys():
|
||||
pages.update({
|
||||
f'{permission.page.name}': permission.page.permission_page.all().values('name')
|
||||
})
|
||||
representation['perms'] = pages
|
||||
|
||||
return representation
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
# Generated by Django 5.0 on 2025-05-31 12:01
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('authorization', '0014_permissions_creator_info_permissions_modifier_info_and_more'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='permissions',
|
||||
name='category',
|
||||
field=models.CharField(choices=[('api', 'Api'), ('page', 'Page َAccess'), ('element', 'UI Element'), ('feature', 'Feature / Action')], default='api', max_length=50),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='permissions',
|
||||
name='meta',
|
||||
field=models.JSONField(default=dict),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Page',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_date', models.DateTimeField(auto_now_add=True)),
|
||||
('modify_date', models.DateTimeField(auto_now=True)),
|
||||
('creator_info', models.CharField(max_length=100, null=True)),
|
||||
('modifier_info', models.CharField(max_length=100, null=True)),
|
||||
('trash', models.BooleanField(default=False)),
|
||||
('code', models.CharField(max_length=100, unique=True)),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createddby', to=settings.AUTH_USER_MODEL)),
|
||||
('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='permissions',
|
||||
name='page',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='permission_page', to='authorization.page'),
|
||||
),
|
||||
]
|
||||
@@ -5,9 +5,42 @@ from apps.core.models import BaseModel
|
||||
|
||||
# Create your models here.
|
||||
|
||||
class Page(BaseModel):
|
||||
""" every front-end page on system """
|
||||
|
||||
code = models.CharField(max_length=100, unique=True)
|
||||
name = models.CharField(max_length=255)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.name}-{self.code}'
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
super(Page, self).save(*args, **kwargs)
|
||||
|
||||
|
||||
class Permissions(BaseModel):
|
||||
""" permission level of users """
|
||||
|
||||
name = models.CharField(max_length=50)
|
||||
description = models.TextField(max_length=500)
|
||||
category_choices = (
|
||||
('api', 'Api'),
|
||||
('page', 'Page َAccess'),
|
||||
('element', 'UI Element'),
|
||||
('feature', 'Feature / Action')
|
||||
)
|
||||
category = models.CharField(
|
||||
max_length=50,
|
||||
choices=category_choices,
|
||||
default='api'
|
||||
)
|
||||
meta = models.JSONField(default=dict)
|
||||
page = models.ForeignKey(
|
||||
Page,
|
||||
on_delete=models.CASCADE,
|
||||
related_name='permission_page',
|
||||
null=True
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.name}-{self.description}'
|
||||
|
||||
18
apps/tag/migrations/0022_alter_tagassignment_status.py
Normal file
18
apps/tag/migrations/0022_alter_tagassignment_status.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.0 on 2025-05-31 12:01
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('tag', '0021_allocatedtags_species_code'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='tagassignment',
|
||||
name='status',
|
||||
field=models.CharField(choices=[('A', 'Accept'), ('W', 'Waiting'), ('C', 'Cancel'), ('E', 'Exited')], default='W', max_length=1),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user