def get(self, request, *args, **kwargs):
     if request.GET.get('incident_id', ' ') != ' ':
         this_incident_id = request.GET.get('incident_id', ' ')
         try:
             incidents = Incident.objects.filter(incident_id=this_incident_id)
             if incidents:
                 serialized_incidents = IncidentSerializer(incidents, many=True)
                 incident_times = IncidentTimes.objects.filter(incident_id=this_incident_id).order_by("realtime")
                 serialized_itimes = IncidentIncidentTimesSerializer(incident_times, many=True)
                 first_response=incident_times.get(timedesc=0)
                 on_scene=incident_times.filter(timedesc=5).order_by("realtime")
                 first_on_scene=on_scene[0]
                 response_time=(first_on_scene.realtime-first_response.realtime).total_seconds()
                 responders = Responder.objects.filter(incident_id=this_incident_id)
                 serialized_responders = IncidentResponderSerializer(responders, many=True)
                 return Response({
                     'data': serialized_incidents.data,
                     'incident_times': serialized_itimes.data,
                     'responders':serialized_responders.data,
                     'response_time':response_time
                         })
             else:
                 return Response('Incident ID not found', status=status.HTTP_404_NOT_FOUND)
         except ValueError:
             return Response('Incident ID must be integer', status=status.HTTP_400_BAD_REQUEST)
     else:
         return Response('Missing Incident ID paramater', status=status.HTTP_400_BAD_REQUEST)
