Commit 7dddab35 authored by Gladys Forte's avatar Gladys Forte

Merge pull request #65 in RMS/api-main-service from gladys-dev2 to RMSv2

* commit '2f4006c7':
  change request serializers
parents 449c689f 2f4006c7
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
class ChangeRequestTemplatesSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateHeader
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
class ChangeRequestTemplateApproversSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateApprovers
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
class ChangeRequestTemplateStakeHoldersSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateStakeHolders
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
class ChangeRequestTemplateAttachmentsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateAttachments
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
class ChangeRequestTemplateDetailsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateDetails
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
class ChangeRequestFormHeaderSerializer(
serializers.ModelSerializer
):
# def to_representation(self, instance):
# ret = super().to_representation(instance)
# try:
# # id_number = self.context.get('request').META.get('HTTP_ACCOUNT_NO')
# id_number = "Acct-20190813-0000137"
# current_level = models.ChangeRequestFormApprovers.objects.filter(
# Q(form_code=ret['form_code']) &
# Q(deleted_at=None) &
# (Q(action='') | Q(action=None))
# ).order_by('level')
# if current_level.first()['user'] == id_number:
# if instance.status.lower() == 'rejected':
# approver = 'No'
# elif instance.status.lower() == 'cancelled':
# approver = 'No'
# elif instance.status.lower() == 'closed':
# approver = 'No'
# else:
# approver = 'Yes'
# else:
# approver = 'No'
# ret['action'] = approver
# return ret
# except Exception as e:
# ret['action'] = "No"
# return ret
class Meta:
model = models.ChangeRequestFormHeader
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
class ChangeRequestFormApproversSerializer(
serializers.ModelSerializer
):
# def to_representation(self, instance):
# ret = super().to_representation(instance)
# try:
# user = instance.user
# user_details = get_account_details(user)
# name = user_details['name']
# group = user_details['groups'][0]['name']
# company = user_details['groups'][0]['company__name']
# ret['name'] = name
# ret['department'] = group
# ret['company'] = company
# return ret
# except Exception as e:
# ret['name'] = "none"
# ret['department'] = "none"
# ret['company'] = "none"
# return ret
class Meta:
model = models.ChangeRequestFormApprovers
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
class ChangeRequestFormStakeHoldersSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestFormStakeHolders
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
class ChangeRequestFormAttachmentsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestFormAttachments
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
class ChangeRequestFormDetailsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestFormDetails
fields = '__all__'
read_only_fields = ['created', 'deleted_at']
from django.shortcuts import render
from rest_framework import viewsets as meviewsets
from app.applicationlayer.management.changerequest import serializers
from app.entities import models
from app.applicationlayer import paginators
from datetime import datetime
from rest_framework.response import Response
from django.http import Http404
from django.db.models import Q
import requests
from rest_framework.views import APIView
class ChangeRequestTemplatePost(APIView):
# @transaction.atomic()
def post(self, request):
visitor_info = request.data
try:
data_list_inte = []
data_list_anse = []
time = timezone.now()
data_log = {
'title': visitor_info['title'],
'first_name': visitor_info['first_name'],
'last_name': visitor_info['last_name'],
'badge_name': visitor_info['badge_name'],
'jobtitle': visitor_info['jobtitle'],
'email': visitor_info['email'],
'telno': visitor_info['telno'],
'mobileno': visitor_info['mobileno'],
'pdpa_accepted': visitor_info['pdpa_accepted'],
'qrcode': "None",
'reg_mode': 'STANDARD',
'reg_type': 'WALKIN',
'category': visitor_info['category'],
'created_at': time,
'updated_at': time
}
add = visitor_info['address']
comp = visitor_info['company']
inte = visitor_info['interests']
answer = visitor_info['survey_answers']
sp1 = transaction.savepoint() # nothing will save to db
# create visitorinfo
serializer = VisitorsInfoSerializer(data=data_log)
if serializer.is_valid(raise_exception=True):
serializer.save()
x = serializer.data['visitor_id']
print(x)
add['visitor'] = x
add['created_at'] = time
add['updated_at'] = time
comp['visitor'] = x
comp['created_at'] = time
comp['updated_at'] = time
# create visitoraddressinfo
serializerAdd = VisitorsAddressInfoSerializer(data=add)
if serializerAdd.is_valid(raise_exception=True):
serializerAdd.save()
# create visitorcompanyinfo
serializerComp = VisitorsCompanyInfoSerializer(data=comp)
if serializerComp.is_valid(raise_exception=True):
serializerComp.save()
# create interest
for i in inte:
i['visitor'] = x
i['created_at'] = time
i['updated_at'] = time
data_list_inte.append(i)
# inte returns list of interest needs many=True
serializerInte = InterestSerializer(data=data_list_inte, many=True)
if serializerInte.is_valid(raise_exception=True):
serializerInte.save()
# create survey_answer
for a in answer:
a['visitor'] = x
a['created_at'] = time
a['updated_at'] = time
data_list_anse.append(a)
serializerAns = SurveyAnswerSerializer(data=data_list_anse,
many=True)
if serializerAns.is_valid(raise_exception=True):
serializerAns.save()
# create qr code
qrcode_formatted = qr_code_generator(visitor_info['first_name'],
visitor_info['last_name'],
visitor_info['title'],
add['company_name'],
visitor_info['telno'],
visitor_info['email'], x)
mystring = qrcode_formatted.replace('\n', '')
# print(mystring)
VisitorsInfo.objects.filter(
visitor_id=x).update(qrcode_vcard=qrcode_formatted,
qrcode=mystring)
# save qrdata with new line
get_qr_blob(qrcode_formatted, x)
# response data
res = []
response = {
'visitor_id': x,
'first_name': visitor_info['first_name'],
'last_name': visitor_info['last_name'],
'badge_name': visitor_info['badge_name'],
'jobtitle': visitor_info['jobtitle'],
'qrcode': mystring,
'position': comp['position'],
'company': add['company_name']
}
res.append(response)
message = {
'code': 201,
'status': 'success',
'message': 'Visitor information successfully registered.',
'results': res
}
# remove this on master API
# perform syncing here
# thread = threading.Thread(target=upload_visitors_to_master())
# thread.daemon = True # Daemonize thread
# thread.start()
# print("Threaded: Sync Visitors")
return Response(message, status=status.HTTP_201_CREATED)
except ValidationError as e:
transaction.savepoint_rollback(sp1)
message = {
'code': 400,
'status': 'failed',
'message': str(e),
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
transaction.savepoint_rollback(sp1)
message = {
'code': 500,
'status': 'failed',
'message': 'Request was not able to process' + str(e),
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# Generated by Django 2.2 on 2019-09-04 18:55
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('entities', '0005_auto_20190904_1635'),
]
operations = [
migrations.RemoveField(
model_name='notification',
name='form_header_code',
),
migrations.AddField(
model_name='notification',
name='form_code',
field=models.ForeignKey(default=django.utils.timezone.now, on_delete=django.db.models.deletion.DO_NOTHING, to='entities.ChangeRequestFormHeader', to_field='form_code'),
preserve_default=False,
),
migrations.AlterField(
model_name='changerequestformapprovers',
name='form_code',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='frm_approvers', to='entities.ChangeRequestFormHeader', to_field='form_code'),
),
migrations.AlterField(
model_name='changerequestformattachments',
name='form_code',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='frm_attachments', to='entities.ChangeRequestFormHeader', to_field='form_code'),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='field_idx',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='field_props',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='field_ref',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='field_val',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequestformdetails',
name='form_code',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='frm_details', to='entities.ChangeRequestFormHeader', to_field='form_code'),
),
migrations.AlterField(
model_name='changerequestformstakeholders',
name='form_code',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='frm_stakes', to='entities.ChangeRequestFormHeader', to_field='form_code'),
),
migrations.AlterField(
model_name='changerequesttemplateapprovers',
name='template_no',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='tmp_approvers', to='entities.ChangeRequestTemplateHeader', to_field='template_no'),
),
migrations.AlterField(
model_name='changerequesttemplateattachments',
name='template_no',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='tmp_attachments', to='entities.ChangeRequestTemplateHeader', to_field='template_no'),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='field_idx',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='field_props',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='field_ref',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='field_val',
field=models.TextField(max_length=255),
),
migrations.AlterField(
model_name='changerequesttemplatedetails',
name='template_no',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='tmp_details', to='entities.ChangeRequestTemplateHeader', to_field='template_no'),
),
migrations.AlterField(
model_name='changerequesttemplatestakeholders',
name='template_no',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='tmp_stakes', to='entities.ChangeRequestTemplateHeader', to_field='template_no'),
),
]
......@@ -98,3 +98,4 @@ class AuditClass(BaseAuditClass):
def _str__(self):
return self.name
......@@ -59,7 +59,10 @@ class Module(AuditClass):
)
parent = models.IntegerField()
sort_id = models.IntegerField()
component = models.CharField(max_length=255, null=True, blank=True)
component = models.CharField(
max_length=255,
null=True,
blank=True)
class Meta:
db_table = 'modules'
......@@ -325,121 +328,154 @@ class EntityLog(AuditClass):
class Meta:
db_table = 'entity_logs'
"""
**********************
*** NOTIFICATION TABLES ***
*** CHANGE REQUEST TABLES ***
**********************
"""
class Notification(models.Model):
code = models.CharField(unique=True, max_length=255) # primary key
form_header_code = models.CharField(max_length=255, null=True, blank=True)
# form_header_code = models.ForeignKey(ChangeRequestFormHeader, on_delete=models.DO_NOTHING,
# to_field='code')
app = models.ForeignKey(Application, on_delete=models.DO_NOTHING,
to_field='code')
notif_type = models.CharField(
choices=[(tag.value, tag.value) for tag in enums.NotifTypeEnum],
default=enums.NotifTypeEnum.TASK.value,
max_length=20
)
account_no = models.ForeignKey(User, on_delete=models.DO_NOTHING,
to_field='code',
related_name='receiver_account_no')
message = models.CharField(max_length=255, null=True, blank=True)
is_read = models.BooleanField(default=False, null=True)
sender_account_no = models.ForeignKey(User, on_delete=models.DO_NOTHING,
to_field='code',
related_name='sender_account_no')
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'notifications'
class BaseHeader(models.Model):
def save(self, *args, **kwargs):
super(Notification, self).save(*args, **kwargs)
code = number_generator(enums.GenerateCode.NOTIFICATION.value, self.id)
Notification.objects.filter(id=self.id).update(code=code)
requested_to_company = models.ForeignKey(
Company,
on_delete=models.DO_NOTHING,
to_field='code')
requested_to_department = models.ForeignKey(
Department,
on_delete=models.DO_NOTHING,
to_field='code')
"""
**********************
*** CHANGE REQUEST TABLES ***
**********************
"""
requested_to_user = models.ForeignKey(
User,
on_delete=models.DO_NOTHING,
to_field='code')
class BaseHeader(models.Model):
# all user mean id_number on database
requested_to_company = models.ForeignKey(Company, on_delete=models.DO_NOTHING,
to_field='code')
requested_to_department = models.ForeignKey(Department, on_delete=models.DO_NOTHING,
to_field='code')
requested_to_user = models.ForeignKey(User, on_delete=models.DO_NOTHING,
to_field='code')
requested_to_template_name = models.CharField(max_length=255)
requested_to_template_id = models.CharField(max_length=255)
requested_to_objective = models.CharField(max_length=255, blank=True, null=True)
requested_to_target_date = models.DateTimeField(blank=True, null=True)
requested_to_objective = models.CharField(
max_length=255,
blank=True,
null=True)
requested_to_target_date = models.DateTimeField(
blank=True,
null=True)
requested_to_priority = models.CharField(max_length=255)
description = models.CharField(max_length=255, blank=True, null=True)
created = models.DateTimeField(blank=True, null=True)
deleted_at = models.DateTimeField(blank=True, null=True)
description = models.CharField(
max_length=255,
blank=True,
null=True)
created = models.DateTimeField(
blank=True,
null=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta:
abstract = True
class BaseApprover(models.Model):
level = models.CharField(max_length=50, blank=True, null=True)
user = models.ForeignKey(User, on_delete=models.DO_NOTHING,
to_field='code')
level = models.CharField(
max_length=50,
blank=True,
null=True)
user = models.ForeignKey(
User,
on_delete=models.DO_NOTHING,
to_field='code')
delegation = models.CharField(max_length=50)
created = models.DateTimeField(blank=True, null=True)
deleted_at = models.DateTimeField(blank=True, null=True)
created = models.DateTimeField(
blank=True,
null=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta:
abstract = True
class BaseStakeholder(models.Model):
user = models.ForeignKey(User, on_delete=models.DO_NOTHING,
to_field='code')
date_added = models.DateTimeField(blank=True, null=True)
delegation = models.CharField(max_length=255, blank=True, null=True)
created = models.DateTimeField(blank=True, null=True)
deleted_at = models.DateTimeField(blank=True, null=True)
user = models.ForeignKey(
User,
on_delete=models.DO_NOTHING,
to_field='code')
date_added = models.DateTimeField(
blank=True,
null=True)
delegation = models.CharField(
max_length=255,
blank=True,
null=True)
created = models.DateTimeField(
blank=True,
null=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta:
abstract = True
class BaseAttachment(models.Model):
upload_no = models.CharField(max_length=255, blank=True, null=True)
upload_no = models.CharField(
max_length=255,
blank=True,
null=True)
attachment_type = models.CharField(max_length=255)
attachment_name = models.CharField(max_length=255)
file_name = models.CharField(max_length=255, blank=True, null=True)
description = models.CharField(max_length=255, blank=True, null=True)
uploaded_by = models.ForeignKey(User, on_delete=models.DO_NOTHING,
to_field='code')
file_upload = models.CharField(max_length=255, blank=True, null=True)
created = models.DateTimeField(blank=True, null=True)
deleted_at = models.DateTimeField(blank=True, null=True)
file_name = models.CharField(
max_length=255,
blank=True,
null=True)
description = models.CharField(
max_length=255,
blank=True,
null=True)
uploaded_by = models.ForeignKey(
User,
on_delete=models.DO_NOTHING,
to_field='code')
file_upload = models.CharField(
max_length=255,
blank=True,
null=True)
created = models.DateTimeField(
blank=True,
null=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta:
abstract = True
class BaseDetails(models.Model):
field_idx = models.CharField(max_length=255)
field_ref = models.CharField(max_length=255)
field_val = models.CharField(max_length=255)
field_props = models.CharField(max_length=255)
field_idx = models.TextField(max_length=255)
field_ref = models.TextField(max_length=255)
field_val = models.TextField(max_length=255)
field_props = models.TextField(max_length=255)
created = models.DateTimeField(blank=True, null=True)
deleted_at = models.DateTimeField(blank=True, null=True)
created = models.DateTimeField(
blank=True,
null=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta:
abstract = True
......@@ -452,14 +488,21 @@ TEMPLATES
'''
class ChangeRequestTemplateHeader(BaseHeader):
template_no = models.CharField(unique=True, max_length=255)
created_by_user = models.ForeignKey(User, on_delete=models.DO_NOTHING,
to_field='code',
related_name='created_by_user')
template_no = models.CharField(
unique=True,
max_length=255)
created_by_department = models.ForeignKey(Department, on_delete=models.DO_NOTHING,
to_field='code',
related_name='created_by_department')
created_by_user = models.ForeignKey(
User,
on_delete=models.DO_NOTHING,
to_field='code',
related_name='created_by_user')
created_by_department = models.ForeignKey(
Department,
on_delete=models.DO_NOTHING,
to_field='code',
related_name='created_by_department')
class Meta:
db_table = 'change_request_template_headers'
......@@ -475,11 +518,21 @@ class ChangeRequestTemplateHeader(BaseHeader):
class ChangeRequestTemplateApprovers(BaseApprover):
code = models.CharField(unique=True, max_length=255) # primary key
template_no = models.ForeignKey(ChangeRequestTemplateHeader, on_delete=models.DO_NOTHING,
to_field='template_no')
date_sent = models.DateTimeField(blank=True, null=True)
action = models.CharField(max_length=50, blank=True, null=True)
code = models.CharField(
unique=True,
max_length=255) # primary key
template_no = models.ForeignKey(
ChangeRequestTemplateHeader,
on_delete=models.DO_NOTHING,
to_field='template_no',
related_name='tmp_approvers')
date_sent = models.DateTimeField(
blank=True,
null=True)
action = models.CharField(
max_length=50,
blank=True,
null=True)
class Meta:
db_table = 'change_request_template_approvers'
......@@ -493,9 +546,14 @@ class ChangeRequestTemplateApprovers(BaseApprover):
class ChangeRequestTemplateStakeHolders(BaseStakeholder):
code = models.CharField(unique=True, max_length=255) # primary key
template_no = models.ForeignKey(ChangeRequestTemplateHeader, on_delete=models.DO_NOTHING,
to_field='template_no')
code = models.CharField(
unique=True,
max_length=255) # primary key
template_no = models.ForeignKey(
ChangeRequestTemplateHeader,
on_delete=models.DO_NOTHING,
to_field='template_no',
related_name='tmp_stakes')
class Meta:
db_table = 'change_request_template_stakeholders'
......@@ -509,9 +567,14 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
class ChangeRequestTemplateAttachments(BaseAttachment):
attachment_no = models.CharField(max_length=255, unique=True)
template_no = models.ForeignKey(ChangeRequestTemplateHeader, on_delete=models.DO_NOTHING,
to_field='template_no')
attachment_no = models.CharField(
max_length=255,
unique=True)
template_no = models.ForeignKey(
ChangeRequestTemplateHeader,
on_delete=models.DO_NOTHING,
to_field='template_no',
related_name='tmp_attachments')
class Meta:
db_table = 'change_request_template_attachments'
......@@ -525,9 +588,14 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
class ChangeRequestTemplateDetails(BaseDetails):
code = models.CharField(max_length=255, unique=True)
template_no = models.ForeignKey(ChangeRequestTemplateHeader, on_delete=models.DO_NOTHING,
to_field='template_no')
code = models.CharField(
max_length=255,
unique=True)
template_no = models.ForeignKey(
ChangeRequestTemplateHeader,
on_delete=models.DO_NOTHING,
to_field='template_no',
related_name='tmp_details')
class Meta:
db_table = 'change_request_template_details'
......@@ -539,7 +607,6 @@ class ChangeRequestTemplateDetails(BaseDetails):
pass
'''
*****
FORMS
......@@ -547,22 +614,44 @@ FORMS
'''
class ChangeRequestFormHeader(BaseHeader):
form_code = models.CharField(max_length=255, unique=True)
requested_by_user = models.ForeignKey(User, on_delete=models.DO_NOTHING,
to_field='code',
related_name='requested_by_user')
cancel_date = models.DateTimeField(null=True, blank=True)
requested_by_department = models.ForeignKey(Department, on_delete=models.DO_NOTHING,
to_field='code',
related_name='requested_by_department')
template_no = models.ForeignKey(ChangeRequestTemplateHeader, on_delete=models.DO_NOTHING,
to_field='template_no')
form_code = models.CharField(
max_length=255,
unique=True)
requested_by_user = models.ForeignKey(
User,
on_delete=models.DO_NOTHING,
to_field='code',
related_name='requested_by_user')
cancel_date = models.DateTimeField(
null=True,
blank=True)
requested_by_department = models.ForeignKey(
Department,
on_delete=models.DO_NOTHING,
to_field='code',
related_name='requested_by_department')
template_no = models.ForeignKey(
ChangeRequestTemplateHeader,
on_delete=models.DO_NOTHING,
to_field='template_no')
status = models.CharField(max_length=50)
company_desc = models.CharField(max_length=255, null=True, blank=True)
department_desc = models.CharField(max_length=255, null=True, blank=True)
requested_desc = models.CharField(max_length=255, null=True, blank=True)
old_form_code = models.CharField(max_length=255, null=True, blank=True)
company_desc = models.CharField(
max_length=255,
null=True,
blank=True)
department_desc = models.CharField(
max_length=255,
null=True,
blank=True)
requested_desc = models.CharField(
max_length=255,
null=True,
blank=True)
old_form_code = models.CharField(
max_length=255,
null=True,
blank=True)
class Meta:
db_table = 'change_request_form_headers'
......@@ -574,10 +663,18 @@ class ChangeRequestFormHeader(BaseHeader):
class ChangeRequestFormApprovers(BaseApprover):
code = models.CharField(unique=True, max_length=255) # primary key
form_code = models.ForeignKey(ChangeRequestFormHeader, on_delete=models.DO_NOTHING,
to_field='form_code')
remarks = models.CharField(max_length=255, null=True, blank=True)
code = models.CharField(
unique=True,
max_length=255) # primary key
form_code = models.ForeignKey(
ChangeRequestFormHeader,
on_delete=models.DO_NOTHING,
to_field='form_code',
related_name='frm_approvers')
remarks = models.CharField(
max_length=255,
null=True,
blank=True)
class Meta:
db_table = 'change_request_form_approvers'
......@@ -591,9 +688,14 @@ class ChangeRequestFormApprovers(BaseApprover):
class ChangeRequestFormDetails(BaseDetails):
code = models.CharField(unique=True, max_length=255) # primary key
form_code = models.ForeignKey(ChangeRequestFormHeader, on_delete=models.DO_NOTHING,
to_field='form_code')
code = models.CharField(
unique=True,
max_length=255) # primary key
form_code = models.ForeignKey(
ChangeRequestFormHeader,
on_delete=models.DO_NOTHING,
to_field='form_code',
related_name='frm_details')
class Meta:
db_table = 'change_request_form_details'
......@@ -607,9 +709,14 @@ class ChangeRequestFormDetails(BaseDetails):
class ChangeRequestFormStakeHolders(BaseStakeholder):
code = models.CharField(unique=True, max_length=255) # primary key
form_code = models.ForeignKey(ChangeRequestFormHeader, on_delete=models.DO_NOTHING,
to_field='form_code')
code = models.CharField(
unique=True,
max_length=255) # primary key
form_code = models.ForeignKey(
ChangeRequestFormHeader,
on_delete=models.DO_NOTHING,
to_field='form_code',
related_name='frm_stakes')
class Meta:
db_table = 'change_request_form_stakeholders'
......@@ -623,9 +730,14 @@ class ChangeRequestFormStakeHolders(BaseStakeholder):
class ChangeRequestFormAttachments(BaseAttachment):
code = models.CharField(unique=True, max_length=255) # primary key
form_code = models.ForeignKey(ChangeRequestFormHeader, on_delete=models.DO_NOTHING,
to_field='form_code')
code = models.CharField(
unique=True,
max_length=255) # primary key
form_code = models.ForeignKey(
ChangeRequestFormHeader,
on_delete=models.DO_NOTHING,
to_field='form_code',
related_name='frm_attachments')
class Meta:
db_table = 'change_request_form_attachments'
......@@ -636,3 +748,55 @@ class ChangeRequestFormAttachments(BaseAttachment):
ChangeRequestFormAttachments.objects.filter(id=self.id).update(code=code)
pass
"""
**********************
*** NOTIFICATION TABLES ***
**********************
"""
class Notification(models.Model):
code = models.CharField(
unique=True,
max_length=255) # primary key
form_code = models.ForeignKey(
ChangeRequestFormHeader,
on_delete=models.DO_NOTHING,
to_field='form_code')
app = models.ForeignKey(
Application,
on_delete=models.DO_NOTHING,
to_field='code')
notif_type = models.CharField(
choices=[(tag.value, tag.value) for tag in enums.NotifTypeEnum],
default=enums.NotifTypeEnum.TASK.value,
max_length=20
)
account_no = models.ForeignKey(
User,
on_delete=models.DO_NOTHING,
to_field='code',
related_name='receiver_account_no')
message = models.CharField(
max_length=255,
null=True,
blank=True)
is_read = models.BooleanField(
default=False,
null=True)
sender_account_no = models.ForeignKey(
User, on_delete=models.DO_NOTHING,
to_field='code',
related_name='sender_account_no')
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'notifications'
def save(self, *args, **kwargs):
super(Notification, self).save(*args, **kwargs)
code = number_generator(enums.GenerateCode.NOTIFICATION.value, self.id)
Notification.objects.filter(id=self.id).update(code=code)
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