Commit 16228410 authored by John Red Medrano's avatar John Red Medrano

Merge pull request #253 in RMS/api-main-service from RMSv2 to staging

* commit '00081ddd':
  added staging env
  fixing
  fixing the company selection on cr
  archived
  rename endpoint of list of templates
  applied condition of POC on change request template
  added new endpoint for list of companies, department and user for template and form
  email templates
  clean code at current user and fixed the list of user on CRs drop down
  fixing current user
  fixing current user
  remove department
  change ordering
  fixing ordering
  fix ordering on department and modules
  comment
  new user url
parents 33fa3c8a 00081ddd
...@@ -157,16 +157,18 @@ class ForgotPassword(APIView): ...@@ -157,16 +157,18 @@ class ForgotPassword(APIView):
url = f"{settings.FRONT_END_URL}/forgot-password/reset"\ url = f"{settings.FRONT_END_URL}/forgot-password/reset"\
f"?token={TOKEN}" f"?token={TOKEN}"
args = [str(PASSCODE), str(url), user, str(existingUser.email)] args = [str(PASSCODE), str(url), user, str(existingUser.email),
str(existingUser.username)]
# t1 = threading.Thread(target=sender.forgot_password, args=(args,)) # t1 = threading.Thread(target=sender.forgot_password, args=(args,))
# t1.start() # t1.start()
main_threading(args, sender.forgot_password) main_threading(args, sender.forgot_password)
args = [str(PASSCODE), str(url), user, str(existingUser.email)] # args = [str(PASSCODE), str(url), user, str(existingUser.email),
# str(existingUser.username)]
# t2 = threading.Thread(target=sender.forgot_password, args=(args,)) # t2 = threading.Thread(target=sender.forgot_password, args=(args,))
# t2.start() # t2.start()
main_threading(args, sender.forgot_password) # main_threading(args, sender.forgot_password)
return Response(data={"detail": "Forgot Password Sent"}, return Response(data={"detail": "Forgot Password Sent"},
status=status.HTTP_200_OK) status=status.HTTP_200_OK)
......
...@@ -4,6 +4,14 @@ from app.entities.models import ChangeRequestFormHeader ...@@ -4,6 +4,14 @@ from app.entities.models import ChangeRequestFormHeader
class HeaderFilterSet(filters.FilterSet): class HeaderFilterSet(filters.FilterSet):
# action_required = filters.CharFilter(method='action_required_bar')
# def action_required_bar(self, queryset, name, value):
# return queryset.filter(
# Q(title__icontains=value) |
# Q(name__icontains=value) |
# Q(description__icontains=value)
# )
class Meta: class Meta:
model = ChangeRequestFormHeader model = ChangeRequestFormHeader
fields = '__all__' fields = '__all__'
...@@ -73,7 +73,19 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -73,7 +73,19 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
lookup_field = 'form_code' lookup_field = 'form_code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = HeaderFilterSet filterset_class = HeaderFilterSet
ordering_fields = '__all__' ordering_fields = (
'form_code',
'requested_to_template_id',
'requested_to_user__name',
'requested_to_department__company__name',
'requested_to_department__name',
'requested_by_user__name',
'status',
'requested_to_priority',
'created',
'requested_to_target_date'
)
search_fields = ( search_fields = (
"form_code", "status", "requested_to_template_id", "requested_by_user__name", "form_code", "status", "requested_to_template_id", "requested_by_user__name",
"requested_by_user__code", "requested_by_department__name", "requested_by_user__code", "requested_by_department__name",
...@@ -350,6 +362,12 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -350,6 +362,12 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
def destroy(self, request, *args, **kwargs): def destroy(self, request, *args, **kwargs):
try: try:
form_code = self.kwargs['form_code'] form_code = self.kwargs['form_code']
current_status = models.ChangeRequestFormHeader.objects.get(
form_code=form_code
)
if current_status.status.lower() == 'draft':
existing_transaction = models.ChangeRequestHistory.objects.filter( existing_transaction = models.ChangeRequestHistory.objects.filter(
form_code=form_code form_code=form_code
) )
...@@ -419,6 +437,20 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -419,6 +437,20 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
{"message": "Change request cannot be deleted due to previous transaction/s"}, {"message": "Change request cannot be deleted due to previous transaction/s"},
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
elif current_status.status.lower() == 'cancelled':
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Archived')
return Response(
{"message": "Change Request successfully archived!"},
status=status.HTTP_200_OK)
else:
return Response(
{"message": "Cannot archive this change request due to ongoing transaction"},
status=status.HTTP_400_BAD_REQUEST)
except Exception as e: except Exception as e:
return Response(e, return Response(e,
status=status.HTTP_500_INTERNAL_SERVER_ERROR) status=status.HTTP_500_INTERNAL_SERVER_ERROR)
...@@ -710,7 +742,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -710,7 +742,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
notification_msg, action, notification_msg, action,
remarks, level remarks, level
) )
else: else:
# EMAIL CODE FOR REQUESTOR # EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0] requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
......
...@@ -8,7 +8,7 @@ from django.db.models import Q ...@@ -8,7 +8,7 @@ from django.db.models import Q
from rest_framework import status from rest_framework import status
class UserList(APIView): class UserListForm(APIView):
pagination_class = CustomPagination pagination_class = CustomPagination
...@@ -17,15 +17,17 @@ class UserList(APIView): ...@@ -17,15 +17,17 @@ class UserList(APIView):
try: try:
serializer = ChangeRequestList serializer = ChangeRequestList
dept = self.request.query_params['department_code'] dept = self.request.query_params['department_code']
company = self.request.query_params['company_code'] # company = self.request.query_params['company_code']
user_list = models.AllowedCompany.objects.filter( # allowed = models.AllowedCompany.objects.filter(
Q(company_pivot=company) & # Q(group_pivots=dept) &
Q(group_pivots=dept) # Q()
) # )
user_list = user_list.exclude(id=1).values('id_number') user_list = models.User.objects.filter(
queryset = models.User.objects.filter(code__in=user_list).order_by('name') department=dept
).exclude(id=1)
page = self.paginate_queryset(queryset) user_list = user_list.exclude(id=request.user.id)
print(user_list.query)
page = self.paginate_queryset(user_list)
if page is not None: if page is not None:
......
...@@ -6,14 +6,15 @@ from app.businesslayer.company.serializer import AdminCompanySerializer ...@@ -6,14 +6,15 @@ from app.businesslayer.company.serializer import AdminCompanySerializer
from app.applicationlayer.utils import CustomPagination, status_message_response from app.applicationlayer.utils import CustomPagination, status_message_response
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.company import serializer from app.applicationlayer.management.company import serializer
from app.applicationlayer.cms.master.company.table_filters import ( from app.applicationlayer.cms.master.form.company.table_filters import (
ChangeRequestCompanyFilterSet ChangeRequestCompanyFilterSet
) )
from app.helper.decorators import rms from app.helper.decorators import rms
from rest_framework.response import Response from rest_framework.response import Response
from django.db.models import Q
class ChangeRequestCompanyViewSet(viewsets.ModelViewSet): class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all() queryset = Company.objects.all()
serializer_class = AdminCompanySerializer serializer_class = AdminCompanySerializer
pagination_class = CustomPagination pagination_class = CustomPagination
...@@ -27,7 +28,8 @@ class ChangeRequestCompanyViewSet(viewsets.ModelViewSet): ...@@ -27,7 +28,8 @@ class ChangeRequestCompanyViewSet(viewsets.ModelViewSet):
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter( allowed = AllowedCompany.objects.filter(
id_number=self.request.user.code Q(id_number=self.request.user.code) &
Q(create_change_request=True)
).values('company_pivot') ).values('company_pivot')
queryset = queryset.filter(code__in=allowed) queryset = queryset.filter(code__in=allowed)
page = self.paginate_queryset(queryset) page = self.paginate_queryset(queryset)
......
...@@ -10,7 +10,7 @@ from app.applicationlayer.utils import ( ...@@ -10,7 +10,7 @@ from app.applicationlayer.utils import (
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.master.department import serializer from app.applicationlayer.master.department import serializer
from app.applicationlayer.cms.master.department.table_filters import ( from app.applicationlayer.cms.master.form.department.table_filters import (
ChangeRequestDepartmentFilterSet ChangeRequestDepartmentFilterSet
) )
from app.helper.decorators import rms from app.helper.decorators import rms
...@@ -18,7 +18,7 @@ from django.db.models import Q ...@@ -18,7 +18,7 @@ from django.db.models import Q
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet): class ChangeRequestDepartmentFormViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all() queryset = Department.objects.all()
serializer_class = serializer.AdminDepartmentSerializer serializer_class = serializer.AdminDepartmentSerializer
pagination_class = CustomPagination pagination_class = CustomPagination
...@@ -34,7 +34,8 @@ class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet): ...@@ -34,7 +34,8 @@ class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet):
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter( allowed = AllowedCompany.objects.filter(
Q(id_number=self.request.user.code) & Q(id_number=self.request.user.code) &
Q(company_pivot=company) Q(company_pivot=company) &
Q(create_change_request=True)
).values('group_pivots') ).values('group_pivots')
queryset = queryset.filter(code__in=allowed) queryset = queryset.filter(code__in=allowed)
page = self.paginate_queryset(queryset) page = self.paginate_queryset(queryset)
......
from rest_framework.views import APIView
from app.applicationlayer.utils import (CustomPagination,
status_message_response)
from app.applicationlayer.management.account.serializer import ChangeRequestList
from app.entities import models
from rest_framework.response import Response
from django.db.models import Q
from rest_framework import status
class UserListTemplate(APIView):
pagination_class = CustomPagination
def get(self, request, *args, **kwargs):
try:
serializer = ChangeRequestList
dept = self.request.query_params['department_code']
# company = self.request.query_params['company_code']
# allowed = models.AllowedCompany.objects.filter(
# Q(group_pivots=dept) &
# Q()
# )
user_list = models.User.objects.filter(
department=dept
).exclude(id=1)
user_list = user_list.exclude(id=request.user.id)
print(user_list.query)
page = self.paginate_queryset(user_list)
if page is not None:
serializer = ChangeRequestList(page, many=True)
message = status_message_response(
200,
'success',
'list of User found',
serializer.data
)
return self.get_paginated_response(message)
except Exception as e:
return Response(
{"message": "this endpoint expect a query params department_code"},
status=status.HTTP_400_BAD_REQUEST
)
@property
def paginator(self):
"""
The paginator instance associated with the view, or `None`.
"""
if not hasattr(self, '_paginator'):
if self.pagination_class is None:
self._paginator = None
else:
self._paginator = self.pagination_class()
return self._paginator
def paginate_queryset(self, queryset):
"""
Return a single page of results, or `None` if pagination is disabled.
"""
if self.paginator is None:
return None
return self.paginator.paginate_queryset(queryset, self.request, view=self)
def get_paginated_response(self, data):
"""
Return a paginated style `Response` object for the given output data.
"""
assert self.paginator is not None
return self.paginator.get_paginated_response(data)
\ No newline at end of file
from rest_framework import serializers
from app.entities.models import Company
class AdminCompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = '__all__'
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import Company
from django.db.models import Q
class ChangeRequestCompanyFilterSet(filters.FilterSet):
# search = filters.CharFilter(method='search_bar', label='search')
# def search_bar(self, queryset, name, value):
# return queryset.filter(
# Q(Companyname__icontains=value) |
# Q(first_name__icontains=value) |
# Q(last_name__icontains=value))
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, AllowedCompany
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.cms.master.template.company.table_filters import (
ChangeRequestCompanyFilterSet
)
from app.helper.decorators import rms
from rest_framework.response import Response
from django.db.models import Q
class ChangeRequestCompanyTemplateViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all()
serializer_class = AdminCompanySerializer
pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = ChangeRequestCompanyFilterSet
ordering_fields = '__all__'
search_fields = ('name',)
http_method_names = ['get']
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter(
Q(id_number=self.request.user.code) &
Q(create_change_request_template=True)
).values('company_pivot')
queryset = queryset.filter(code__in=allowed)
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
from django.forms.models import model_to_dict
class AdminDepartmentSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['company'] = model_to_dict(instance.company)
return ret
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 ChangeRequestDepartmentFilterSet(filters.FilterSet):
# search = filters.CharFilter(method='search_bar', label='search')
# def search_bar(self, queryset, name, value):
# return queryset.filter(
# Q(Companyname__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, AllowedCompany
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.cms.master.template.department.table_filters import (
ChangeRequestDepartmentFilterSet
)
from app.helper.decorators import rms
from django.db.models import Q
from rest_framework.exceptions import ParseError
class ChangeRequestDepartmentTemplateViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all()
serializer_class = serializer.AdminDepartmentSerializer
pagination_class = CustomPagination
lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = ChangeRequestDepartmentFilterSet
ordering_fields = '__all__'
search_fields = ('name', 'company__name', 'code')
# @rms.department_list
def list(self, request, *args, **kwargs):
company = self.request.query_params['company_code']
queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter(
Q(id_number=self.request.user.code) &
Q(company_pivot=company) &
Q(create_change_request_template=True)
).values('group_pivots')
queryset = queryset.filter(code__in=allowed)
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)
...@@ -52,7 +52,16 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet): ...@@ -52,7 +52,16 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet):
lookup_field = 'template_no' lookup_field = 'template_no'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = HeaderFilterSet filterset_class = HeaderFilterSet
ordering_fields = '__all__' ordering_fields = (
'template_no',
'requested_to_template_name',
'requested_to_department__company__name',
'requested_to_department__name',
'requested_to_user__name',
'created',
'created_by_user__name'
)
search_fields = ( search_fields = (
"template_no", "requested_to_template_id", "created_by_user__name", "template_no", "requested_to_template_id", "created_by_user__name",
"created_by_user__code", "created_by_department__name", "created_by_user__code", "created_by_department__name",
......
...@@ -7,12 +7,19 @@ from rest_framework.urlpatterns import format_suffix_patterns ...@@ -7,12 +7,19 @@ from rest_framework.urlpatterns import format_suffix_patterns
from app.applicationlayer.cms.form import views as crform_views from app.applicationlayer.cms.form import views as crform_views
from app.applicationlayer.cms.allowed_company import views as allowed from app.applicationlayer.cms.allowed_company import views as allowed
# MASTERS # MASTERS Form
from app.applicationlayer.cms.master.company.views import ChangeRequestCompanyViewSet from app.applicationlayer.cms.master.template.company.views import ChangeRequestCompanyTemplateViewSet
from app.applicationlayer.cms.master.department.views import ChangeRequestDepartmentViewSet from app.applicationlayer.cms.master.template.department.views import ChangeRequestDepartmentTemplateViewSet
from app.applicationlayer.cms.master.account.views import UserList from app.applicationlayer.cms.master.template.account.views import UserListTemplate
from app.applicationlayer.cms.master.template_list.views import ChangeRequestTemplateHeaderMaster from app.applicationlayer.cms.master.template_list.views import ChangeRequestTemplateHeaderMaster
# MASTERS # MASTERS Form
# MASTERS Template
from app.applicationlayer.cms.master.form.company.views import ChangeRequestCompanyFormViewSet
from app.applicationlayer.cms.master.form.department.views import ChangeRequestDepartmentFormViewSet
from app.applicationlayer.cms.master.form.account.views import UserListForm
# MASTERS Template
# TEMPLATE # TEMPLATE
from app.applicationlayer.cms.template.header import views as header from app.applicationlayer.cms.template.header import views as header
...@@ -54,18 +61,24 @@ router.register(r'allowed-companies', allowed.AllowedCompanyViewSet) ...@@ -54,18 +61,24 @@ router.register(r'allowed-companies', allowed.AllowedCompanyViewSet)
# privilege CMS # privilege CMS
# filter endpoints under Allowed Companies table # filter endpoints under Allowed Companies table
router.register(r'companies', ChangeRequestCompanyViewSet) router.register(r'template-companies', ChangeRequestCompanyTemplateViewSet)
router.register(r'departments', ChangeRequestDepartmentViewSet) router.register(r'template-departments', ChangeRequestDepartmentTemplateViewSet)
router.register(r'allowed-templates', ChangeRequestTemplateHeaderMaster) router.register(r'allowed-templates', ChangeRequestTemplateHeaderMaster)
# filter endpoints under Allowed Companies table # filter endpoints under Allowed Companies table
# filter endpoints under Allowed Companies table
router.register(r'form-companies', ChangeRequestCompanyFormViewSet)
router.register(r'form-departments', ChangeRequestDepartmentFormViewSet)
# filter endpoints under Allowed Companies table
urlpatterns = [ urlpatterns = [
path('', include(router.urls)), path('', include(router.urls)),
path('template-post/', header.ChangeRequestTemplatePost.as_view()), path('template-post/', header.ChangeRequestTemplatePost.as_view()),
path('form-post/', headerform.ChangeRequestFormPost.as_view()), path('form-post/', headerform.ChangeRequestFormPost.as_view()),
# filter endpoints under Allowed Companies table # filter endpoints under Allowed Companies table
path('user-list/', UserList.as_view(), name="User List"), # path('template-user-list/', UserList.as_view(), name="User TemplateList"),
path('form-user-list/', UserListForm.as_view(), name="User List"),
path('template-user-list/', UserListTemplate.as_view(), name="User List"),
# filter endpoints under Allowed Companies table # filter endpoints under Allowed Companies table
] ]
......
...@@ -43,11 +43,9 @@ class UserViewSet(viewsets.ModelViewSet): ...@@ -43,11 +43,9 @@ class UserViewSet(viewsets.ModelViewSet):
) )
search_fields = ( search_fields = (
'name', 'code', 'name', 'code',
'department',
'department__company__name', 'department__company__name',
'department__name', 'department__name',
'email', 'contact_no', 'email', 'contact_no'
'companies'
) )
@rms.user_create @rms.user_create
......
...@@ -22,7 +22,7 @@ class DepartmentViewSet(viewsets.ModelViewSet): ...@@ -22,7 +22,7 @@ class DepartmentViewSet(viewsets.ModelViewSet):
lookup_field = 'code' lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = DepartmentFilterSet filterset_class = DepartmentFilterSet
ordering_fields = '__all__' ordering_fields = ('name', 'company__name', 'code')
search_fields = ('name', 'company__name', 'code') search_fields = ('name', 'company__name', 'code')
@decorators.rms.department_crate @decorators.rms.department_crate
......
...@@ -24,7 +24,10 @@ class ModuleViewSet(viewsets.ModelViewSet): ...@@ -24,7 +24,10 @@ class ModuleViewSet(viewsets.ModelViewSet):
lookup_field = 'code' lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = ModuleFilterSet filterset_class = ModuleFilterSet
ordering_fields = '__all__' ordering_fields = (
'name', 'application__name',
'code', 'component', 'sort_id'
)
search_fields = ( search_fields = (
'name', 'application__name', 'name', 'application__name',
'code', 'component', 'sort_id' 'code', 'component', 'sort_id'
......
...@@ -96,36 +96,13 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer): ...@@ -96,36 +96,13 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
rms = models.Application.objects.filter(id=1).values().first() rms = models.Application.objects.filter(id=1).values().first()
for data in app: for data in app:
# if data.id == 1:
# if user.user_type.upper() == enums.UserTypeEnum.SUPER_USER.value:
# rms_module = models.Module.objects.filter(
# Q(application=rms['code']) &
# Q(parent=0)
# )
# elif user.user_type.upper() != enums.UserTypeEnum.USER.value:
# rms_module = models.Module.objects.filter(
# code="MODULE-20190919-0000006"
# )
# else:
# rms_module = data.modules.all()
# if user.user_type.upper() != enums.UserTypeEnum.USER.value:
# rms_module2 = models.Module.objects.filter(code="MODULE-20190919-0000006")
# datas = rms_module.union(rms_module, rms_module2)
# else:
# datas = rms_module
mod = data.modules.filter(~Q(name__icontains='header')) mod = data.modules.filter(~Q(name__icontains='header'))
if user.user_type.upper() != enums.UserTypeEnum.USER.value: if user.user_type.upper() != enums.UserTypeEnum.USER.value:
if user.user_type.upper() == enums.UserTypeEnum.SUPER_USER.value: if user.user_type.upper() != enums.UserTypeEnum.USER.value:
user_module = models.Module.objects.filter( user_module = models.Module.objects.filter(
name__icontains="user" name__icontains="user"
) )
mod = mod.union(mod, user_module) mod = mod.union(mod, user_module)
else:
mod = user_module = models.Module.objects.filter(
name__icontains="user"
)
# mod = mod.exclude(parent=0)
mod = mod.order_by("parent", "sort_id") mod = mod.order_by("parent", "sort_id")
mod = ModuleSerializer(data=mod, many=True) mod = ModuleSerializer(data=mod, many=True)
......
# Generated by Django 2.2 on 2019-10-01 15:56
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0010_auto_20191001_1200'),
]
operations = [
migrations.AlterModelOptions(
name='changerequestformheader',
options={'ordering': ['-created']},
),
]
# Generated by Django 2.2 on 2019-10-02 10:23
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0011_auto_20191001_1556'),
]
operations = [
migrations.RemoveField(
model_name='changerequestformapprovers',
name='tmp_approver',
),
migrations.RemoveField(
model_name='changerequestformattachments',
name='tmp_attach',
),
migrations.RemoveField(
model_name='changerequestformdetails',
name='tmp_detail',
),
migrations.RemoveField(
model_name='changerequestformheader',
name='old_form_code',
),
migrations.RemoveField(
model_name='changerequestformstakeholders',
name='tmp_stake',
),
]
...@@ -695,19 +695,15 @@ class ChangeRequestFormHeader(BaseHeader): ...@@ -695,19 +695,15 @@ class ChangeRequestFormHeader(BaseHeader):
max_length=255, max_length=255,
null=True, null=True,
blank=True) blank=True)
old_form_code = models.CharField(
max_length=255,
null=True,
blank=True)
requested_to_template_id = models.CharField( requested_to_template_id = models.CharField(
max_length=255) max_length=255)
requested_to_target_date = models.DateTimeField( requested_to_target_date = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
class Meta: class Meta:
db_table = 'change_request_form_headers' db_table = 'change_request_form_headers'
ordering = ['-created']
def __str__(self): def __str__(self):
return f'{self.form_code}' return f'{self.form_code}'
...@@ -744,12 +740,6 @@ class ChangeRequestFormApprovers(BaseApprover): ...@@ -744,12 +740,6 @@ class ChangeRequestFormApprovers(BaseApprover):
date_sent = models.DateTimeField( date_sent = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
tmp_approver = models.ForeignKey(
ChangeRequestTemplateApprovers,
null=True,
blank=True,
on_delete=models.PROTECT,
to_field='code')
class Meta: class Meta:
db_table = 'change_request_form_approvers' db_table = 'change_request_form_approvers'
...@@ -776,12 +766,6 @@ class ChangeRequestFormDetails(BaseDetails): ...@@ -776,12 +766,6 @@ class ChangeRequestFormDetails(BaseDetails):
on_delete=models.PROTECT, on_delete=models.PROTECT,
to_field='form_code', to_field='form_code',
related_name='frm_details') related_name='frm_details')
tmp_detail = models.ForeignKey(
ChangeRequestTemplateDetails,
null=True,
blank=True,
on_delete=models.PROTECT,
to_field='code')
class Meta: class Meta:
db_table = 'change_request_form_details' db_table = 'change_request_form_details'
...@@ -811,12 +795,6 @@ class ChangeRequestFormStakeHolders(BaseStakeholder): ...@@ -811,12 +795,6 @@ class ChangeRequestFormStakeHolders(BaseStakeholder):
date_added = models.DateTimeField( date_added = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
tmp_stake = models.ForeignKey(
ChangeRequestTemplateStakeHolders,
null=True,
blank=True,
on_delete=models.PROTECT,
to_field='code')
class Meta: class Meta:
db_table = 'change_request_form_stakeholders' db_table = 'change_request_form_stakeholders'
...@@ -850,13 +828,6 @@ class ChangeRequestFormAttachments(BaseAttachment): ...@@ -850,13 +828,6 @@ class ChangeRequestFormAttachments(BaseAttachment):
blank=True, blank=True,
null=True null=True
) )
tmp_attach = models.ForeignKey(
ChangeRequestTemplateAttachments,
null=True,
blank=True,
related_name="template_attachments",
on_delete=models.PROTECT,
to_field='code')
class Meta: class Meta:
db_table = 'change_request_form_attachments' db_table = 'change_request_form_attachments'
......
...@@ -20,7 +20,7 @@ def account_created(args): ...@@ -20,7 +20,7 @@ def account_created(args):
FC = FC.replace('{name}', name) FC = FC.replace('{name}', name)
FC = FC.replace('{username}', username) FC = FC.replace('{username}', username)
FC = FC.replace('{password}', password) FC = FC.replace('{password}', password)
FC = FC.replace('[URL]', settings.FRONT_END_URL) FC = FC.replace('{url}', settings.FRONT_END_URL + '/cms/profile') #changed
try: try:
send_mail( send_mail(
subject='OB RMS: Welcome!', subject='OB RMS: Welcome!',
...@@ -55,12 +55,13 @@ def forgot_password(args): ...@@ -55,12 +55,13 @@ def forgot_password(args):
url = args[1] url = args[1]
recipient = args[2] recipient = args[2]
admin = args[3] admin = args[3]
name = args[4]
F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, 'RMS-PASSWORD.html'), 'r') F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, 'RMS-PASSWORD.html'), 'r')
FC = F.read() FC = F.read()
FC = FC.replace('{name}', recipient) FC = FC.replace('{name}', name)
FC = FC.replace('{code}', reset_code) FC = FC.replace('{code}', reset_code)
FC = FC.replace('{url}', url) FC = FC.replace('{url}', url)
...@@ -515,9 +516,9 @@ def routing_table_actions(args): ...@@ -515,9 +516,9 @@ def routing_table_actions(args):
elif args[12].lower() == 'rejected': elif args[12].lower() == 'rejected':
subject = 'Resource Management System - Change Request Rejected' subject = 'Resource Management System - Change Request Rejected'
if args[13].lower() == 'requestor': if args[13].lower() == 'requestor':
email_template = 'RMS-CRREJECTED.html'
elif args[13].lower() == 'vendor/implementor':
email_template = 'RMS-CRREJECTED-VENDOR.html' email_template = 'RMS-CRREJECTED-VENDOR.html'
else:
email_template = 'RMS-CRREJECTED.html'
F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, email_template), 'r') F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, email_template), 'r')
...@@ -534,7 +535,7 @@ def routing_table_actions(args): ...@@ -534,7 +535,7 @@ def routing_table_actions(args):
FC = FC.replace('{priority_level}', priority_level) FC = FC.replace('{priority_level}', priority_level)
FC = FC.replace('{url}', url) FC = FC.replace('{url}', url)
if args[11].lower() == 'rejected': if args[12].lower() == 'rejected':
FC = FC.replace('{remarks}', remarks) FC = FC.replace('{remarks}', remarks)
try: try:
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -5,9 +5,6 @@ ...@@ -5,9 +5,6 @@
</head> </head>
<body style="font-family: arial;"> <body style="font-family: arial;">
<div style="max-width:100px!important;">
<img src="https://s18.directupload.net/images/190807/wjwrxx5i.jpg"/>
</div>
<h3>Resource Management System &#40;RMS&#41;</h3> <h3>Resource Management System &#40;RMS&#41;</h3>
<h3 style="color:#888888;">Reset Password</h3><br> <h3 style="color:#888888;">Reset Password</h3><br>
...@@ -24,7 +21,7 @@ ...@@ -24,7 +21,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -5,10 +5,6 @@ ...@@ -5,10 +5,6 @@
</head> </head>
<body style="font-family: arial;"> <body style="font-family: arial;">
<div style="max-width:100px!important;">
<img src="https://s18.directupload.net/images/190807/wjwrxx5i.jpg"/>
</div>
<h3>Resource Management System &#40;RMS&#41;</h3> <h3>Resource Management System &#40;RMS&#41;</h3>
<h3 style="color:#888888;">New User Created</h3><br> <h3 style="color:#888888;">New User Created</h3><br>
...@@ -18,13 +14,13 @@ ...@@ -18,13 +14,13 @@
<b>Username</b><br>{username}<br><br> <b>Username</b><br>{username}<br><br>
<b>Password</b><br>{password}<br><br> <b>Password</b><br>{password}<br><br>
<p>You may change your password through the <u><a href="http://staging.rms.oneberrysystem.com/cms/profile/" style="text-decoration:underline;color:#007bff;" target="_blank">my profile</a></u> section of RMS any time.</p><br> <p>You may change your password through the <u><a href="{url}" style="text-decoration:underline;color:#007bff;" target="_blank">my profile</a></u> section of RMS any time.</p><br>
<p>Sincerely,</p> <p>Sincerely,</p>
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<p>RMS Team</p><br><br> <p>RMS Team</p><br><br>
<p>Powered by</p> <p>Powered by</p>
<img src="https://s18.directupload.net/images/190807/jaewp4nx.png" width="120px"/> <img src="https://s3-ap-southeast-1.amazonaws.com/oneberry/img/logo_oneberry.png" class="img-responsive" style="width:150px;height:auto;" />
</body> </body>
</html> </html>
\ No newline at end of file
from .base import *
import configparser
DEBUG = True
ALLOWED_HOSTS = ['*']
config = configparser.ConfigParser()
config_file = os.path.join('./', 'env.ini')
config.read(config_file)
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('172.17.0.1', 6379)],
},
},
}
DATABASES = {
'default': {
'ENGINE': config['staging']['DATABASE_ENGINE'],
'NAME': config['staging']['DATABASE_NAME'],
'USER': config['staging']['DATABASE_USER'],
'PASSWORD': config['staging']['DATABASE_PASSWORD'],
'HOST': config['staging']['DATABASE_HOST'],
'PORT': config['staging']['DATABASE_PORT'],
}
}
# ****************
# PROGRAM SETTINGS
# ****************
SESSION_TIMEOUT = config['staging']['SESSION_TIMEOUT']
FRONT_END_URL = config['staging']['FRONT_END_URL']
AUTH_ACCESSS_TOKEN_TIMEOUT = config['staging']['AUTH_ACCESSS_TOKEN_TIMEOUT']
USER_DEFAULT_PASSWORD = config['staging']['USER_DEFAULT_PASSWORD']
REALTIMESERVER_IP = config['staging']['REALTIMESERVER_IP']
# Notification Messages
APPROVER_MESSAGE = config['NOTIFICATION_EMAIL']['APPROVER_MESSAGE']
REQUESTOR_MESSAGE = config['NOTIFICATION_EMAIL']['REQUESTOR_MESSAGE']
REQUESTOR_REJECT_MESSAGE = config['NOTIFICATION_EMAIL']['REQUESTOR_REJECT_MESSAGE']
VENDOR_ACKNOWLEDGE_MESSAGE = config['NOTIFICATION_EMAIL']['VENDOR_ACKNOWLEDGE_MESSAGE']
REQUESTOR_ACKNOWLEDGE_MESSAGE = config['NOTIFICATION_EMAIL']['REQUESTOR_ACKNOWLEDGE_MESSAGE']
REQUESTOR_COMPLETION_MESSAGE = config['NOTIFICATION_EMAIL']['REQUESTOR_COMPLETION_MESSAGE']
VENDOR_ACCEPTANCE_MESSAGE = config['NOTIFICATION_EMAIL']['VENDOR_ACCEPTANCE_MESSAGE']
VENDOR_REJECT_MESSAGE = config['NOTIFICATION_EMAIL']['VENDOR_REJECT_MESSAGE']
#ADMIN PROFILE
CATCH_EMAIL = config['staging']['CATCH_EMAIL']
CR_FRONT_LINK = config['staging']['CR_LINK']
...@@ -51,11 +51,11 @@ DATABASE_USER = ...@@ -51,11 +51,11 @@ DATABASE_USER =
DATABASE_PASSWORD = DATABASE_PASSWORD =
DATABASE_HOST = DATABASE_HOST =
DATABASE_PORT = DATABASE_PORT =
SESSION_TIMEOUT = SESSION_TIMEOUT = 30
FRONT_END_URL = http://staging.rms.oneberrysystem.com FRONT_END_URL = http://staging.rms.oneberrysystem.com
AUTH_ACCESSS_TOKEN_TIMEOUT = 3600 AUTH_ACCESSS_TOKEN_TIMEOUT = 3600
USER_DEFAULT_PASSWORD = password USER_DEFAULT_PASSWORD = password
CATCH_EMAIL = CATCH_EMAIL = gladys@tirsolutions.com
CR_LINK = http://staging.rms.oneberrysystem.com/cms/change-request/form/view CR_LINK = http://staging.rms.oneberrysystem.com/cms/change-request/form/view
REALTIMESERVER_IP = 127.0.0.1:8000 REALTIMESERVER_IP = 127.0.0.1:8000
......
This diff is collapsed.
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