5151from wildlifecompliance .components .call_email .models import (
5252 CallEmail ,
5353 Classification ,
54+ CallType ,
55+ WildcareSpeciesType ,
56+ WildcareSpeciesSubType ,
5457 Location ,
5558 ComplianceFormDataRecord ,
5659 ReportType ,
6265from wildlifecompliance .components .call_email .serializers import (
6366 CallEmailSerializer ,
6467 ClassificationSerializer ,
68+ CallTypeSerializer ,
69+ WildcareSpeciesTypeSerializer ,
70+ WildcareSpeciesSubTypeSerializer ,
6571 ComplianceFormDataRecordSerializer ,
6672 CallEmailLogEntrySerializer ,
6773 LocationSerializer ,
@@ -284,6 +290,38 @@ def status_choices(self, request, *args, **kwargs):
284290 res_json = json .dumps (res_obj )
285291 return HttpResponse (res_json , content_type = 'application/json' )
286292
293+ @list_route (methods = ['GET' , ])
294+ def entangled_choices (self , request , * args , ** kwargs ):
295+ res_obj = []
296+ for choice in CallEmail .ENTANGLED_CHOICES :
297+ res_obj .append ({'id' : choice [0 ], 'display' : choice [1 ]});
298+ res_json = json .dumps (res_obj )
299+ return HttpResponse (res_json , content_type = 'application/json' )
300+
301+ @list_route (methods = ['GET' , ])
302+ def gender_choices (self , request , * args , ** kwargs ):
303+ res_obj = []
304+ for choice in CallEmail .GENDER_CHOICES :
305+ res_obj .append ({'id' : choice [0 ], 'display' : choice [1 ]});
306+ res_json = json .dumps (res_obj )
307+ return HttpResponse (res_json , content_type = 'application/json' )
308+
309+ @list_route (methods = ['GET' , ])
310+ def baby_kangaroo_choices (self , request , * args , ** kwargs ):
311+ res_obj = []
312+ for choice in CallEmail .BABY_KANGAROO_CHOICES :
313+ res_obj .append ({'id' : choice [0 ], 'display' : choice [1 ]});
314+ res_json = json .dumps (res_obj )
315+ return HttpResponse (res_json , content_type = 'application/json' )
316+
317+ @list_route (methods = ['GET' , ])
318+ def age_choices (self , request , * args , ** kwargs ):
319+ res_obj = []
320+ for choice in CallEmail .AGE_CHOICES :
321+ res_obj .append ({'id' : choice [0 ], 'display' : choice [1 ]});
322+ res_json = json .dumps (res_obj )
323+ return HttpResponse (res_json , content_type = 'application/json' )
324+
287325 @detail_route (methods = ['GET' , ])
288326 @renderer_classes ((JSONRenderer ,))
289327 def get_allocated_group (self , request , * args , ** kwargs ):
@@ -612,11 +650,29 @@ def call_email_save_person(self, request, *args, **kwargs):
612650 print (traceback .print_exc ())
613651 raise serializers .ValidationError (str (e ))
614652
653+ @detail_route (methods = ['POST' , ])
654+ @renderer_classes ((JSONRenderer ,))
655+ def close (self , request , * args , ** kwargs ):
656+ instance = self .get_object ()
657+ serializer_data , headers = self .common_save (instance , request , close = True )
658+ return Response (
659+ serializer_data ,
660+ status = status .HTTP_201_CREATED ,
661+ headers = headers
662+ )
615663
616664 #@detail_route(methods=['POST', ])
617665 #def call_email_save(self, request, *args, **kwargs):
618666 def update (self , request , * args , ** kwargs ):
619667 instance = self .get_object ()
668+ serializer_data , headers = self .common_save (instance , request )
669+ return Response (
670+ serializer_data ,
671+ status = status .HTTP_201_CREATED ,
672+ headers = headers
673+ )
674+
675+ def common_save (self , instance , request , close = False ):
620676 try :
621677 with transaction .atomic ():
622678 request_data = request .data
@@ -642,7 +698,7 @@ def update(self, request, *args, **kwargs):
642698 if instance .report_type and 'report_type_id' in request .data .keys () and not request .data .get ('report_type_id' ):
643699 del request .data ['report_type_id' ]
644700
645- serializer = SaveCallEmailSerializer (instance , data = request_data )
701+ serializer = SaveCallEmailSerializer (instance , data = request_data , context = { 'close' : close } )
646702 serializer .is_valid (raise_exception = True )
647703 if serializer .is_valid ():
648704 saved_instance = serializer .save ()
@@ -651,11 +707,7 @@ def update(self, request, *args, **kwargs):
651707 instance .number ), request )
652708 headers = self .get_success_headers (serializer .data )
653709 return_serializer = CallEmailSerializer (instance = saved_instance , context = {'request' : request })
654- return Response (
655- return_serializer .data ,
656- status = status .HTTP_201_CREATED ,
657- headers = headers
658- )
710+ return return_serializer .data , headers
659711
660712 except serializers .ValidationError :
661713 print (traceback .print_exc ())
@@ -670,9 +722,11 @@ def update(self, request, *args, **kwargs):
670722 @detail_route (methods = ['POST' , ])
671723 @renderer_classes ((JSONRenderer ,))
672724 def workflow_action (self , request , * args , ** kwargs ):
725+ print ("workflow_action" )
673726 print (request .data )
674727 try :
675728 with transaction .atomic ():
729+ #import ipdb; ipdb.set_trace()
676730 instance = self .get_object ()
677731 comms_log_id = request .data .get ('call_email_comms_log_id' )
678732 if comms_log_id and comms_log_id is not 'null' :
@@ -809,6 +863,69 @@ def classification_choices(self, request, *args, **kwargs):
809863 res_json = json .dumps (res_obj )
810864 return HttpResponse (res_json , content_type = 'application/json' )
811865
866+ class CallTypeViewSet (viewsets .ModelViewSet ):
867+ queryset = CallType .objects .all ()
868+ serializer_class = CallTypeSerializer
869+
870+ def get_queryset (self ):
871+ user = self .request .user
872+ if is_internal (self .request ):
873+ return CallType .objects .all ()
874+ return CallType .objects .none ()
875+
876+ @list_route (methods = ['GET' , ])
877+ def call_type_choices (self , request , * args , ** kwargs ):
878+ res_obj = []
879+ #for choice in CallType.NAME_CHOICES:
880+ # res_obj.append({'id': choice[0], 'display': choice[1]});
881+ for choice in CallType .objects .all ():
882+ res_obj .append ({'id' : choice .id , 'display' : choice .get_name_display ()})
883+ res_json = json .dumps (res_obj )
884+ return HttpResponse (res_json , content_type = 'application/json' )
885+
886+ class WildcareSpeciesTypeViewSet (viewsets .ModelViewSet ):
887+ queryset = WildcareSpeciesType .objects .all ()
888+ serializer_class = WildcareSpeciesTypeSerializer
889+
890+ def get_queryset (self ):
891+ user = self .request .user
892+ if is_internal (self .request ):
893+ return WildcareSpeciesType .objects .all ()
894+ return WildcareSpeciesType .objects .none ()
895+
896+ @list_route (methods = ['GET' , ])
897+ def wildcare_species_type_choices (self , request , * args , ** kwargs ):
898+ res_obj = []
899+ for choice in WildcareSpeciesType .objects .all ():
900+ res_obj .append ({
901+ 'id' : choice .id ,
902+ 'display' : choice .get_species_name_display (),
903+ 'call_type_id' : choice .call_type_id
904+ })
905+ res_json = json .dumps (res_obj )
906+ return HttpResponse (res_json , content_type = 'application/json' )
907+
908+ class WildcareSpeciesSubTypeViewSet (viewsets .ModelViewSet ):
909+ queryset = WildcareSpeciesSubType .objects .all ()
910+ serializer_class = WildcareSpeciesSubTypeSerializer
911+
912+ def get_queryset (self ):
913+ user = self .request .user
914+ if is_internal (self .request ):
915+ return WildcareSpeciesSubType .objects .all ()
916+ return WildcareSpeciesSubType .objects .none ()
917+
918+ @list_route (methods = ['GET' , ])
919+ def wildcare_species_sub_type_choices (self , request , * args , ** kwargs ):
920+ res_obj = []
921+ for choice in WildcareSpeciesSubType .objects .all ():
922+ res_obj .append ({
923+ 'id' : choice .id ,
924+ 'display' : choice .get_species_sub_name_display (),
925+ 'wildcare_species_type_id' : choice .wildcare_species_type_id
926+ })
927+ res_json = json .dumps (res_obj )
928+ return HttpResponse (res_json , content_type = 'application/json' )
812929
813930class ReferrerViewSet (viewsets .ModelViewSet ):
814931 queryset = Referrer .objects .all ()
0 commit comments