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