Esempio n. 2
0
 def get(self, request, *args, **kwargs):
     k = request.GET.keys()  #get the keys from url
     filter_dict = {}  #create empty dictonary to hold values
     if (k):  # checks if keys exist
         for key, value in request.GET.items():  # loops through all keys
             filter_dict[
                 key] = value  # adds the values =  filter type of object
         incidents = Incident.objects.filter(
             **filter_dict)  #returns the incidents filtered by selection
         serialized_incidents = IncidentSerializer(
             incidents, many=True)  # return the serialized incident objects
         return Response(serialized_incidents.data)  #returns to client
     else:
         return Response(
             IncidentSerializer(Incident.objects.all(), many=True).data
         )  # if no keys, returns unfiltered list of incidents
    def get(self, request, *args, **kwargs):
        start_date = request.GET.get('start_date', ' ')
        end_date = request.GET.get('end_date', ' ')
        totals = request.GET.get('totals', ' ')
        if request.GET.get('fma_id', ' ') == ' ':
            if request.GET.get('lat') and request.GET.get('lon'):
                try:
                    lat = float(request.GET.get('lat', ' '))
                    lon = float(request.GET.get('lon', ' '))
                    pnt = Point(lon, lat, srid=4326)
                    fmas = FMA.objects.filter(geom__contains=pnt)
                    fmaNumber = fmas[0].fma
                    if start_date != ' ' and end_date != ' ':
                        incidents = Incident.objects.filter(incdate__range=(start_date, end_date), fmarespcomp=fmaNumber)
                    else:
                        incidents = Incident.objects.filter(fmarespcomp=fmaNumber)
                    serialized_incidents = IncidentSerializer(incidents, many=True)
                    total_incidents = incidents.count()

                    return Response({
                        "incidents": serialized_incidents.data,
                        "total_incidents": total_incidents})
                except ValueError:
                    return Response('Lat and Lon values must be postive or negative float values', status=status.HTTP_400_BAD_REQUEST)
            else:
                return Response('Missing either fma_id or Lat and Lon parameters', status=status.HTTP_400_BAD_REQUEST)
        else:
            try:
                fma_id = int(request.GET.get('fma_id', ' '))
                fmas = [FMA.objects.get(fma=fma_id)]
                if fmas:
                    if start_date != ' ' and end_date != ' ':
                        fmaNumber = fmas[0].fma
                        incidents = Incident.objects.filter(incdate__range=(start_date, end_date), fmarespcomp=fmaNumber)
                    else:
                        fmaNumber = fmas[0].fma
                        incidents = Incident.objects.filter(incdate__range=(start_date, end_date), fmarespcomp=fmaNumber)
                    serialized_incidents = IncidentSerializer(incidents, many=True)
                    total_incidents = incidents.count()
                    return Response({
                        "incidents": serialized_incidents.data,
                        "total_incidents": total_incidents})
                else:
                    return Response('FMA not found', status=status.HTTP_404_NOT_FOUND)
            except ValueError:
                return Response('FMA_ID is invalid.', status=status.HTTP_400_BAD_REQUEST)
 def get(self, request, *args, **kwargs):
     start_date = request.GET.get('start_date', ' ')
     end_date = request.GET.get('end_date', ' ')
     if request.GET.get('gid', ' ') == ' ':
         if request.GET.get('lat', ' ') != ' ' and request.GET.get('lon', ' ') != ' ':
             try:
                 lat = float(request.GET.get('lat', ' '))
                 lon = float(request.GET.get('lon', ' '))
                 pnt = Point(lon, lat, srid=4326)
                 fireblocks = FireBlock.objects.filter(geom__contains=pnt)
                 if fireblocks:
                     fireblockNumber = fireblocks[0].resp_zone
                     if start_date != ' ' and end_date != ' ':
                         incidents = Incident.objects.filter(incdate__range=(start_date, end_date), fireblock=fireblockNumber)
                     else:
                         incidents = Incident.objects.filter(fireblock=fireblockNumber)
                     if incidents:
                         serialized_incidents = IncidentSerializer(incidents, many=True)
                         return Response(serialized_incidents.data)
                     else:
                         return Response('No Incidents found for the fireblock in this date range.', status=status.HTTP_404_NOT_FOUND)
                 else:
                     return Response('No Fireblock found for this latitude and longitude.', status=status.HTTP_404_NOT_FOUND)
             except ValueError:
                 return Response('Latitude or longitude is invalid.', status=status.HTTP_400_BAD_REQUEST)
         else:
             return Response('Missing either gid or latitude and longitude paramaters.', status=status.HTTP_400_BAD_REQUEST)
     else:
         try:
             gid = float(request.GET.get('gid', ' '))
             fireblocks = [FireBlock.objects.get(gid=gid)]
             if fireblocks:
                 fireblockNumber = fireblocks[0].resp_zone
                 if start_date != ' ' and end_date != ' ':
                     incidents = Incident.objects.filter(incdate__range=(start_date, end_date), fireblock=fireblockNumber)
                 else:
                     incidents = Incident.objects.filter(fireblock=fireblockNumber)
                 if incidents:
                     serialized_incidents = IncidentSerializer(incidents, many=True)
                     return Response(serialized_incidents.data)
                 else:
                     return Response('No Incidents found for the fireblock in this date range.', status=status.HTTP_404_NOT_FOUND)
             else:
                 return Response('No Fireblock found for this gid.', status=status.HTTP_404_NOT_FOUND)
         except ValueError:
             return Response('Gid is invalid.', status=status.HTTP_400_BAD_REQUEST)
Esempio n. 5
0
    def get(self, request, *args, **kwargs):
        lat = float(request.GET.get('lat', ' '))
        lon = float(request.GET.get('lon', ' '))
        start_date = request.GET.get('start_date', ' ')
        end_date = request.GET.get('end_date', ' ')
        fireblocks = FireBlock.objects.all

        if lat != ' ' and lon != ' ':
            pnt = Point(lon, lat, srid=4326)
            fireblocks = FireBlock.objects.filter(geom__contains=pnt)
            fireblockNumber = fireblocks[0].resp_zone
            incidents = Incident.objects.filter(fireblock=fireblockNumber)
            serialized_incidents = IncidentSerializer(incidents, many=True)
            if start_date != ' ' and end_date != ' ':
                incidents = Incident.objects.filter(incdate__range=(start_date,
                                                                    end_date),
                                                    fireblock=fireblockNumber)
            else:
                incidents = Incident.objects.filter(fireblock=fireblockNumber)
            serialized_incidents = IncidentSerializer(incidents, many=True)
            return Response(serialized_incidents.data)
        else:
            return Response(serialized_incidents.data)