From ebed65f723f57e72ab8b377fbdc401ee02422992 Mon Sep 17 00:00:00 2001 From: Rupika Date: Mon, 4 Feb 2019 09:51:36 -0800 Subject: [PATCH] Committing my work from api-remove-endpoint to new branch --- back/backend/urls.py | 11 +- back/backend/views.py | 280 +++++++++++++++++++++--------------------- 2 files changed, 145 insertions(+), 146 deletions(-) diff --git a/back/backend/urls.py b/back/backend/urls.py index 921ff01..2ff9fcc 100644 --- a/back/backend/urls.py +++ b/back/backend/urls.py @@ -5,14 +5,13 @@ from rest_framework.urlpatterns import format_suffix_patterns from . import views urlpatterns = [ - # path('', views.List.as_view()), - # path('/', views.Detail.as_view()), - path('print', views.print_all_reports), + # path('print', views.get_reports), + # path('print', views.get_sections), + - # # path('report', views.report), - # path('reports', views.reports), - # path('report/', views.report_detail), + path('reports', views.reports), + path('report/', views.report_detail), # path('report//section/', views.section), # path('account', views.account), # path('account/login', views.account_login), diff --git a/back/backend/views.py b/back/backend/views.py index 2c95510..4974f8c 100644 --- a/back/backend/views.py +++ b/back/backend/views.py @@ -6,83 +6,67 @@ from django.http import JsonResponse from .models import * from .serializers import * -# Sample view using generics -# class List(generics.ListCreateAPIView): -# queryset = Report.objects.all() -# serializer_class = ReportSerializer -# -# class Detail(generics.RetrieveUpdateDestroyAPIView): -# queryset = Report.objects.all() -# serializer_class = ReportSerializer - - -def print_all_reports(self): - data = {} - queryset = Report.objects.all() +# function that prints all the reports +def get_reports(report_pk): + # queryset = Report.objects.all() + queryset = Report.objects.filter(id=report_pk) for i in queryset: data = { - "title": i.title, - "date_created": i.date_created, - "submitted": i.submitted, - "date_submitted": i.date_submitted, - "sections": get_sections(i.id), + "report_pk": report_pk, + "title": i.title, + "date_created": i.date_created, + "submitted": i.submitted, + "date_submitted": i.date_submitted, } + # append the sections for each report + data.update(get_sections(i.id)) - return JsonResponse(data) + # return JsonResponse(data) + return data +# function that gets all the sections +# takes report_id param def get_sections(r_id): - section_set = {"section_set": []} + # create a dict of arrays for section + section_set = {"sections": []} queryset = Section.objects.filter(report_id=r_id) # queryset = Section.objects.all() for i in queryset: - inner_section = { - "id": i.id, - "completed": i.completed, - "title": i.title, - "html_description": i.html_description, - "fields": get_fields(i.id), + data = { + "id": i.id, + "completed": i.completed, + "title": i.title, + "html_description": i.html_description, } - # section_set.update(inner_section) - section_set["section_set"].append(inner_section.copy()) + # append the fields for corresponding section + data.update(get_fields(i.id)) + # append section to the array + section_set["sections"].append(data.copy()) return section_set - # return JsonResponse(full) - +# function that gets all the fields +# takes section_id param def get_fields(s_id): + # create dict of arrays for fields field_set = {"fields": []} queryset = Field.objects.filter(section_id=s_id) # queryset = Field.objects.all() - count = 0 for i in queryset: - temp = "field" + str(count) - inner_field = {i.label: { - "label": i.label, - "type": i.type, - "value": i.number, + data = {i.label: { + "label": i.label, + "type": i.type, + "value": i.number, }} - print("PRINT FIELD") - print(i.label) - print(i.type) - print(i.number) - # field_set.append(inner_field) - field_set["fields"].append(inner_field.copy()) - # field_set.update(inner_field) - count += 1 + # append the fields to array + # use copy() to avoid overwriting + field_set["fields"].append(data.copy()) - print("COUNT = {}".format(count)) return field_set - # return JsonResponse(field_set) - - - - - # API Endpoints - @api_view(['POST']) def report(request): ''' @@ -153,105 +137,121 @@ def report(request): # List of reports @api_view(['GET']) def reports(request): - data = { - "reports": [ - { - "report_pk": 1, - "title": "2018 Portland trip", - "date_created": "2018-05-22T14:56:28.000Z", - "state": "created", - "date_submitted": "0000-00-00T00:00:00.000Z" - }, - { - "report_pk": 2, - "title": "2017 Los Angeles trip", - "date_created": "2017-05-22T14:56:28.000Z", - "state": "submitted", - "date_submitted": "2017-07-22T14:56:28.000Z" - }, - { - "report_pk": 3, - "title": "2017 Denver trip", - "date_created": "2015-04-22T14:56:28.000Z", - "state": "accepted", - "date_submitted": "2015-06-22T14:56:28.000Z" - } - ] - } - return JsonResponse(data) + report_set = {"reports": []} + queryset = Report.objects.all() + for i in queryset: + data = { + "title": i.title, + "date_created": i.date_created, + "submitted": i.submitted, + "date_submitted": i.date_submitted, + } + # append the sections for each report + report_set["reports"].append(data.copy()) + + return JsonResponse(report_set) + + # data = { + # "reports": [ + # { + # "report_pk": 1, + # "title": "2018 Portland trip", + # "date_created": "2018-05-22T14:56:28.000Z", + # "state": "created", + # "date_submitted": "0000-00-00T00:00:00.000Z" + # }, + # { + # "report_pk": 2, + # "title": "2017 Los Angeles trip", + # "date_created": "2017-05-22T14:56:28.000Z", + # "state": "submitted", + # "date_submitted": "2017-07-22T14:56:28.000Z" + # }, + # { + # "report_pk": 3, + # "title": "2017 Denver trip", + # "date_created": "2015-04-22T14:56:28.000Z", + # "state": "accepted", + # "date_submitted": "2015-06-22T14:56:28.000Z" + # } + # ] + # } + # return JsonResponse(data) @api_view(['GET', 'PUT', 'DELETE']) def report_detail(request, report_pk): if request.method == 'GET': - data = { - "report_pk": report_pk, - "title": "2018 Portland trip", - "date_created": "2018-05-22T14:56:28.000Z", - "submitted": False, - "date_submitted": "0000-00-00T00:00:00.000Z", - "sections": [ - { - "id": 1, - "completed": True, - "title": "Flight Info", - "html_description": "

Enter flight details here.

", - "fields": { - "international": { - "label": "International flight", - "type": "boolean", - "value": True - }, - "travel_date": { - "label": "Travel start date", - "type": "date", - "value": "2016-05-22T14:56:28.000Z" - }, - "fare": { - "label": "Fare", - "type": "decimal", - "value": "1024.99" - }, - "lowest_fare_screenshot": { - "label": "Lowest fare screenshot", - "type": "file", - "value": "e92h842jiu49f8..." - }, - "plane_ticket_invoice": { - "label": "Plane ticket invoice PDF", - "type": "file", - "value": "" - } - }, - "rule_violations": [ - { - "error_text": "Plane ticket invoice must be submitted." - } - ] - }, - { - "id": 2, - "completed": False, - "title": "Hotel info", - "html_description": "

If you used a hotel, please enter the details.

", - "fields": { - "total": { - "label": "Total cost", - "type": "decimal" - } - }, - "rule_violations": [ - ] - } - ] - } + data = get_reports(report_pk) + # data = { + # "report_pk": report_pk, + # "title": "2018 Portland trip", + # "date_created": "2018-05-22T14:56:28.000Z", + # "submitted": False, + # "date_submitted": "0000-00-00T00:00:00.000Z", + # "sections": [ + # { + # "id": 1, + # "completed": True, + # "title": "Flight Info", + # "html_description": "

Enter flight details here.

", + # "fields": { + # "international": { + # "label": "International flight", + # "type": "boolean", + # "value": True + # }, + # "travel_date": { + # "label": "Travel start date", + # "type": "date", + # "value": "2016-05-22T14:56:28.000Z" + # }, + # "fare": { + # "label": "Fare", + # "type": "decimal", + # "value": "1024.99" + # }, + # "lowest_fare_screenshot": { + # "label": "Lowest fare screenshot", + # "type": "file", + # "value": "e92h842jiu49f8..." + # }, + # "plane_ticket_invoice": { + # "label": "Plane ticket invoice PDF", + # "type": "file", + # "value": "" + # } + # }, + # "rule_violations": [ + # { + # "error_text": "Plane ticket invoice must be submitted." + # } + # ] + # }, + # { + # "id": 2, + # "completed": False, + # "title": "Hotel info", + # "html_description": "

If you used a hotel, please enter the details.

", + # "fields": { + # "total": { + # "label": "Total cost", + # "type": "decimal" + # } + # }, + # "rule_violations": [ + # ] + # } + # ] + # } return JsonResponse(data) elif request.method == 'PUT': return JsonResponse({"message": "Report submitted."}) elif request.method == 'DELETE': return JsonResponse({"message": "Deleted report {0}.".format(report_pk)}) +# change this api view again!! @api_view(['PUT']) -def section(request, report_pk, section_pk): +def section(report_pk, section_pk): ''' Update a section with new data. '''