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):
url = f"{settings.FRONT_END_URL}/forgot-password/reset"\
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.start()
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.start()
main_threading(args, sender.forgot_password)
# main_threading(args, sender.forgot_password)
return Response(data={"detail": "Forgot Password Sent"},
status=status.HTTP_200_OK)
......
......@@ -4,6 +4,14 @@ from app.entities.models import ChangeRequestFormHeader
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:
model = ChangeRequestFormHeader
fields = '__all__'
......@@ -73,7 +73,19 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
lookup_field = 'form_code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
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 = (
"form_code", "status", "requested_to_template_id", "requested_by_user__name",
"requested_by_user__code", "requested_by_department__name",
......@@ -350,6 +362,12 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
def destroy(self, request, *args, **kwargs):
try:
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(
form_code=form_code
)
......@@ -419,6 +437,20 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
{"message": "Change request cannot be deleted due to previous transaction/s"},
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:
return Response(e,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
......@@ -710,7 +742,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
notification_msg, action,
remarks, level
)
else:
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
......
......@@ -8,7 +8,7 @@ from django.db.models import Q
from rest_framework import status
class UserList(APIView):
class UserListForm(APIView):
pagination_class = CustomPagination
......@@ -17,15 +17,17 @@ class UserList(APIView):
try:
serializer = ChangeRequestList
dept = self.request.query_params['department_code']
company = self.request.query_params['company_code']
user_list = models.AllowedCompany.objects.filter(
Q(company_pivot=company) &
Q(group_pivots=dept)
)
user_list = user_list.exclude(id=1).values('id_number')
queryset = models.User.objects.filter(code__in=user_list).order_by('name')
page = self.paginate_queryset(queryset)
# 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:
......
......@@ -6,14 +6,15 @@ 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.company.table_filters import (
from app.applicationlayer.cms.master.form.company.table_filters import (
ChangeRequestCompanyFilterSet
)
from app.helper.decorators import rms
from rest_framework.response import Response
from django.db.models import Q
class ChangeRequestCompanyViewSet(viewsets.ModelViewSet):
class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all()
serializer_class = AdminCompanySerializer
pagination_class = CustomPagination
......@@ -27,7 +28,8 @@ class ChangeRequestCompanyViewSet(viewsets.ModelViewSet):
queryset = self.filter_queryset(self.get_queryset())
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')
queryset = queryset.filter(code__in=allowed)
page = self.paginate_queryset(queryset)
......
......@@ -10,7 +10,7 @@ from app.applicationlayer.utils import (
from django_filters.rest_framework import DjangoFilterBackend
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
)
from app.helper.decorators import rms
......@@ -18,7 +18,7 @@ from django.db.models import Q
from rest_framework.exceptions import ParseError
class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet):
class ChangeRequestDepartmentFormViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all()
serializer_class = serializer.AdminDepartmentSerializer
pagination_class = CustomPagination
......@@ -34,7 +34,8 @@ class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet):
queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter(
Q(id_number=self.request.user.code) &
Q(company_pivot=company)
Q(company_pivot=company) &
Q(create_change_request=True)
).values('group_pivots')
queryset = queryset.filter(code__in=allowed)
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):
lookup_field = 'template_no'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
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 = (
"template_no", "requested_to_template_id", "created_by_user__name",
"created_by_user__code", "created_by_department__name",
......
......@@ -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.allowed_company import views as allowed
# MASTERS
from app.applicationlayer.cms.master.company.views import ChangeRequestCompanyViewSet
from app.applicationlayer.cms.master.department.views import ChangeRequestDepartmentViewSet
from app.applicationlayer.cms.master.account.views import UserList
# MASTERS Form
from app.applicationlayer.cms.master.template.company.views import ChangeRequestCompanyTemplateViewSet
from app.applicationlayer.cms.master.template.department.views import ChangeRequestDepartmentTemplateViewSet
from app.applicationlayer.cms.master.template.account.views import UserListTemplate
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
from app.applicationlayer.cms.template.header import views as header
......@@ -54,18 +61,24 @@ router.register(r'allowed-companies', allowed.AllowedCompanyViewSet)
# privilege CMS
# filter endpoints under Allowed Companies table
router.register(r'companies', ChangeRequestCompanyViewSet)
router.register(r'departments', ChangeRequestDepartmentViewSet)
router.register(r'template-companies', ChangeRequestCompanyTemplateViewSet)
router.register(r'template-departments', ChangeRequestDepartmentTemplateViewSet)
router.register(r'allowed-templates', ChangeRequestTemplateHeaderMaster)
# 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 = [
path('', include(router.urls)),
path('template-post/', header.ChangeRequestTemplatePost.as_view()),
path('form-post/', headerform.ChangeRequestFormPost.as_view()),
# 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
]
......
......@@ -43,11 +43,9 @@ class UserViewSet(viewsets.ModelViewSet):
)
search_fields = (
'name', 'code',
'department',
'department__company__name',
'department__name',
'email', 'contact_no',
'companies'
'email', 'contact_no'
)
@rms.user_create
......
......@@ -22,7 +22,7 @@ class DepartmentViewSet(viewsets.ModelViewSet):
lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = DepartmentFilterSet
ordering_fields = '__all__'
ordering_fields = ('name', 'company__name', 'code')
search_fields = ('name', 'company__name', 'code')
@decorators.rms.department_crate
......
......@@ -24,7 +24,10 @@ class ModuleViewSet(viewsets.ModelViewSet):
lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = ModuleFilterSet
ordering_fields = '__all__'
ordering_fields = (
'name', 'application__name',
'code', 'component', 'sort_id'
)
search_fields = (
'name', 'application__name',
'code', 'component', 'sort_id'
......
......@@ -96,36 +96,13 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
rms = models.Application.objects.filter(id=1).values().first()
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'))
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(
name__icontains="user"
)
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 = 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):
max_length=255,
null=True,
blank=True)
old_form_code = models.CharField(
max_length=255,
null=True,
blank=True)
requested_to_template_id = models.CharField(
max_length=255)
requested_to_target_date = models.DateTimeField(
blank=True,
null=True)
class Meta:
db_table = 'change_request_form_headers'
ordering = ['-created']
def __str__(self):
return f'{self.form_code}'
......@@ -744,12 +740,6 @@ class ChangeRequestFormApprovers(BaseApprover):
date_sent = models.DateTimeField(
blank=True,
null=True)
tmp_approver = models.ForeignKey(
ChangeRequestTemplateApprovers,
null=True,
blank=True,
on_delete=models.PROTECT,
to_field='code')
class Meta:
db_table = 'change_request_form_approvers'
......@@ -776,12 +766,6 @@ class ChangeRequestFormDetails(BaseDetails):
on_delete=models.PROTECT,
to_field='form_code',
related_name='frm_details')
tmp_detail = models.ForeignKey(
ChangeRequestTemplateDetails,
null=True,
blank=True,
on_delete=models.PROTECT,
to_field='code')
class Meta:
db_table = 'change_request_form_details'
......@@ -811,12 +795,6 @@ class ChangeRequestFormStakeHolders(BaseStakeholder):
date_added = models.DateTimeField(
blank=True,
null=True)
tmp_stake = models.ForeignKey(
ChangeRequestTemplateStakeHolders,
null=True,
blank=True,
on_delete=models.PROTECT,
to_field='code')
class Meta:
db_table = 'change_request_form_stakeholders'
......@@ -850,13 +828,6 @@ class ChangeRequestFormAttachments(BaseAttachment):
blank=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:
db_table = 'change_request_form_attachments'
......
......@@ -20,7 +20,7 @@ def account_created(args):
FC = FC.replace('{name}', name)
FC = FC.replace('{username}', username)
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:
send_mail(
subject='OB RMS: Welcome!',
......@@ -55,12 +55,13 @@ def forgot_password(args):
url = args[1]
recipient = args[2]
admin = args[3]
name = args[4]
F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, 'RMS-PASSWORD.html'), 'r')
FC = F.read()
FC = FC.replace('{name}', recipient)
FC = FC.replace('{name}', name)
FC = FC.replace('{code}', reset_code)
FC = FC.replace('{url}', url)
......@@ -515,9 +516,9 @@ def routing_table_actions(args):
elif args[12].lower() == 'rejected':
subject = 'Resource Management System - Change Request Rejected'
if args[13].lower() == 'requestor':
email_template = 'RMS-CRREJECTED.html'
elif args[13].lower() == 'vendor/implementor':
email_template = 'RMS-CRREJECTED-VENDOR.html'
else:
email_template = 'RMS-CRREJECTED.html'
F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, email_template), 'r')
......@@ -534,7 +535,7 @@ def routing_table_actions(args):
FC = FC.replace('{priority_level}', priority_level)
FC = FC.replace('{url}', url)
if args[11].lower() == 'rejected':
if args[12].lower() == 'rejected':
FC = FC.replace('{remarks}', remarks)
try:
......
......@@ -25,7 +25,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -25,7 +25,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -5,9 +5,6 @@
</head>
<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 style="color:#888888;">Reset Password</h3><br>
......@@ -24,7 +21,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -28,7 +28,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -26,7 +26,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -29,7 +29,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -29,7 +29,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -5,10 +5,6 @@
</head>
<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 style="color:#888888;">New User Created</h3><br>
......@@ -18,13 +14,13 @@
<b>Username</b><br>{username}<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>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -16,7 +16,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -27,7 +27,7 @@
<p>RMS Team</p><br><br>
<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>
</html>
\ No newline at end of file
......@@ -28,7 +28,7 @@
<p>RMS Team</p><br><br>
<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>
</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 =
DATABASE_PASSWORD =
DATABASE_HOST =
DATABASE_PORT =
SESSION_TIMEOUT =
SESSION_TIMEOUT = 30
FRONT_END_URL = http://staging.rms.oneberrysystem.com
AUTH_ACCESSS_TOKEN_TIMEOUT = 3600
USER_DEFAULT_PASSWORD = password
CATCH_EMAIL =
CATCH_EMAIL = gladys@tirsolutions.com
CR_LINK = http://staging.rms.oneberrysystem.com/cms/change-request/form/view
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