Merge pull request #55 from danieldupriest/remove_serializer
Remove serializer
This commit is contained in:
		
						commit
						1af7c357e9
					
				
					 4 changed files with 76 additions and 170 deletions
				
			
		|  | @ -1,66 +0,0 @@ | ||||||
| # Rupika Dikkala |  | ||||||
| # January 23, 2019 |  | ||||||
| # File contains serializers needed |  | ||||||
| # to set up API end points |  | ||||||
| 
 |  | ||||||
| from rest_framework import serializers |  | ||||||
| from . import models |  | ||||||
| 
 |  | ||||||
| # serializer for reports |  | ||||||
| class ReportSerializer(serializers.ModelSerializer): |  | ||||||
|     # user id is foreign key |  | ||||||
|     user_id = serializers.PrimaryKeyRelatedField(many=False, read_only=True) |  | ||||||
| 
 |  | ||||||
|     class Meta: |  | ||||||
|         fields = ( |  | ||||||
|             'user_id', |  | ||||||
|             'title', |  | ||||||
|             'date_created', |  | ||||||
|             # 'data_submitted', |  | ||||||
|             'submitted', |  | ||||||
|         ) |  | ||||||
|         model = models.Report |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # section serializer |  | ||||||
| class SectionSerializer(serializers.ModelSerializer): |  | ||||||
|     # report id foriegn key |  | ||||||
|     report_id = serializers.PrimaryKeyRelatedField(many=True, read_only=True) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     class Meta: |  | ||||||
|         fields = ( |  | ||||||
|             'report_id', |  | ||||||
|             'completed', |  | ||||||
|             'title', |  | ||||||
|             'html_description', |  | ||||||
|             'number', |  | ||||||
|         ) |  | ||||||
|         model = models.Section |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| class FieldSerializer(serializers.ModelSerializer): |  | ||||||
|     # section_id is foriegn key |  | ||||||
|     section_id = serializers.PrimaryKeyRelatedField(many=True, read_only=True) |  | ||||||
| 
 |  | ||||||
|     class Meta: |  | ||||||
|         fields = ( |  | ||||||
|             'section_id', |  | ||||||
|             'label', |  | ||||||
|             'number', |  | ||||||
|             'type', |  | ||||||
|             'completed', |  | ||||||
|         ) |  | ||||||
|         model = models.Field |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| class DataSerializer(serializers.ModelSerializer): |  | ||||||
|     field_id = serializers.PrimaryKeyRelatedField(many=False, read_only=True) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  | @ -5,9 +5,6 @@ from rest_framework.urlpatterns import format_suffix_patterns | ||||||
| from . import views | from . import views | ||||||
| 
 | 
 | ||||||
