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
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