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
|
||||
"""
|
||||
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
|
||||
req = requests.get(url)
|
||||
response = req.json()
|
||||
dev_req = requests.get(dev_url)
|
||||
dev_data = dev_req.json()
|
||||
|
||||
url = 'https://api.dam.rasadyar.com/auth/api/v1/update_access/update_page_access/'
|
||||
updated_response = requests.post(url=url, json=response)
|
||||
prod_url = 'http://127.0.0.1:8000/auth/api/v1/update_access/update_page_access/'
|
||||
updated_response = requests.post(url=prod_url, json=dev_data)
|
||||
|
||||
return Response(updated_response.json())
|
||||
|
||||
@@ -61,38 +61,79 @@ class UpdatePageAccessViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSe
|
||||
"""
|
||||
Sync page & permissions in development with production
|
||||
"""
|
||||
# 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()
|
||||
obj.update(
|
||||
name=page['name'],
|
||||
code=page['code'],
|
||||
is_active=page['is_active'],
|
||||
)
|
||||
dev_data = request.data
|
||||
dev_pages_name = [p['name'] for p in dev_data]
|
||||
dev_perms_name = []
|
||||
for item in dev_data:
|
||||
for perm in item['permissions']:
|
||||
dev_perms_name.append(perm['name'])
|
||||
|
||||
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.first().update(
|
||||
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=page_obj,
|
||||
)
|
||||
return Response(request.data)
|
||||
pages_to_delete = Page.objects.exclude(name__in=dev_pages_name)
|
||||
# pages_to_delete.delete()
|
||||
print(pages_to_delete)
|
||||
page_map = {}
|
||||
|
||||
for page in dev_data:
|
||||
page_obj, _ = Page.objects.filter().update_or_create(
|
||||
code=page['code'], # keep dev page codes in prod
|
||||
defaults={
|
||||
'name': page['name'],
|
||||
'is_active': page['is_active'],
|
||||
}
|
||||
)
|
||||
page_map[page['name']] = page_obj.id
|
||||
|
||||
permissions_to_delete = Permissions.objects.exclude(name__in=dev_perms_name)
|
||||
# permissions_to_delete.delete()
|
||||
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):
|
||||
|
||||
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):
|
||||
""" 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)
|
||||
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