| urlpatterns = [ | urlpatterns = [ | ||||||
| 	#path('', views.List.as_view()), |  | ||||||
| 	#path('<int:pk>/', views.Detail.as_view()), |  | ||||||
| 
 |  | ||||||
|     path('report', views.report), |     path('report', views.report), | ||||||
|     path('reports', views.reports), |     path('reports', views.reports), | ||||||
|     path('report/<int:report_pk>', views.report_detail), |     path('report/<int:report_pk>', views.report_detail), | ||||||
|  |  | ||||||
|  | @ -1,23 +1,70 @@ | ||||||
| from rest_framework import generics |  | ||||||
| from rest_framework import status |  | ||||||
| from rest_framework.decorators import api_view | from rest_framework.decorators import api_view | ||||||
| from django.shortcuts import render |  | ||||||
| from django.http import JsonResponse | from django.http import JsonResponse | ||||||
| from .models import * | from .models import * | ||||||
| from .serializers import * |  | ||||||
| 
 | 
 | ||||||
| # Sample view using generics |  | ||||||
| 
 | 
 | ||||||
| class List(generics.ListCreateAPIView): | # function that prints all the reports | ||||||
|     queryset = Report.objects.all() | def get_reports(report_pk): | ||||||
|     serializer_class = ReportSerializer |     # queryset = Report.objects.all() | ||||||
|  |     queryset = Report.objects.filter(id=report_pk) | ||||||
|  |     for i in queryset: | ||||||
|  |         data = { | ||||||
|  |             "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 data | ||||||
|  | 
 | ||||||
|  | # function that gets all the sections | ||||||
|  | # takes report_id param | ||||||
|  | def get_sections(r_id): | ||||||
|  |     # 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: | ||||||
|  |         data = { | ||||||
|  |             "id": i.id, | ||||||
|  |             "completed": i.completed, | ||||||
|  |             "title": i.title, | ||||||
|  |             "html_description": i.html_description, | ||||||
|  |         } | ||||||
|  |         # 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 | ||||||
|  | 
 | ||||||
|  | # 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() | ||||||
|  |     for i in queryset: | ||||||
|  |         data = { | ||||||
|  |             "field_name": "TODO", | ||||||
|  |             "label": i.label, | ||||||
|  |             "type": i.type, | ||||||
|  |             "number": i.number, | ||||||
|  |             "value": "get_value", | ||||||
|  |         } | ||||||
|  |         # append the fields to array | ||||||
|  |         # use copy() to avoid overwriting | ||||||
|  |         field_set["fields"].append(data.copy()) | ||||||
|  | 
 | ||||||
|  |     return field_set | ||||||
| 
 | 
 | ||||||
| class Detail(generics.RetrieveUpdateDestroyAPIView): |  | ||||||
|     queryset = Report.objects.all() |  | ||||||
|     serializer_class = ReportSerializer |  | ||||||
| 
 | 
 | ||||||
| # API Endpoints | # API Endpoints | ||||||
| 
 |  | ||||||
| @api_view(['POST']) | @api_view(['POST']) | ||||||
| def report(request): | def report(request): | ||||||
|     ''' |     ''' | ||||||
|  | @ -85,101 +132,28 @@ def report(request): | ||||||
|     } |     } | ||||||
|     return JsonResponse(data) |     return JsonResponse(data) | ||||||
| 
 | 
 | ||||||
|  | # List of reports | ||||||
| @api_view(['GET']) | @api_view(['GET']) | ||||||
| def reports(request): | def reports(request): | ||||||
|     print("User: ", request.user) |     report_set = {"reports": []} | ||||||
|     print("User id: ", request.user.id) |     queryset = Report.objects.all() | ||||||
|  |     for i in queryset: | ||||||
|         data = { |         data = { | ||||||
|         "reports": [ |             "title": i.title, | ||||||
|             { |             "date_created": i.date_created, | ||||||
|                 "report_pk": 1, |             "submitted": i.submitted, | ||||||
|                 "title": "2018 Portland trip", |             "date_submitted": i.date_submitted, | ||||||
|                 "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" |  | ||||||
|         } |         } | ||||||
|         ] |         # append the sections for each report | ||||||
|     } |         report_set["reports"].append(data.copy()) | ||||||
|     return JsonResponse(data) | 
 | ||||||
|  |     return JsonResponse(report_set) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| @api_view(['GET', 'PUT', 'DELETE']) | @api_view(['GET', 'PUT', 'DELETE']) | ||||||
| def report_detail(request, report_pk): | def report_detail(request, report_pk): | ||||||
|     if request.method == 'GET': |     if request.method == 'GET': | ||||||
|         data = { |         data = get_reports(report_pk) | ||||||
|             "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": "<p>Enter flight details here.</p>", |  | ||||||
|                     "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": "<p>If you used a hotel, please enter the details.</p>", |  | ||||||
|                     "fields": { |  | ||||||
|                         "total": { |  | ||||||
|                             "label": "Total cost", |  | ||||||
|                             "type": "decimal" |  | ||||||
|                         } |  | ||||||
|                     }, |  | ||||||
|                     "rule_violations": [ |  | ||||||
|                     ] |  | ||||||
|                 } |  | ||||||
|             ] |  | ||||||
|         } |  | ||||||
|         return JsonResponse(data) |         return JsonResponse(data) | ||||||
|     elif request.method == 'PUT': |     elif request.method == 'PUT': | ||||||
|         return JsonResponse({"message": "Report submitted."}) |         return JsonResponse({"message": "Report submitted."}) | ||||||
|  | @ -200,4 +174,5 @@ def section(request, report_pk, section_pk): | ||||||
|             "lowest_fare_screenshot": "image", |             "lowest_fare_screenshot": "image", | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     return JsonResponse(data) |     return JsonResponse(data) | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								back/db.sqlite3
									
										
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								back/db.sqlite3
									
										
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Logan Miller
						Logan Miller