Commit aabad658 authored by Gladys Forte's avatar Gladys Forte

Merge branch 'product-staging' into 'product-demo'

Product staging

See merge request rms/Backend/api-main-service!952
parents d34a3521 63ef0f05
...@@ -33,7 +33,7 @@ class AllowedCompanyViewSet(viewsets.ModelViewSet): ...@@ -33,7 +33,7 @@ class AllowedCompanyViewSet(viewsets.ModelViewSet):
) )
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
# hello again
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset) page = self.paginate_queryset(queryset)
......
...@@ -7,8 +7,7 @@ from rest_framework import status, views ...@@ -7,8 +7,7 @@ from rest_framework import status, views
from django.db.models import Q from django.db.models import Q
from app.applicationlayer.utils import (QuerySetHelper, from app.applicationlayer.utils import (QuerySetHelper,
status_message_response, status_message_response)
send_broadcast_message)
from app.businesslayer.changerequest import change_request from app.businesslayer.changerequest import change_request
from app.entities import enums from app.entities import enums
......
...@@ -45,12 +45,26 @@ class ChangeRequestTemplatesSerializer( ...@@ -45,12 +45,26 @@ class ChangeRequestTemplatesSerializer(
"code": instance.requested_to_department.code, "code": instance.requested_to_department.code,
"name": instance.requested_to_department.name "name": instance.requested_to_department.name
} }
created_by_user_object = {
"id": instance.created_by_user.id,
"name": instance.created_by_user.name,
"username": instance.created_by_user.username,
"code": instance.created_by_user.code,
"email": instance.created_by_user.email,
"contact_no": instance.created_by_user.contact_no,
"company_code": instance.created_by_user.department.company.code,
"company_name": instance.created_by_user.department.company.name,
"department_code": instance.created_by_user.department.code,
"department_name": instance.created_by_user.department.name
}
ret['requested_to_user'] = requested_to_user_object ret['requested_to_user'] = requested_to_user_object
ret['company'] = instance.requested_to_company.name ret['company'] = instance.requested_to_company.name
ret['department'] = instance.requested_to_department.name ret['department'] = instance.requested_to_department.name
ret['point_of_contact'] = instance.requested_to_user.name ret['point_of_contact'] = instance.requested_to_user.name
ret['created_by'] = instance.created_by_user.name ret['created_by_user'] = created_by_user_object
return ret return ret
...@@ -59,11 +73,11 @@ class ChangeRequestTemplatesSerializer( ...@@ -59,11 +73,11 @@ class ChangeRequestTemplatesSerializer(
ret['requested_to_company'] = "none" ret['requested_to_company'] = "none"
ret['requested_to_department'] = "none" ret['requested_to_department'] = "none"
ret['requested_to_user'] = "none" ret['requested_to_user'] = "none"
ret['created_by_user'] = "none"
ret['company'] = "none" ret['company'] = "none"
ret['department'] = "none" ret['department'] = "none"
ret['point_of_contact'] = "none" ret['point_of_contact'] = "none"
ret['created_by'] = "none"
return ret return ret
...@@ -87,7 +101,10 @@ class ChangeRequestTemplatesSerializerList( ...@@ -87,7 +101,10 @@ class ChangeRequestTemplatesSerializerList(
def to_representation(self, instance): def to_representation(self, instance):
ret = super().to_representation(instance) ret = super().to_representation(instance)
try: try:
current_user = self.context['request'].user.code
ret['company'] = instance.requested_to_company.name ret['company'] = instance.requested_to_company.name
ret['department'] = instance.requested_to_department.name ret['department'] = instance.requested_to_department.name
ret['point_of_contact'] = instance.requested_to_user.name ret['point_of_contact'] = instance.requested_to_user.name
...@@ -96,18 +113,21 @@ class ChangeRequestTemplatesSerializerList( ...@@ -96,18 +113,21 @@ class ChangeRequestTemplatesSerializerList(
template_no=instance.template_no template_no=instance.template_no
) )
can_delete = '' can_delete = ''
owned_template = ''
if child.count() > 0: if instance.created_by_user.code == current_user:
owned_template = True
else:
owned_template = False
if child.count() > 0:
can_delete = False can_delete = False
else: else:
can_delete = True can_delete = True
ret['can_delete'] = can_delete ret['can_delete'] = can_delete
ret['owned_template'] = owned_template
return ret return ret
except Exception as e: except Exception as e:
......
...@@ -21,7 +21,8 @@ from app.applicationlayer.cms.utils_cr import ( ...@@ -21,7 +21,8 @@ from app.applicationlayer.cms.utils_cr import (
) )
from app.businesslayer.changerequest.change_request_template import ( from app.businesslayer.changerequest.change_request_template import (
tmp_add_edit_delete tmp_add_edit_delete,
list_by_dept_privilege
) )
from app.applicationlayer.cms.template.approver.serializers import ChangeRequestTemplateApproversSerializer from app.applicationlayer.cms.template.approver.serializers import ChangeRequestTemplateApproversSerializer
from app.applicationlayer.cms.template.stakeholder.serializers import ChangeRequestTemplateStakeHoldersSerializer from app.applicationlayer.cms.template.stakeholder.serializers import ChangeRequestTemplateStakeHoldersSerializer
...@@ -68,11 +69,11 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet): ...@@ -68,11 +69,11 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet):
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
queryset = queryset.filter(created_by_user=request.user.code,
is_active=True)
self.serializer_class = ChangeRequestTemplatesSerializerList self.serializer_class = ChangeRequestTemplatesSerializerList
id_number = self.request.user.code
self.queryset = list_by_dept_privilege(id_number)
queryset = self.filter_queryset(self.queryset)
page = self.paginate_queryset(queryset) page = self.paginate_queryset(queryset)
...@@ -82,7 +83,7 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet): ...@@ -82,7 +83,7 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet):
message = status_message_response( message = status_message_response(
200, 200,
'success', 'success',
'List of Templates found', 'List of Change Request Template found',
serializer.data serializer.data
) )
......
...@@ -22,7 +22,6 @@ class UserDownloadRequest(XLSXFileMixin, ReadOnlyModelViewSet): ...@@ -22,7 +22,6 @@ class UserDownloadRequest(XLSXFileMixin, ReadOnlyModelViewSet):
permission_classes = (AllowAny,) permission_classes = (AllowAny,)
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
#comment this line
user_type = self.request.user.user_type user_type = self.request.user.user_type
company = self.request.user.department.company.code company = self.request.user.department.company.code
department = self.request.user.department.code department = self.request.user.department.code
......
...@@ -34,12 +34,13 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer): ...@@ -34,12 +34,13 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
department = serializers.SerializerMethodField() department = serializers.SerializerMethodField()
company = serializers.SerializerMethodField() company = serializers.SerializerMethodField()
cms_privilege = serializers.SerializerMethodField() cms_privilege = serializers.SerializerMethodField()
my_successions = serializers.SerializerMethodField()
class Meta: class Meta:
model = User model = User
fields = ( fields = (
'id', 'id',
"cms_privilege", 'cms_privilege',
'code', 'name', 'code', 'name',
'username', 'contact_no', 'username', 'contact_no',
'image', 'company', 'image', 'company',
...@@ -85,22 +86,37 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer): ...@@ -85,22 +86,37 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
def get_cms_privilege(self, user): def get_cms_privilege(self, user):
test = AllowedCompany.objects.extra( # test = AllowedCompany.objects.extra(
select={ # select={
'create_form': "create_change_request=True", # 'create_form': "create_change_request=True",
'create_template': "create_change_request_template=True", # 'create_template': "create_change_request_template=True",
} # }
).filter(id_number=user.code).values('create_form', "create_template") # ).filter(id_number=user.code).values('create_form', "create_template")
# print(test.count())
create_form = AllowedCompany.objects.filter(
Q(id_number=user.code) &
Q(create_change_request=True)
).count()
create_template = AllowedCompany.objects.filter(
Q(id_number=user.code) &
Q(create_change_request_template=True)
).count()
if create_form >= 1:
create_form = 1
if create_template >= 1:
create_template = 1
if test.count() >= 1:
return {**test.values("create_form","create_template")[0]}
else:
return { return {
"create_form": False, "create_form": create_form,
"create_template": False "create_template": create_template
} }
def get_image(self, user): def get_image(self, user):
request = self.context.get('request') request = self.context.get('request')
......
...@@ -4,46 +4,35 @@ from rest_framework.response import Response ...@@ -4,46 +4,35 @@ from rest_framework.response import Response
from functools import wraps from functools import wraps
from app.entities import enums from app.entities import enums
from app.entities.models import EntityLog, Notification from app.entities.models import EntityLog, Notification
from django.conf import settings from django.conf import settings
from websocket import create_connection from websocket import create_connection
import json import json
from rest_framework import status from rest_framework import status
from rest_framework import serializers from rest_framework import serializers
import copy import copy
import json import json
import pusher from pusher import Pusher
import os import os
import configparser import configparser
config = configparser.ConfigParser() config = configparser.ConfigParser()
config_file = os.path.join('./', 'env.ini') config_file = os.path.join('./', 'env.ini')
config.read(config_file) config.read(config_file)
REALTIMESERVER_IP = settings.REALTIMESERVER_IP REALTIMESERVER_IP = settings.REALTIMESERVER_IP
app_id = config['SETTINGS']['app_id'], SSL = False if config['SETTINGS']['SSL'] == 1 else True
key = config['SETTINGS']['key']
secret = config['SETTINGS']['secret']
cluster = config['SETTINGS']['cluster']
ssl = True if config['SETTINGS']['ssl'] == 1 else False
cms_notification = config['SETTINGS']['cms_notification']
def rms_websocket(my_channel, my_event, msg): def rms_websocket(my_channel, my_event, msg):
pusher_client = pusher.Pusher( pusher_client = pusher.Pusher(
app_id=app_id, app_id='957253',
key=key, key='c29a7f6579108991e79e',
secret=secret, secret='b3df5d55196b5fbd3eff',
cluster=cluster, cluster='ap1',
ssl=ssl ssl=True
) )
pusher_client.trigger( pusher_client.trigger(
my_channel, my_event, msg my_channel, my_event, msg
# 'my-channel', 'my-event', {'message': 'hello world'}
) )
...@@ -239,13 +228,7 @@ def notification_create(form_code, message, account_no, ...@@ -239,13 +228,7 @@ def notification_create(form_code, message, account_no,
ROOM = account_no ROOM = account_no
# SENDER = sender_account_no # SENDER = sender_account_no
# send_broadcast_message( if SSL != True:
# ROOM,
# SENDER,
# 'NEW NOTIFICATIONS'
# )
if ssl != 1:
send_broadcast_message( send_broadcast_message(
ROOM, ROOM,
SENDER, SENDER,
...@@ -254,7 +237,8 @@ def notification_create(form_code, message, account_no, ...@@ -254,7 +237,8 @@ def notification_create(form_code, message, account_no,
else: else:
rms_websocket( rms_websocket(
ROOM, ROOM,
'NEW NOTIFICATIONS' 'cms-notification',
{'message': 'NEW NOTIFICATIONS'}
) )
return True return True
......
...@@ -218,3 +218,25 @@ def validation_vendor_unique_level(approvers): ...@@ -218,3 +218,25 @@ def validation_vendor_unique_level(approvers):
if not approver['delegation'] == 'DELEGATION-20191119-0000002': if not approver['delegation'] == 'DELEGATION-20191119-0000002':
validate = approver['level'] validate = approver['level']
return validate return validate
def list_by_dept_privilege(user_id_number):
try:
priviledgeCrs = models.AllowedCompany.objects.filter(
Q(id_number=user_id_number) &
Q(view_all_change_request_template=True)
).values('group_pivots')
return_queryset = models.ChangeRequestTemplateHeader.objects.filter(
Q(is_active=True) &
(Q(created_by_user=user_id_number) |
Q(created_by_department__in=priviledgeCrs))
)
return return_queryset
except Exception as e:
return_queryset = None
return return_queryset
# Generated by Django 2.2 on 2020-02-27 17:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0002_auto_20200219_1525'),
]
operations = [
migrations.AddField(
model_name='allowedcompany',
name='view_all_change_request_template',
field=models.BooleanField(default=True),
),
]
...@@ -1110,9 +1110,11 @@ class AllowedCompany(models.Model): ...@@ -1110,9 +1110,11 @@ class AllowedCompany(models.Model):
create_change_request_template = models.BooleanField(default=True) create_change_request_template = models.BooleanField(default=True)
view_all_change_request = models.BooleanField(default=True) view_all_change_request = models.BooleanField(default=True)
approve_cr = models.BooleanField(default=False) approve_cr = models.BooleanField(default=False)
view_all_change_request_template = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True) created_at = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(null=True, blank=True) deleted_at = models.DateTimeField(null=True, blank=True)
class Meta: class Meta:
db_table = 'allowed_company' db_table = 'allowed_company'
unique_together = ['company_pivot', 'group_pivots', 'id_number'] unique_together = ['company_pivot', 'group_pivots', 'id_number']
......
...@@ -27,7 +27,6 @@ SECRET_KEY = 'w!dkk7gc*dk#4!6ow3s1wc32%_yp$=osgybm=n0vw6k1j^sqo&' ...@@ -27,7 +27,6 @@ SECRET_KEY = 'w!dkk7gc*dk#4!6ow3s1wc32%_yp$=osgybm=n0vw6k1j^sqo&'
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
ALLOWED_HOSTS = ['*'] ALLOWED_HOSTS = ['*']
CORS_ORIGIN_ALLOW_ALL = True CORS_ORIGIN_ALLOW_ALL = True
......
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