Commit 35ff9419 authored by Gladys Forte's avatar Gladys Forte

Merge branch 'RMSv2' of http://42.61.118.105:7990/scm/rms/api-main-service into gladys-dev2

parents 8c96990b 3c60f154
...@@ -83,7 +83,6 @@ class CurrentUser(APIView): ...@@ -83,7 +83,6 @@ class CurrentUser(APIView):
serializer = serializer(request.user, context=context) serializer = serializer(request.user, context=context)
serializer.data['key'] = 'value' serializer.data['key'] = 'value'
print(request.user)
serialized = serializer.data serialized = serializer.data
return Response(data=serialized, return Response(data=serialized,
......
from rest_framework import serializers
from app.entities.models import User
import ast
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
read_only_fields = (
'created', 'createdby', 'modified', 'modifiedby', 'code',
)
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import User
from django.db.models import Q
class UserFilterSet(filters.FilterSet):
# search = filters.CharFilter(method='search_bar', label='search')
# def search_bar(self, queryset, name, value):
# return queryset.filter(
# Q(username__icontains=value) |
# Q(first_name__icontains=value) |
# Q(last_name__icontains=value))
class Meta:
model = User
fields = '__all__'
from app.entities import enums
from django.db import transaction
from app.helper.decorators import rms, error_safe
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from django.contrib.auth.hashers import make_password
from app.entities.models import User, EntityLog
from app.applicationlayer.utils import (
CustomPagination, status_message_response, log_save
)
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.account import serializer
from app.applicationlayer.management.account.table_filters import UserFilterSet
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = serializer.UserSerializer
pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = UserFilterSet
ordering_fields = '__all__'
search_fields = ('name',)
# @check.user_type
@rms.user_create
@transaction.atomic
def create(self, request, *args, **kwargs):
password = make_password(request.data['password'])
request.data['password'] = password
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
message = status_message_response(
201, 'success',
'New Users created', serializer.data
)
return Response(
message
)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
message = status_message_response(
200,
'success',
'list of Users found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
@error_safe
@transaction.atomic
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
new_instance = model_to_dict(instance)
self.perform_destroy(instance)
log_save(
enums.LogEnum.DELETED.value,
enums.LogEntitiesEnum.USER.value,
new_instance['id'],
new_instance,
''
)
return Response(status=status.HTTP_204_NO_CONTENT)
@transaction.atomic
def update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.USER.value,
new_instance['id'],
old_instance,
new_instance
)
return Response(serializer.data)
...@@ -5,12 +5,12 @@ from django.db.models import Q ...@@ -5,12 +5,12 @@ from django.db.models import Q
class ApplicationFilterSet(filters.FilterSet): class ApplicationFilterSet(filters.FilterSet):
# search = filters.CharFilter(method='search_bar', label='search') # search = filters.CharFilter(method='search_bar', label='search')
# def search_bar(self, queryset, name, value): # def search_bar(self, queryset, name, value):
# return queryset.filter( # return queryset.filter(
# Q(username__icontains=value) | # Q(username__icontains=value) |
# Q(first_name__icontains=value) | # Q(first_name__icontains=value) |
# Q(last_name__icontains=value)) # Q(last_name__icontains=value))
class Meta: class Meta:
model = Application model = Application
......
...@@ -4,7 +4,7 @@ from app.helper import decorators ...@@ -4,7 +4,7 @@ from app.helper import decorators
from rest_framework import viewsets, status from rest_framework import viewsets, status
from rest_framework.response import Response from rest_framework.response import Response
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
from rest_framework.filters import SearchFilter from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from app.entities.models import Application, EntityLog from app.entities.models import Application, EntityLog
from app.applicationlayer.utils import ( from app.applicationlayer.utils import (
...@@ -19,9 +19,10 @@ class ApplicationViewSet(viewsets.ModelViewSet): ...@@ -19,9 +19,10 @@ class ApplicationViewSet(viewsets.ModelViewSet):
queryset = Application.objects.all() queryset = Application.objects.all()
serializer_class = serializer.ApplicationSerializer serializer_class = serializer.ApplicationSerializer
pagination_class = CustomPagination pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend,) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = ApplicationFilterSet filterset_class = ApplicationFilterSet
# search_fields = ('name',) ordering_fields = '__all__'
search_fields = ('name',)
@transaction.atomic @transaction.atomic
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
......
...@@ -365,9 +365,6 @@ def next_appover_email(receiver, form_code, delegation, msg, action, code): ...@@ -365,9 +365,6 @@ def next_appover_email(receiver, form_code, delegation, msg, action, code):
email_status = requests.post(EMAIL, data=data) email_status = requests.post(EMAIL, data=data)
print(email_status)
print("next_appover 3")
message = f"{sender_name} {msg} ({template_name})" message = f"{sender_name} {msg} ({template_name})"
notif = send_notification( notif = send_notification(
......
...@@ -3,7 +3,7 @@ from django.db import transaction ...@@ -3,7 +3,7 @@ from django.db import transaction
from rest_framework import viewsets, status from rest_framework import viewsets, status
from rest_framework.response import Response from rest_framework.response import Response
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
from rest_framework.filters import SearchFilter from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from app.entities.models import Company, EntityLog from app.entities.models import Company, EntityLog
from app.applicationlayer.utils import ( from app.applicationlayer.utils import (
...@@ -19,10 +19,12 @@ class CompanyViewSet(viewsets.ModelViewSet): ...@@ -19,10 +19,12 @@ class CompanyViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all() queryset = Company.objects.all()
serializer_class = serializer.CompanySerializer serializer_class = serializer.CompanySerializer
pagination_class = CustomPagination pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter,) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = CompanyFilterSet filterset_class = CompanyFilterSet
# search_fields = ('name',) ordering_fields = '__all__'
search_fields = ('name',)
@decorators.rms.company_crate
@transaction.atomic @transaction.atomic
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
...@@ -39,10 +41,12 @@ class CompanyViewSet(viewsets.ModelViewSet): ...@@ -39,10 +41,12 @@ class CompanyViewSet(viewsets.ModelViewSet):
message message
) )
# @decorators.rms.company_list
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
print(self.queryset)
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset) page = self.paginate_queryset(queryset)
print(self.queryset)
if page is not None: if page is not None:
serializer = self.get_serializer(page, many=True) serializer = self.get_serializer(page, many=True)
......
...@@ -3,7 +3,7 @@ from django.db import transaction ...@@ -3,7 +3,7 @@ from django.db import transaction
from rest_framework import viewsets, status from rest_framework import viewsets, status
from rest_framework.response import Response from rest_framework.response import Response
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
from rest_framework.filters import SearchFilter from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from app.entities.models import Department, EntityLog from app.entities.models import Department, EntityLog
from app.applicationlayer.utils import ( from app.applicationlayer.utils import (
...@@ -19,10 +19,12 @@ class DepartmentViewSet(viewsets.ModelViewSet): ...@@ -19,10 +19,12 @@ class DepartmentViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all() queryset = Department.objects.all()
serializer_class = serializer.DepartmentSerializer serializer_class = serializer.DepartmentSerializer
pagination_class = CustomPagination pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter,) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = DepartmentFilterSet filterset_class = DepartmentFilterSet
# search_fields = ('name',) ordering_fields = '__all__'
search_fields = ('name',)
@decorators.rms.department_crate
@transaction.atomic @transaction.atomic
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
...@@ -39,6 +41,7 @@ class DepartmentViewSet(viewsets.ModelViewSet): ...@@ -39,6 +41,7 @@ class DepartmentViewSet(viewsets.ModelViewSet):
message message
) )
# @decorators.rms.department_list
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
......
...@@ -3,7 +3,7 @@ from django.db import transaction ...@@ -3,7 +3,7 @@ from django.db import transaction
from rest_framework import viewsets, status from rest_framework import viewsets, status
from rest_framework.response import Response from rest_framework.response import Response
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
from rest_framework.filters import SearchFilter from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from app.entities.models import Module, EntityLog from app.entities.models import Module, EntityLog
from app.applicationlayer.utils import ( from app.applicationlayer.utils import (
...@@ -14,15 +14,17 @@ from app.applicationlayer.management.module import serializer ...@@ -14,15 +14,17 @@ from app.applicationlayer.management.module import serializer
from app.applicationlayer.management.module.table_filters import ModuleFilterSet from app.applicationlayer.management.module.table_filters import ModuleFilterSet
from app.helper import decorators from app.helper import decorators
from django.db.models import F from django.db.models import F
from app.helper import decorators
class ModuleViewSet(viewsets.ModelViewSet): class ModuleViewSet(viewsets.ModelViewSet):
queryset = Module.objects.order_by('parent', 'sort_id') queryset = Module.objects.order_by('application', 'parent', 'sort_id')
serializer_class = serializer.ModuleSerializer serializer_class = serializer.ModuleSerializer
pagination_class = CustomPagination pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter,) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = ModuleFilterSet filterset_class = ModuleFilterSet
# search_fields = ('name',) ordering_fields = '__all__'
search_fields = ('name',)
@transaction.atomic @transaction.atomic
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
...@@ -152,6 +154,7 @@ class ModuleViewSet(viewsets.ModelViewSet): ...@@ -152,6 +154,7 @@ class ModuleViewSet(viewsets.ModelViewSet):
return Response(message) return Response(message)
@decorators.error_safe
@transaction.atomic @transaction.atomic
def destroy(self, request, *args, **kwargs): def destroy(self, request, *args, **kwargs):
......
...@@ -57,7 +57,8 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer): ...@@ -57,7 +57,8 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
'code', 'name', 'code', 'name',
'username', 'contact_no', 'username', 'contact_no',
'email', 'department_name', 'email', 'department_name',
'doa', 'department_id' 'doa', 'department_id',
'default_app',
) )
# exclude = ['password', 'application', 'groups', 'user_permissions'] # exclude = ['password', 'application', 'groups', 'user_permissions']
...@@ -75,10 +76,10 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer): ...@@ -75,10 +76,10 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
app = user.application.all() app = user.application.all()
list_app = [] list_app = []
for data in app: for data in app:
if user.user_type == 'USR' and data.name == 'RMS': if user.user_type.upper() == 'USR' and data.app_code.upper() == 'RMS':
pass pass
else: else:
remove = ['Module', 'Company', 'Department', 'Application'] remove = ['Modules', 'Companies', 'Department']
if user.user_type == 'SU': if user.user_type == 'SU':
mod = data.modules.all().values('name') mod = data.modules.all().values('name')
...@@ -101,8 +102,8 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer): ...@@ -101,8 +102,8 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
# list_mod.append(body) # list_mod.append(body)
app_body = {} app_body = {}
app_body['app_code'] = data.app_code
app_body['name'] = data.name app_body['name'] = data.name
# app_body['modules'] = list_mod
app_body['modules'] = mod app_body['modules'] = mod
list_app.append(app_body) list_app.append(app_body)
return list_app return list_app
......
...@@ -2,7 +2,7 @@ import copy ...@@ -2,7 +2,7 @@ import copy
import json import json
from app.entities import enums from app.entities import enums
from app.businesslayer import logger # from app.businesslayer import log_save
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
from django.shortcuts import render from django.shortcuts import render
...@@ -15,7 +15,7 @@ from app.helper import decorators ...@@ -15,7 +15,7 @@ from app.helper import decorators
from rest_framework import viewsets, status from rest_framework import viewsets, status
from rest_framework.decorators import action from rest_framework.decorators import action
from app.applicationlayer import table_filters from app.applicationlayer.management.user import table_filters
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer import paginators from app.applicationlayer import paginators
...@@ -49,8 +49,9 @@ class UsersManagementViewSet(viewsets.ModelViewSet): ...@@ -49,8 +49,9 @@ class UsersManagementViewSet(viewsets.ModelViewSet):
@decorators.error_safe @decorators.error_safe
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
print(request.data['department__name'])
self.serializer_class = serializers.UserManagementRetreiveSerializer self.serializer_class = serializers.UserManagementRetreiveSerializer
self.queryset = QuerySetHelper.Sort(self) # self.queryset = QuerySetHelper.Sort(self)
return super(UsersManagementViewSet, self).list(request) return super(UsersManagementViewSet, self).list(request)
@decorators.error_safe @decorators.error_safe
...@@ -75,7 +76,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet): ...@@ -75,7 +76,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet):
createdUser.save() createdUser.save()
# LOG ADD # LOG ADD
logger.log_save( log_save.log_save(
enums.LogEnum.ADD.value, enums.LogEnum.ADD.value,
enums.LogEntitiesEnum.USER.value, enums.LogEntitiesEnum.USER.value,
model_to_dict(createdUser)) model_to_dict(createdUser))
...@@ -90,7 +91,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet): ...@@ -90,7 +91,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet):
fromObj = copy.copy(serializer.instance) fromObj = copy.copy(serializer.instance)
serializer.save() serializer.save()
toObj = copy.copy(serializer.instance) toObj = copy.copy(serializer.instance)
logger.log_save( log_save.log_save(
enums.LogEnum.UPDATE.value, enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.USER.value, enums.LogEntitiesEnum.USER.value,
model_to_dict(fromObj), model_to_dict(fromObj),
...@@ -142,7 +143,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet): ...@@ -142,7 +143,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet):
fromObj = copy.copy(existingUser) fromObj = copy.copy(existingUser)
existingUser.save() existingUser.save()
toObj = copy.copy(existingUser) toObj = copy.copy(existingUser)
logger.log_save( log_save.log_save(
enums.LogEnum.UPDATE.value, enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.ROBOT.value, enums.LogEntitiesEnum.ROBOT.value,
model_to_dict(fromObj), model_to_dict(fromObj),
...@@ -180,7 +181,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet): ...@@ -180,7 +181,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet):
fromObj = copy.copy(existingUser) fromObj = copy.copy(existingUser)
existingUser.save() existingUser.save()
toObj = copy.copy(existingUser) toObj = copy.copy(existingUser)
logger.log_save( log_save.log_save(
enums.LogEnum.UPDATE.value, enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.ROBOT.value, enums.LogEntitiesEnum.ROBOT.value,
model_to_dict(fromObj), model_to_dict(fromObj),
......
from rest_framework import serializers
from app.entities.models import Company
class AdminCompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = '__all__'
from app.helper.decorators import rms
from app.entities.models import Company
from rest_framework import viewsets, status
from rest_framework.response import Response
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.company import serializer
from rest_framework.filters import SearchFilter, OrderingFilter
from app.applicationlayer.master.company.serializer import AdminCompanySerializer
from app.applicationlayer.utils import CustomPagination, status_message_response
from app.applicationlayer.management.company.table_filters import CompanyFilterSet
class AdminCompanyViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all()
serializer_class = AdminCompanySerializer
pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = CompanyFilterSet
ordering_fields = '__all__'
search_fields = ('name',)
http_method_names = ['get']
@rms.company_list
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
message = status_message_response(
200,
'success',
'list of Company found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
from rest_framework import serializers
from app.entities.models import Department
class AdminDepartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Department
fields = '__all__'
read_only_fields = (
'created', 'createdby', 'modified', 'modifiedby', 'code',
)
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department
from app.applicationlayer.utils import (
CustomPagination, status_message_response
)
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.master.department import serializer
from app.applicationlayer.management.department.table_filters import DepartmentFilterSet
from app.helper.decorators import rms
class AdminDepartmentViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all()
serializer_class = serializer.AdminDepartmentSerializer
pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = DepartmentFilterSet
ordering_fields = '__all__'
search_fields = ('name',)
@rms.department_list
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
message = status_message_response(
200,
'success',
'list of Department found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
from django.urls import path, include
from rest_framework import routers
from django.conf.urls import url
from app.applicationlayer.master.company.views import AdminCompanyViewSet
from app.applicationlayer.master.department.views import AdminDepartmentViewSet
from app.applicationlayer.master.user_type.views import UserTypeViewSet
router = routers.DefaultRouter()
router.register(r'companies', AdminCompanyViewSet)
router.register(r'departments', AdminDepartmentViewSet)
# router.register(r'user-types', UserTypeViewSet)
urlpatterns = [
path('', include(router.urls)),
url(r'^user-types/$', UserTypeViewSet.as_view(), name="user-types"),
]
\ No newline at end of file
from rest_framework.views import APIView
from rest_framework.response import Response
from app.entities import enums
class UserTypeViewSet(APIView):
def get(self, request, format=None):
enums_super = enums.UserTypeEnum.SUPER_USER.value
enums_OUA = enums.UserTypeEnum.OVERALL_USER_ADMIN.value
enums_company = enums.UserTypeEnum.COMPANY_USER_ADMIN.value
enums_department = enums.UserTypeEnum.DEPARTMENT_USER_ADMIN.value
enums_user = enums.UserTypeEnum.USER.value
data = {
"code": "200",
"status": "success",
"message": "list of user types",
"results": [
{
'Super user': enums_super,
'Overall user admin': enums_OUA,
"Company user admin": enums_company,
"Department user admin": enums_department,
"user": enums_user
}
]
}
if self.request.user.user_type == enums_OUA:
del data['Super user']
del data['Overall user admin']
elif self.request.user.user_type == enums_company:
del data['Super user']
del data['Overall user admin']
del data['Company user admin']
elif self.request.user.user_type == enums_department:
del data['Super User']
del data['Overall user admin']
del data['Company user admin']
del data['Department user admin']
return Response(data)
from django.urls import path, include from django.urls import path, include
from rest_framework import routers from rest_framework import routers
from django.conf.urls import url
from app.applicationlayer.management.application.views import ApplicationViewSet from app.applicationlayer.management.application.views import ApplicationViewSet
from app.applicationlayer.management.company.views import CompanyViewSet from app.applicationlayer.management.company.views import CompanyViewSet
from app.applicationlayer.management.department.views import DepartmentViewSet from app.applicationlayer.management.department.views import DepartmentViewSet
from app.applicationlayer.management.module.views import ModuleViewSet from app.applicationlayer.management.module.views import ModuleViewSet
# from app.applicationlayer.management.user.views import UsersManagementViewSet from app.applicationlayer.management.account.views import UserViewSet
from app.businesslayer.company.views import AdminCompanyViewSet
from app.applicationlayer.management.notification.views import NotificationsViewset from app.applicationlayer.management.notification.views import NotificationsViewset
from app.applicationlayer.management.changerequest import views as crviews from app.applicationlayer.management.changerequest import views as crviews
...@@ -15,7 +19,8 @@ router.register(r'applications', ApplicationViewSet) ...@@ -15,7 +19,8 @@ router.register(r'applications', ApplicationViewSet)
router.register(r'companies', CompanyViewSet) router.register(r'companies', CompanyViewSet)
router.register(r'departments', DepartmentViewSet) router.register(r'departments', DepartmentViewSet)
router.register(r'modules', ModuleViewSet) router.register(r'modules', ModuleViewSet)
# router.register(r'users', UsersManagementViewSet) router.register(r'users', UserViewSet)
router.register(r'notifications', NotificationsViewset) router.register(r'notifications', NotificationsViewset)
router.register(r'template', crviews.ChangeRequestTemplatesViewset) router.register(r'template', crviews.ChangeRequestTemplatesViewset)
...@@ -33,7 +38,6 @@ router.register(r'form', crviews.ChangeRequestFormsViewset) ...@@ -33,7 +38,6 @@ router.register(r'form', crviews.ChangeRequestFormsViewset)
urlpatterns = ( urlpatterns = (
path('', include(router.urls)), path('', include(router.urls)),
path('template-post/', crviews.ChangeRequestTemplatePost.as_view()), path('template-post/', crviews.ChangeRequestTemplatePost.as_view()),
path('form-post/', crviews.ChangeRequestFormPost.as_view()), path('form-post/', crviews.ChangeRequestFormPost.as_view()),
) )
from rest_framework import serializers
from app.entities.models import Company
class AdminCompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = '__all__'
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Company
from rest_framework import viewsets, status
from app.businesslayer.company.serializer import AdminCompanySerializer
from app.applicationlayer.utils import CustomPagination, status_message_response
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.company import serializer
from app.applicationlayer.management.company.table_filters import CompanyFilterSet
from app.helper.decorators import rms
from rest_framework.response import Response
class AdminCompanyViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all()
serializer_class = AdminCompanySerializer
pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = CompanyFilterSet
ordering_fields = '__all__'
search_fields = ('name',)
http_method_names = ['get']
@rms.company_list
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
message = status_message_response(
200,
'success',
'list of Company found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
from rest_framework import serializers
from app.entities.models import Department
class AdminDepartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Department
fields = '__all__'
read_only_fields = (
'created', 'createdby', 'modified', 'modifiedby', 'code',
)
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import Department
from django.db.models import Q
class AdminDepartmentFilterSet(filters.FilterSet):
# search = filters.CharFilter(method='search_bar', label='search')
# def search_bar(self, queryset, name, value):
# return queryset.filter(
# Q(username__icontains=value) |
# Q(first_name__icontains=value) |
# Q(last_name__icontains=value))
class Meta:
model = Department
fields = '__all__'
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department
from app.applicationlayer.utils import (
CustomPagination, status_message_response
)
from django_filters.rest_framework import DjangoFilterBackend
from app.businesslayer.department import serializer
from app.businesslayer.department.table_filters import AdminDepartmentFilterSet
from app.helper.decorators import rms
class AdminDepartmentViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all()
serializer_class = serializer.AdminDepartmentSerializer
pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = AdminDepartmentFilterSet
ordering_fields = '__all__'
search_fields = ('name',)
@rms.department_list
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
message = status_message_response(
200,
'success',
'list of Department found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
from django.urls import path, include
from rest_framework import routers
from django.conf.urls import url
from app.businesslayer.company.views import AdminCompanyViewSet
from app.businesslayer.department.views import AdminDepartmentViewSet
from app.businesslayer.user_type.views import UserTypeViewSet
router = routers.DefaultRouter()
router.register(r'companies', AdminCompanyViewSet)
router.register(r'departments', AdminDepartmentViewSet)
# router.register(r'user-types', UserTypeViewSet)
urlpatterns = [
path('', include(router.urls)),
url(r'^user-types/$', UserTypeViewSet.as_view(), name="user-types"),
]
from rest_framework.views import APIView
from rest_framework.response import Response
from app.entities import enums
class UserTypeViewSet(APIView):
def get(self, request, format=None):
enums_super = enums.UserTypeEnum.SUPER_USER.value
enums_OUA = enums.UserTypeEnum.OVERALL_USER_ADMIN.value
enums_company = enums.UserTypeEnum.COMPANY_USER_ADMIN.value
enums_department = enums.UserTypeEnum.DEPARTMENT_USER_ADMIN.value
enums_user = enums.UserTypeEnum.USER.value
data = {
'Super user': enums_super,
'Overall user admin': enums_OUA,
"Company user admin": enums_company,
"Department user admin": enums_department,
"user": enums_user
}
if self.request.user.user_type == enums_OUA:
del data['Super user']
del data['Overall user admin']
elif self.request.user.user_type == enums_company:
del data['Super user']
del data['Overall user admin']
del data['Company user admin']
elif self.request.user.user_type == enums_department:
del data['Super User']
del data['Overall user admin']
del data['Company user admin']
del data['Department user admin']
return Response(data)
This diff is collapsed.
# Generated by Django 2.2 on 2019-09-03 16:14
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('entities', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Notification',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=255, unique=True)),
('form_header_code', models.CharField(blank=True, max_length=255, null=True)),
('notif_type', models.CharField(choices=[('REMINDER', 'REMINDER'), ('ACTIVITY', 'ACTIVITY'), ('TASK', 'TASK')], default='TASK', max_length=20)),
('message', models.CharField(blank=True, max_length=255, null=True)),
('is_read', models.BooleanField(default=False, null=True)),
('created', models.DateTimeField(auto_now_add=True)),
('modified', models.DateTimeField(auto_now=True)),
('app_code', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='entities.Application', to_field='code')),
('receiver_account_no', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='receiver_account_no', to=settings.AUTH_USER_MODEL, to_field='code')),
('sender_account_no', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='sender_account_no', to=settings.AUTH_USER_MODEL, to_field='code')),
],
options={
'db_table': 'notifications',
},
),
]
# Generated by Django 2.2 on 2019-09-03 17:25
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0002_notification'),
]
operations = [
migrations.RenameField(
model_name='notification',
old_name='receiver_account_no',
new_name='account_no',
),
migrations.RenameField(
model_name='notification',
old_name='app_code',
new_name='app',
),
]
This diff is collapsed.
# Generated by Django 2.2 on 2019-09-04 16:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0004_auto_20190904_1608'),
]
operations = [
migrations.AddField(
model_name='changerequesttemplateapprovers',
name='action',
field=models.CharField(blank=True, max_length=50, null=True),
),
migrations.AddField(
model_name='changerequesttemplateapprovers',
name='date_sent',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AddField(
model_name='module',
name='component',
field=models.CharField(blank=True, max_length=255, null=True),
),
]
# Generated by Django 2.2 on 2019-09-04 18:55
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('entities', '0005_auto_20190904_1635'),
]
operations = [
migrations.RemoveField(
model_name='notification',
name='form_header_code',
),
migrations.AddField(
model_name='notification',
name='form_code',
field=models.ForeignKey(default=django.utils.timezone.now, on_delete=django.db.models.deletion.DO_NOTHING, to='entities.ChangeRequestFormHeader', to_field='form_code'),
preserve_default=False,
),
migrations.AlterField(
model_name='changerequestformapprovers',
name='form_code',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='frm_approvers', to='entities.ChangeRequestFormHeader', to_field='form_code'),
),
migrations.AlterField(
model_name='changerequestformattachments',
name='form_code',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='frm_attachments', to='entities.ChangeRequestFormHeader', to_field='form_code'),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='field_idx',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='field_props',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='field_ref',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='field_val',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='form_code',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='frm_details', to='entities.ChangeRequestFormHeader', to_field='form_code'),
),
migrations.AlterField(
model_name='changerequestformstakeholders',
name='form_code',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='frm_stakes', to='entities.ChangeRequestFormHeader', to_field='form_code'),
),
migrations.AlterField(
model_name='changerequesttemplateapprovers',
name='template_no',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='tmp_approvers', to='entities.ChangeRequestTemplateHeader', to_field='template_no'),
),
migrations.AlterField(
model_name='changerequesttemplateattachments',
name='template_no',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='tmp_attachments', to='entities.ChangeRequestTemplateHeader', to_field='template_no'),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='field_idx',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='field_props',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='field_ref',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='field_val',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='template_no',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='tmp_details', to='entities.ChangeRequestTemplateHeader', to_field='template_no'),
),
migrations.AlterField(
model_name='changerequesttemplatestakeholders',
name='template_no',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='tmp_stakes', to='entities.ChangeRequestTemplateHeader', to_field='template_no'),
),
]
# Generated by Django 2.2 on 2019-09-05 15:30
import datetime
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('entities', '0006_auto_20190904_1855'),
]
operations = [
migrations.RemoveField(
model_name='changerequesttemplateapprovers',
name='action',
),
migrations.AddField(
model_name='changerequestformapprovers',
name='action',
field=models.CharField(blank=True, max_length=50, null=True),
),
migrations.AlterField(
model_name='changerequestformheader',
name='created',
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
migrations.AlterField(
model_name='changerequesttemplateheader',
name='created',
field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2019, 9, 5, 15, 30, 4, 918778)),
preserve_default=False,
),
]
# Generated by Django 2.2 on 2019-09-05 16:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0007_auto_20190905_1530'),
]
operations = [
migrations.RemoveField(
model_name='changerequesttemplateapprovers',
name='date_sent',
),
migrations.AddField(
model_name='changerequestformapprovers',
name='date_sent',
field=models.DateTimeField(blank=True, null=True),
),
]
# Generated by Django 2.2 on 2019-09-05 16:25
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0008_auto_20190905_1602'),
]
operations = [
migrations.RemoveField(
model_name='changerequesttemplatestakeholders',
name='date_added',
),
]
# Generated by Django 2.2 on 2019-09-05 17:35
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0009_remove_changerequesttemplatestakeholders_date_added'),
]
operations = [
migrations.RenameField(
model_name='changerequestformattachments',
old_name='upload_no',
new_name='file_path',
),
migrations.RenameField(
model_name='changerequesttemplateattachments',
old_name='attachment_no',
new_name='code',
),
migrations.RenameField(
model_name='changerequesttemplateattachments',
old_name='upload_no',
new_name='file_path',
),
migrations.AlterField(
model_name='changerequestformattachments',
name='file_upload',
field=models.FileField(default=datetime.datetime(2019, 9, 5, 17, 35, 1, 41063), upload_to='uploads/'),
preserve_default=False,
),
migrations.AlterField(
model_name='changerequesttemplateattachments',
name='file_upload',
field=models.FileField(default=datetime.datetime(2019, 9, 5, 17, 35, 10, 500537), upload_to='uploads/'),
preserve_default=False,
),
]
# Generated by Django 2.2 on 2019-09-05 17:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0010_auto_20190905_1735'),
]
operations = [
migrations.RemoveField(
model_name='changerequestformattachments',
name='file_path',
),
migrations.RemoveField(
model_name='changerequesttemplateattachments',
name='file_path',
),
migrations.AlterField(
model_name='changerequestformattachments',
name='file_upload',
field=models.FileField(blank=True, null=True, upload_to='uploads/'),
),
migrations.AlterField(
model_name='changerequesttemplateattachments',
name='file_upload',
field=models.FileField(blank=True, null=True, upload_to='uploads/'),
),
]
# Generated by Django 2.2 on 2019-09-06 14:29
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('entities', '0011_auto_20190905_1756'),
]
operations = [
migrations.AddField(
model_name='changerequestformapprovers',
name='tmp_approver',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='entities.ChangeRequestTemplateApprovers', to_field='code'),
),
migrations.AddField(
model_name='changerequestformattachments',
name='tmp_attach',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='entities.ChangeRequestTemplateAttachments', to_field='code'),
),
migrations.AddField(
model_name='changerequestformdetails',
name='tmp_detail',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='entities.ChangeRequestTemplateDetails', to_field='code'),
),
migrations.AddField(
model_name='changerequestformstakeholders',
name='tmp_stake',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='entities.ChangeRequestTemplateStakeHolders', to_field='code'),
),
migrations.AlterField(
model_name='changerequestformapprovers',
name='delegation',
field=models.CharField(blank=True, max_length=50, null=True),
),
migrations.AlterField(
model_name='changerequestformapprovers',
name='user',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL, to_field='code'),
),
migrations.AlterField(
model_name='changerequestformstakeholders',
name='user',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL, to_field='code'),
),
migrations.AlterField(
model_name='changerequesttemplateapprovers',
name='delegation',
field=models.CharField(blank=True, max_length=50, null=True),
),
migrations.AlterField(
model_name='changerequesttemplateapprovers',
name='user',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL, to_field='code'),
),
migrations.AlterField(
model_name='changerequesttemplatestakeholders',
name='user',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL, to_field='code'),
),
]
# Generated by Django 2.2 on 2019-09-08 20:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0012_auto_20190906_1429'),
]
operations = [
migrations.CreateModel(
name='ChangeRequestHistory',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True)),
('createdby', models.CharField(max_length=255)),
('modified', models.DateTimeField(auto_now=True)),
('modifiedby', models.CharField(max_length=255)),
('action', models.CharField(choices=[('Add', 'Add'), ('Update', 'Update'), ('DELETED', 'DELETED')], default='Add', max_length=50)),
('entity', models.CharField(choices=[('CR_FRM_APPROVER', 'CR_FRM_APPROVER'), ('CR_FRM_ATTACHMENT', 'CR_FRM_ATTACHMENT'), ('CR_FRM_DETAIL', 'CR_FRM_DETAIL'), ('CR_FRM_HEADER', 'CR_FRM_HEADER'), ('CR_FRM_STAKE', 'CR_FRM_STAKE'), ('CR_TMP_APPROVER', 'CR_TMP_APPROVER'), ('CR_TMP_ATTACHMENT', 'CR_TMP_ATTACHMENT'), ('CR_TMP_DETAIL', 'CR_TMP_DETAIL'), ('CR_TMP_HEADER', 'CR_TMP_HEADER'), ('CR_TMP_STAKE', 'CR_TMP_STAKE')], default='CR_FRM_HEADER', max_length=50)),
('row_id', models.IntegerField()),
('fromValue', models.TextField(blank=True, null=True)),
('toValue', models.TextField(blank=True, null=True)),
],
options={
'db_table': 'change_request_history',
},
),
]
# Generated by Django 2.2 on 2019-09-09 14:15
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0013_changerequesthistory'),
]
operations = [
migrations.RenameField(
model_name='changerequesthistory',
old_name='row_id',
new_name='form_code',
),
]
...@@ -26,6 +26,7 @@ class Application(AuditClass): ...@@ -26,6 +26,7 @@ class Application(AuditClass):
max_length=255 max_length=255
) )
name = models.CharField(unique=True, max_length=255) name = models.CharField(unique=True, max_length=255)
app_code = models.CharField(max_length=255)
class Meta: class Meta:
db_table = 'applications' db_table = 'applications'
...@@ -214,6 +215,7 @@ class User(AbstractUser): ...@@ -214,6 +215,7 @@ class User(AbstractUser):
# on_delete=models.PROTECT, # on_delete=models.PROTECT,
# default=1 # default=1
# ) # )
default_app = models.CharField(blank=True, null=True, max_length=255)
user_type = models.CharField( user_type = models.CharField(
choices=[(tag.value, tag.value) for tag in enums.UserTypeEnum], choices=[(tag.value, tag.value) for tag in enums.UserTypeEnum],
default=enums.UserTypeEnum.USER.value, default=enums.UserTypeEnum.USER.value,
......
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework import status from rest_framework import status
import json import json
from rest_framework.exceptions import ParseError
from functools import wraps
from rest_framework.authtoken.models import Token
from app.entities.models import User, Department, Company
from app.entities import enums
from django.db.models import Q
def error_safe(function): def error_safe(function):
...@@ -25,3 +31,137 @@ def error_safe(function): ...@@ -25,3 +31,137 @@ def error_safe(function):
wrap.__doc__ = function.__doc__ wrap.__doc__ = function.__doc__
wrap.__name__ = function.__name__ wrap.__name__ = function.__name__
return wrap return wrap
class rms:
# variables
enums_super = enums.UserTypeEnum.SUPER_USER.value
enums_OUA = enums.UserTypeEnum.OVERALL_USER_ADMIN.value
enums_company = enums.UserTypeEnum.COMPANY_USER_ADMIN.value
enums_department = enums.UserTypeEnum.DEPARTMENT_USER_ADMIN.value
enums_user = enums.UserTypeEnum.USER.value
access_error = "Logged user is not allowed to access this endpoint."
department_error = 'Department should be the same with the logged user'
company_error = 'Company should be the same with the logged user'
def user(self):
return self.request.user
def user_type(self):
return rms.user(self).user_type
# @staticmethod
# def user_delete(function):
# @wraps(function)
# def wrapper(self, request, *args, **kwargs):
# return function(self, request, *args, **kwargs)
# return wrapper
@staticmethod
def user_create(function):
@wraps(function)
def wrapper(self, request, *args, **kwargs):
if rms.user_type(self) == rms.enums_user:
raise ParseError(
rms.access_error
)
elif rms.user_type(self) == rms.enums_department:
print(request.data)
if request.data['department'] != rms.user(self).department.id:
raise ParseError(
rms.department_error
)
elif rms.user_type(self) == rms.enums_company:
user_company = rms.user(self).department.company
request_department = Department.objects.filter(
Q(id=request.data['department']) &
Q(company=user_company)
)
if not request_department:
raise ParseError(rms.company_error)
return function(self, request, *args, **kwargs)
return wrapper
@staticmethod
def company_crate(function):
@wraps(function)
def wrapper(self, request, *args, **kwargs):
if rms.user_type(self) != rms.enums_super:
raise ParseError(
rms.access_error
)
return function(self, request, *args, **kwargs)
return wrapper
@staticmethod
def department_crate(function):
@wraps(function)
def wrapper(self, request, *args, **kwargs):
if rms.user_type(self) == rms.enums_super:
pass
elif rms.user_type(self) != rms.enums_super or rms.user_type(self) != rms.enums_company:
raise ParseError(
rms.access_error
)
return function(self, request, *args, **kwargs)
return wrapper
@staticmethod
def application_crate(function):
@wraps(function)
def wrapper(self, request, *args, **kwargs):
if rms.user_type(self) != rms.enums_super:
raise ParseError(
rms.access_error
)
return function(self, request, *args, **kwargs)
return wrapper
@staticmethod
def company_list(function):
@wraps(function)
def wrapper(self, request, *args, **kwargs):
if rms.user_type(self) == rms.enums_company:
id = rms.user(self).department.company.id
self.queryset = self.queryset.filter(
id=id
)
elif rms.user_type(self) == rms.enums_super:
pass
elif rms.user_type(self) == rms.enums_OUA:
pass
else:
raise ParseError(
rms.access_error
)
return function(self, request, *args, **kwargs)
return wrapper
@staticmethod
def department_list(function):
@wraps(function)
def wrapper(self, request, *args, **kwargs):
if rms.user_type(self) == rms.enums_department:
id = rms.user(self).department.id
self.queryset = self.queryset.filter(
id=id
)
elif rms.user_type(self) == rms.enums_company:
pass
elif rms.user_type(self) == rms.enums_super:
pass
else:
raise ParseError(
rms.access_error
)
return function(self, request, *args, **kwargs)
return wrapper
...@@ -22,12 +22,9 @@ from app.applicationlayer.management.notification import views as notifview ...@@ -22,12 +22,9 @@ from app.applicationlayer.management.notification import views as notifview
urlpatterns = [ urlpatterns = [
# path('admin/', admin.site.urls), # path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls')), path('api-auth/', include('rest_framework.urls')),
path('api/v1/auth/', include('app.accesslayer.urls')), path('api/v1/auth/', include('app.accesslayer.urls')),
path('api/v1/', include('app.applicationlayer.urls')), path('api/v1/management/', include('app.applicationlayer.urls')),
path('api/v1/master/', include('app.applicationlayer.master.urls')),
url(r'^chat/$', notifview.index, name='index'), url(r'^chat/$', notifview.index, name='index'),
url(r'^chat/(?P<room_name>[^/]+)/$', notifview.room, name='room'), url(r'^chat/(?P<room_name>[^/]+)/$', notifview.room, name='room'),
] ]
INSERT INTO `modules` (`id`, `created`, `createdby`, `modified`, `modifiedby`, `code`, `name`, `parent`, `sort_id`, `application_id`, `component`) VALUES (1, '2019-09-03 14:19:25.504073', '', '2019-09-04 16:48:50.127104', 'admin', 'MODULE-20190904-0000001', 'Application Management', 0, 4, 1, '/rms/application-management');
INSERT INTO `modules` (`id`, `created`, `createdby`, `modified`, `modifiedby`, `code`, `name`, `parent`, `sort_id`, `application_id`, `component`) VALUES (2, '2019-09-03 14:21:24.286404', '', '2019-09-04 16:49:13.660932', 'admin', 'MODULE-20190904-0000002', 'Company Management', 0, 5, 1, '/rms/company-management');
INSERT INTO `modules` (`id`, `created`, `createdby`, `modified`, `modifiedby`, `code`, `name`, `parent`, `sort_id`, `application_id`, `component`) VALUES (3, '2019-09-03 14:21:31.402049', '', '2019-09-04 16:49:34.601081', 'admin', 'MODULE-20190904-0000003', 'Department Management', 0, 6, 1, '/rms/department-management');
INSERT INTO `modules` (`id`, `created`, `createdby`, `modified`, `modifiedby`, `code`, `name`, `parent`, `sort_id`, `application_id`, `component`) VALUES (4, '2019-09-03 14:21:38.762899', '', '2019-09-04 16:49:45.865485', 'admin', 'MODULE-20190904-0000004', 'Module Management', 0, 7, 1, '/rms/department-management');
INSERT INTO `modules` (`id`, `created`, `createdby`, `modified`, `modifiedby`, `code`, `name`, `parent`, `sort_id`, `application_id`, `component`) VALUES (5, '2019-09-03 14:32:08.507515', '', '2019-09-04 16:50:03.868745', 'admin', 'MODULE-20190904-0000005', 'User Management', 0, 8, 1, '/rms/user-management');
INSERT INTO `modules` (`id`, `created`, `createdby`, `modified`, `modifiedby`, `code`, `name`, `parent`, `sort_id`, `application_id`, `component`) VALUES (6, '2019-09-03 14:35:50.893193', '', '2019-09-04 16:47:24.621874', 'admin', 'MODULE-20190904-0000006', 'Notification', 0, 1, 2, '/cms/notifications');
INSERT INTO `modules` (`id`, `created`, `createdby`, `modified`, `modifiedby`, `code`, `name`, `parent`, `sort_id`, `application_id`, `component`) VALUES (7, '2019-09-03 14:35:57.413233', '', '2019-09-04 16:47:58.262216', 'admin', 'MODULE-20190904-0000007', 'Change Request', 0, 2, 2, '/cms/change-request/form');
INSERT INTO `modules` (`id`, `created`, `createdby`, `modified`, `modifiedby`, `code`, `name`, `parent`, `sort_id`, `application_id`, `component`) VALUES (8, '2019-09-03 14:36:04.452517', '', '2019-09-04 16:48:06.587965', 'admin', 'MODULE-20190904-0000008', 'Change Request Template', 0, 3, 2, '/cms/change-request/template');
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment