fix - update page access - v3
This commit is contained in:
@@ -45,14 +45,14 @@ class UpdatePageAccessViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSe
|
|||||||
"""
|
"""
|
||||||
sync update page & access on development version with production
|
sync update page & access on development version with production
|
||||||
"""
|
"""
|
||||||
url = 'https://api.tdam.rasadyar.com/auth/api/v1/update_access/'
|
dev_url = 'https://api.tdam.rasadyar.com/auth/api/v1/update_access/'
|
||||||
|
|
||||||
# get data page & permissions data from development
|
# get data page & permissions data from development
|
||||||
req = requests.get(url)
|
dev_req = requests.get(dev_url)
|
||||||
response = req.json()
|
dev_data = dev_req.json()
|
||||||
|
|
||||||
url = 'https://api.dam.rasadyar.com/auth/api/v1/update_access/update_page_access/'
|
prod_url = 'http://127.0.0.1:8000/auth/api/v1/update_access/update_page_access/'
|
||||||
updated_response = requests.post(url=url, json=response)
|
updated_response = requests.post(url=prod_url, json=dev_data)
|
||||||
|
|
||||||
return Response(updated_response.json())
|
return Response(updated_response.json())
|
||||||
|
|
||||||
@@ -61,38 +61,79 @@ class UpdatePageAccessViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSe
|
|||||||
"""
|
"""
|
||||||
Sync page & permissions in development with production
|
Sync page & permissions in development with production
|
||||||
"""
|
"""
|
||||||
# if page or permission exists in production, don't create just update
|
dev_data = request.data
|
||||||
for page in request.data:
|
dev_pages_name = [p['name'] for p in dev_data]
|
||||||
page_obj = Page.objects.filter(code=page['code'])
|
dev_perms_name = []
|
||||||
permissions = page.pop('permissions') # remove permissions from data
|
for item in dev_data:
|
||||||
if not page_obj.exists():
|
for perm in item['permissions']:
|
||||||
page_obj = Page.objects.create(**page)
|
dev_perms_name.append(perm['name'])
|
||||||
else:
|
|
||||||
obj = page_obj.first()
|
|
||||||
obj.update(
|
|
||||||
name=page['name'],
|
|
||||||
code=page['code'],
|
|
||||||
is_active=page['is_active'],
|
|
||||||
)
|
|
||||||
|
|
||||||
for permission in permissions:
|
pages_to_delete = Page.objects.exclude(name__in=dev_pages_name)
|
||||||
permission.pop('page') # remove page from data
|
# pages_to_delete.delete()
|
||||||
perm = Permissions.objects.filter(page=page_obj, name=permission['name'])
|
print(pages_to_delete)
|
||||||
if perm.exists():
|
page_map = {}
|
||||||
perm.first().update(
|
|
||||||
name=permission['name'],
|
for page in dev_data:
|
||||||
description=permission['description'],
|
page_obj, _ = Page.objects.filter().update_or_create(
|
||||||
category=permission['category'],
|
code=page['code'], # keep dev page codes in prod
|
||||||
page=page_obj,
|
defaults={
|
||||||
is_active=permission['is_active'],
|
'name': page['name'],
|
||||||
modify_state=permission['modify_state'],
|
'is_active': page['is_active'],
|
||||||
)
|
}
|
||||||
else:
|
)
|
||||||
Permissions.objects.create(
|
page_map[page['name']] = page_obj.id
|
||||||
**permission,
|
|
||||||
page=page_obj,
|
permissions_to_delete = Permissions.objects.exclude(name__in=dev_perms_name)
|
||||||
)
|
# permissions_to_delete.delete()
|
||||||
return Response(request.data)
|
print(permissions_to_delete)
|
||||||
|
|
||||||
|
# for perm in dev_data['permissions']:
|
||||||
|
# permission_obj, _ = Permissions.objects.update_or_create(
|
||||||
|
# id=perm['id'], # keep dev permission ids in prod
|
||||||
|
# defaults={
|
||||||
|
# 'name': perm['name'],
|
||||||
|
# 'description': perm['description'],
|
||||||
|
# 'category': perm['category'],
|
||||||
|
# 'page_id': page_map[perm['page']],
|
||||||
|
# 'is_active': perm['is_active'],
|
||||||
|
# 'modify_state': perm['modify_state'],
|
||||||
|
# }
|
||||||
|
# )
|
||||||
|
|
||||||
|
return Response(dev_data)
|
||||||
|
|
||||||
|
# # if page or permission exists in production, don't create just update
|
||||||
|
# for page in request.data:
|
||||||
|
# page_obj = Page.objects.filter(code=page['code'])
|
||||||
|
# permissions = page.pop('permissions') # remove permissions from data
|
||||||
|
# if not page_obj.exists():
|
||||||
|
# page_obj = Page.objects.create(**page)
|
||||||
|
# else:
|
||||||
|
# obj = page_obj.first()
|
||||||
|
# if obj:
|
||||||
|
# obj.code = page['code']
|
||||||
|
# obj.name = page['name']
|
||||||
|
# obj.is_active = page['is_active']
|
||||||
|
# page_obj = obj.save()
|
||||||
|
#
|
||||||
|
# for permission in permissions:
|
||||||
|
# permission.pop('page') # remove page from data
|
||||||
|
# perm = Permissions.objects.filter(page=page_obj, name=permission['name'])
|
||||||
|
# if perm.exists():
|
||||||
|
# perm.update_or_create(
|
||||||
|
# name=permission['name'],
|
||||||
|
# description=permission['description'],
|
||||||
|
# category=permission['category'],
|
||||||
|
# page=page_obj,
|
||||||
|
# is_active=permission['is_active'],
|
||||||
|
# modify_state=permission['modify_state'],
|
||||||
|
# )
|
||||||
|
# else:
|
||||||
|
# Permissions.objects.create(
|
||||||
|
# **permission,
|
||||||
|
# page_id=page.id,
|
||||||
|
# )
|
||||||
|
# return Response(request.data)
|
||||||
|
|
||||||
|
|
||||||
class RoleViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSet):
|
class RoleViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSet):
|
||||||
|
|||||||
18
apps/authorization/migrations/0023_alter_page_code.py
Normal file
18
apps/authorization/migrations/0023_alter_page_code.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 5.0 on 2025-12-01 06:53
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('authorization', '0022_alter_role_description'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='page',
|
||||||
|
name='code',
|
||||||
|
field=models.CharField(max_length=100),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -9,7 +9,7 @@ from apps.core.models import BaseModel
|
|||||||
class Page(BaseModel):
|
class Page(BaseModel):
|
||||||
""" every front-end page on system """
|
""" every front-end page on system """
|
||||||
|
|
||||||
code = models.CharField(max_length=100, unique=True)
|
code = models.CharField(max_length=100)
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
is_active = models.BooleanField(default=True)
|
is_active = models.BooleanField(default=True)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Generated by Django 5.0 on 2025-12-01 06:53
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('product', '0098_quotausage_quota_stat'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='organizationquotastats',
|
||||||
|
name='free_sale_balance',
|
||||||
|
field=models.PositiveBigIntegerField(default=0),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='organizationquotastats',
|
||||||
|
name='pre_sale_balance',
|
||||||
|
field=models.PositiveBigIntegerField(default=0),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# Generated by Django 5.0 on 2025-12-01 06:53
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('product', '0099_organizationquotastats_free_sale_balance_and_more'),
|
||||||
|
('warehouse', '0045_inventoryquotasaleitem_quota_stat'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='extrasale',
|
||||||
|
name='quota_stat',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='extra_sales', to='product.organizationquotastats'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='quotapresaleitem',
|
||||||
|
name='quota_stat',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='pre_sales', to='product.organizationquotastats'),
|
||||||
|
),
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user