Commit 63ef0f05 authored by Gladys Forte's avatar Gladys Forte

Merge branch 'product-sit' into 'product-staging'

Product sit

See merge request rms/Backend/api-main-service!946
parents 7bedab01 b9164b5a
...@@ -33,13 +33,13 @@ class AllowedCompanyViewSet(viewsets.ModelViewSet): ...@@ -33,13 +33,13 @@ 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)
if page is not None: if page is not None:
serializer = self.get_serializer(page, many=True) serializer = self.get_serializer(page, many=True)
message = status_message_response( message = status_message_response(
200, 200,
'success', 'success',
......
...@@ -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,12 +73,12 @@ class ChangeRequestTemplatesSerializer( ...@@ -59,12 +73,12 @@ 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
class Meta: class Meta:
...@@ -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 instance.created_by_user.code == current_user:
owned_template = True
else:
owned_template = False
if child.count() > 0: 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
...@@ -38,7 +39,7 @@ from django_filters.rest_framework import DjangoFilterBackend ...@@ -38,7 +39,7 @@ from django_filters.rest_framework import DjangoFilterBackend
class ChangeRequestTemplatesViewset(viewsets.ModelViewSet): class ChangeRequestTemplatesViewset(viewsets.ModelViewSet):
# queryset = models.ChangeRequestTemplateHeader.objects.all() # queryset = models.ChangeRequestTemplateHeader.objects.all()
queryset = models.ChangeRequestTemplateHeader.objects.select_related( queryset = models.ChangeRequestTemplateHeader.objects.select_related(
'created_by_user', 'created_by_department' 'created_by_user', 'created_by_department'
...@@ -67,13 +68,13 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet): ...@@ -67,13 +68,13 @@ 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)
if page is not None: if page is not None:
...@@ -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
......
...@@ -33,16 +33,14 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer): ...@@ -33,16 +33,14 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
applications = serializers.SerializerMethodField() applications = serializers.SerializerMethodField()
department = serializers.SerializerMethodField() department = serializers.SerializerMethodField()
company = serializers.SerializerMethodField() company = serializers.SerializerMethodField()
create_form = serializers.SerializerMethodField() cms_privilege = serializers.SerializerMethodField()
create_template = serializers.SerializerMethodField()
my_successions = serializers.SerializerMethodField() my_successions = serializers.SerializerMethodField()
class Meta: class Meta:
model = User model = User
fields = ( fields = (
'id', 'id',
'create_form', 'cms_privilege',
'create_template',
'code', 'name', 'code', 'name',
'username', 'contact_no', 'username', 'contact_no',
'image', 'company', 'image', 'company',
...@@ -86,27 +84,38 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer): ...@@ -86,27 +84,38 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
} }
return data return data
def get_create_form(self, user): def get_cms_privilege(self, user):
check_user = AllowedCompany.objects.filter(
# test = AllowedCompany.objects.extra(
# select={
# 'create_form': "create_change_request=True",
# 'create_template': "create_change_request_template=True",
# }
# ).filter(id_number=user.code).values('create_form', "create_template")
create_form = AllowedCompany.objects.filter(
Q(id_number=user.code) & Q(id_number=user.code) &
Q(create_change_request=True) Q(create_change_request=True)
).count() ).count()
if check_user <= 0:
permission = False
else:
permission = True
return permission
def get_create_template(self, user): create_template = AllowedCompany.objects.filter(
check_user = AllowedCompany.objects.filter(
Q(id_number=user.code) & Q(id_number=user.code) &
Q(create_change_request_template=True) Q(create_change_request_template=True)
).count() ).count()
if check_user <= 0:
permission = False if create_form >= 1:
else: create_form = 1
permission = True
return permission if create_template >= 1:
create_template = 1
return {
"create_form": create_form,
"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,17 +4,36 @@ from rest_framework.response import Response ...@@ -4,17 +4,36 @@ 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
from pusher import Pusher
import os
import configparser
config = configparser.ConfigParser()
config_file = os.path.join('./', 'env.ini')
config.read(config_file)
REALTIMESERVER_IP = settings.REALTIMESERVER_IP REALTIMESERVER_IP = settings.REALTIMESERVER_IP
SSL = False if config['SETTINGS']['SSL'] == 1 else True
def rms_websocket(my_channel, my_event, msg):
pusher_client = pusher.Pusher(
app_id='957253',
key='c29a7f6579108991e79e',
secret='b3df5d55196b5fbd3eff',
cluster='ap1',
ssl=True
)
pusher_client.trigger(
my_channel, my_event, msg
)
def error_message(code, message, status, status_code): def error_message(code, message, status, status_code):
...@@ -207,13 +226,20 @@ def notification_create(form_code, message, account_no, ...@@ -207,13 +226,20 @@ 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, send_broadcast_message(
SENDER, ROOM,
'NEW NOTIFICATIONS' SENDER,
) 'NEW NOTIFICATIONS'
)
else:
rms_websocket(
ROOM,
'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
......
...@@ -5,7 +5,7 @@ DATABASE_ENGINE = django.db.backends.mysql ...@@ -5,7 +5,7 @@ DATABASE_ENGINE = django.db.backends.mysql
DATABASE_NAME = rms_db DATABASE_NAME = rms_db
DATABASE_USER = red_database DATABASE_USER = red_database
DATABASE_PASSWORD = password123 DATABASE_PASSWORD = password123
DATABASE_HOST = 10.0.75.1 DATABASE_HOST = localhost
DATABASE_PORT = 3306 DATABASE_PORT = 3306
SESSION_TIMEOUT = 30 SESSION_TIMEOUT = 30
FRONT_END_URL = http://devweb.rmsv2.oneberrysystem.com FRONT_END_URL = http://devweb.rmsv2.oneberrysystem.com
...@@ -15,6 +15,12 @@ CATCH_EMAIL = gladys@tirsolutions.com ...@@ -15,6 +15,12 @@ CATCH_EMAIL = gladys@tirsolutions.com
CR_LINK = http://localhost:8000/cms/change-request/form/view CR_LINK = http://localhost:8000/cms/change-request/form/view
REALTIMESERVER_IP = 127.0.0.1:8000 REALTIMESERVER_IP = 127.0.0.1:8000
DEBUG = False DEBUG = False
app_id = 957253
key = c29a7f6579108991e79e
secret = b3df5d55196b5fbd3eff
cluster = api
cms_notification = cms_notification
[NOTIFICATION_EMAIL] [NOTIFICATION_EMAIL]
......
...@@ -78,3 +78,5 @@ VENDOR_REJECT_MESSAGE = has REJECTED the change request;RMS-CRREJECTED-VENDOR ...@@ -78,3 +78,5 @@ VENDOR_REJECT_MESSAGE = has REJECTED the change request;RMS-CRREJECTED-VENDOR
REVISED_MESSAGE = has REJECTED the change request for your revision;RMS-CRREVISED REVISED_MESSAGE = has REJECTED the change request for your revision;RMS-CRREVISED
CANCEL_MESSAGE = has CANCELLED the change request;RMS-CRCANCELLED-USERTRIGGER CANCEL_MESSAGE = has CANCELLED the change request;RMS-CRCANCELLED-USERTRIGGER
APPROVER_REJECT_MESSAGE = has REJECTED the change request for your approval;RMS-CRREJECTED-APPROVER APPROVER_REJECT_MESSAGE = has REJECTED the change request for your approval;RMS-CRREJECTED-APPROVER
This diff is collapsed.
...@@ -15,7 +15,7 @@ channels-redis==2.4.0 ...@@ -15,7 +15,7 @@ channels-redis==2.4.0
chardet==3.0.4 chardet==3.0.4
colorama==0.4.1 colorama==0.4.1
constantly==15.1.0 constantly==15.1.0
cryptography==2.7 cryptography==2.8
cssselect2==0.2.2 cssselect2==0.2.2
daphne==2.3.0 daphne==2.3.0
defusedxml==0.6.0 defusedxml==0.6.0
...@@ -40,15 +40,20 @@ Markdown==3.1 ...@@ -40,15 +40,20 @@ Markdown==3.1
mccabe==0.6.1 mccabe==0.6.1
msgpack==0.6.1 msgpack==0.6.1
mysqlclient==1.4.2.post1 mysqlclient==1.4.2.post1
ndg-httpsclient==0.5.1
numpy==1.17.3 numpy==1.17.3
openpyxl==3.0.0 openpyxl==3.0.0
pandas==0.25.3 pandas==0.25.3
pep8==1.7.1 pep8==1.7.1
Pillow==6.0.0 Pillow==6.0.0
pusher==2.1.4
pyasn1==0.4.8
pycodestyle==2.5.0 pycodestyle==2.5.0
pycparser==2.19 pycparser==2.19
PyHamcrest==1.9.0 PyHamcrest==1.9.0
pylint==2.3.1 pylint==2.3.1
PyNaCl==1.3.0
pyOpenSSL==19.1.0
PyPDF2==1.26.0 PyPDF2==1.26.0
Pyphen==0.9.5 Pyphen==0.9.5
python-dateutil==2.8.1 python-dateutil==2.8.1
......
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