add - sync page & permissions in development with production - v2
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
import json
|
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
@@ -47,41 +45,54 @@ 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 = 'http://127.0.0.1:8000/auth/api/v1/update_access/'
|
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)
|
req = requests.get(url)
|
||||||
response = json.loads(req.text.encode('utf-8'))
|
response = req.json()
|
||||||
|
|
||||||
url = 'http://127.0.0.1:8000/auth/api/v1/update_access/update_access'
|
url = 'https://api.dam.rasadyar.com/auth/api/v1/update_access/update_page_access/'
|
||||||
|
updated_response = requests.post(url=url, json=response)
|
||||||
|
|
||||||
# # delete all pages
|
return Response(updated_response.json())
|
||||||
# Page.objects.all().delete()
|
|
||||||
#
|
|
||||||
# # delete all permissions
|
|
||||||
# Permissions.objects.all().delete()
|
|
||||||
#
|
|
||||||
# # recreate page & permissions
|
|
||||||
# for page in response:
|
|
||||||
# page_obj = Page.objects.create(
|
|
||||||
# name=page['name'],
|
|
||||||
# code=page['code'],
|
|
||||||
# is_active=page['is_active']
|
|
||||||
# )
|
|
||||||
# for permission in page['permissions']:
|
|
||||||
# Permissions.objects.create(
|
|
||||||
# name=permission['name'],
|
|
||||||
# description=permission['description'],
|
|
||||||
# category=permission['category'],
|
|
||||||
# page_id=page_obj.id,
|
|
||||||
# is_active=permission['is_active'],
|
|
||||||
# modify_state=permission['modify_state']
|
|
||||||
# )
|
|
||||||
#
|
|
||||||
# return Response(response)
|
|
||||||
|
|
||||||
@action(methods=['post'], detail=False, url_name='update_page_access', url_path='update_page_access')
|
@action(methods=['post'], detail=False, url_name='update_page_access', url_path='update_page_access')
|
||||||
def update_page_access(self, request, *args, **kwargs):
|
def update_page_access(self, request, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
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:
|
||||||
|
page_obj.update_or_create(
|
||||||
|
code=page['code'],
|
||||||
|
name=page['name'],
|
||||||
|
is_active=page['is_active'],
|
||||||
|
)
|
||||||
|
# get page object
|
||||||
|
page_obj = page_obj.first()
|
||||||
|
|
||||||
|
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)
|
return Response(request.data)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user