def serialize(self): data = { '_links': { 'self': {'href': full_reverse('api-root', self._request)}, 'curies': CHAIN_CURIES, 'ch:sites': { 'title': 'Sites', 'href': full_reverse('sites-list', self._request) } } } return data
def site_summary_view(cls, request, id): #filters = request.GET.dict() devices = Device.objects.filter(site_id=id).select_related( 'sensors', 'sensors__metric', 'sensors__unit' ) response = { '_links': { 'self': {'href': full_reverse('site-summary', request, args=(id,))}, }, 'devices': [] } for device in devices: dev_resource = DeviceResource(obj=device, request=request) dev_data = dev_resource.serialize(rels=False) dev_data['href'] = dev_resource.get_single_href() response['devices'].append(dev_data) dev_data['sensors'] = [] for sensor in device.sensors.all(): sensor_resource = ScalarSensorResource( obj=sensor, request=request) sensor_data = sensor_resource.serialize(rels=False) sensor_data['href'] = sensor_resource.get_single_href() dev_data['sensors'].append(sensor_data) sensor_data['data'] = [] return cls.render_response(response, request)
def serialize_stream(self): '''Serialize this resource for a stream''' data = self.serialize_single(rels=False) data['_links'] = { 'ch:sensor': {'href': full_reverse( 'scalar_sensors-single', self._request, args=(self._filters['sensor_id'],))} } return data
def serialize_stream(self): '''Serialize this resource for a stream''' data = self.serialize_single(rels=False) data['_links'] = { 'self': {'href': self.get_single_href()}, 'ch:device': {'href': full_reverse( 'device-single', self._request, args=(self._filters['device_id'],))} } return data
def serialize_single(self, embed, cache): data = super(SiteResource, self).serialize_single(embed, cache) if embed: stream = self._obj.raw_zmq_stream if stream: data['_links']['rawZMQStream'] = { 'href': stream, 'title': 'Raw ZMQ Stream'} data['_links']['ch:siteSummary'] = { 'title': 'Summary', 'href': full_reverse('site-summary', self._request, args=(self._obj.id,)) } return data
def site_summary_view(cls, request, id): time_begin = timezone.now() - timedelta(hours=2) #filters = request.GET.dict() devices = Device.objects.filter(site_id=id).select_related( 'sensors', 'sensors__metric', 'sensors__unit' ) db_sensor_data = ScalarData.objects.filter(sensor__device__site_id=id, timestamp__gt=time_begin) response = { '_links': { 'self': {'href': full_reverse('site-summary', request, args=(id,))}, }, 'devices': [] } sensor_hash = {} for device in devices: dev_resource = DeviceResource(obj=device, request=request) dev_data = dev_resource.serialize(rels=False) dev_data['href'] = dev_resource.get_single_href() response['devices'].append(dev_data) dev_data['sensors'] = [] for sensor in device.sensors.all(): sensor_resource = ScalarSensorResource( obj=sensor, request=request) sensor_data = sensor_resource.serialize(rels=False) sensor_data['href'] = sensor_resource.get_single_href() dev_data['sensors'].append(sensor_data) sensor_data['data'] = [] sensor_hash[sensor.id] = sensor_data #import pdb; pdb.set_trace() for data in db_sensor_data: data_data = ScalarSensorDataResource( obj=data, request=request).serialize(rels=False) sensor_hash[data.sensor_id]['data'].append(data_data) return cls.render_response(response, request)
def site_summary_view(cls, request, id): #filters = request.GET.dict() devices = Device.objects.filter(site_id=id).select_related( 'sensors', 'sensors__metric', 'sensors__unit') response = { '_links': { 'self': { 'href': full_reverse('site-summary', request, args=(id, )) }, }, 'devices': [] } sensor_data_list = influx_client.get_last_data_from_all_sensors(id) sensor_data_dict = {} for data_point in sensor_data_list: sensor_data_dict[int( data_point['sensor_id'])] = (data_point['last_value'], data_point['time']) for device in devices: dev_resource = DeviceResource(obj=device, request=request) dev_data = dev_resource.serialize(rels=False) dev_data['href'] = dev_resource.get_single_href() response['devices'].append(dev_data) dev_data['sensors'] = [] for sensor in device.sensors.all(): sensor_resource = ScalarSensorResource(obj=sensor, request=request) sensor_data = sensor_resource.serialize(rels=False, include_data=False) try: sensor_data['value'] = sensor_data_dict[sensor.id][0] sensor_data['updated'] = sensor_data_dict[sensor.id][1] except KeyError: # looks like we don't have any data for this sensor pass sensor_data['href'] = sensor_resource.get_single_href() dev_data['sensors'].append(sensor_data) sensor_data['data'] = [] return cls.render_response(response, request)
def site_summary_view(cls, request, id): #filters = request.GET.dict() devices = Device.objects.filter(site_id=id).select_related( 'sensors', 'sensors__metric', 'sensors__unit' ) response = { '_links': { 'self': {'href': full_reverse('site-summary', request, args=(id,))}, }, 'devices': [] } sensor_data_list = influx_client.get_last_data_from_all_sensors(id) sensor_data_dict = {} for data_point in sensor_data_list: sensor_data_dict[int(data_point['sensor_id'])] = (data_point['last_value'], data_point['time']) for device in devices: dev_resource = DeviceResource(obj=device, request=request) dev_data = dev_resource.serialize(rels=False) dev_data['href'] = dev_resource.get_single_href() response['devices'].append(dev_data) dev_data['sensors'] = [] for sensor in device.sensors.all(): sensor_resource = ScalarSensorResource( obj=sensor, request=request) sensor_data = sensor_resource.serialize(rels=False, include_data=False) try: sensor_data['value'] = sensor_data_dict[sensor.id][0] sensor_data['updated'] = sensor_data_dict[sensor.id][1] except KeyError: # looks like we don't have any data for this sensor pass sensor_data['href'] = sensor_resource.get_single_href() dev_data['sensors'].append(sensor_data) sensor_data['data'] = [] return cls.render_response(response, request)
def site_summary_view(cls, request, id): time_begin = timezone.now() - timedelta(hours=2) #filters = request.GET.dict() devices = Device.objects.filter(site_id=id).select_related( 'sensors', 'sensors__metric', 'sensors__unit') db_sensor_data = ScalarData.objects.filter(sensor__device__site_id=id, timestamp__gt=time_begin) response = { '_links': { 'self': {'href': full_reverse('site-summary', request, args=(id,))}, }, 'devices': [] } sensor_hash = {} for device in devices: dev_resource = DeviceResource(obj=device, request=request) dev_data = dev_resource.serialize(rels=False) dev_data['href'] = dev_resource.get_single_href() response['devices'].append(dev_data) dev_data['sensors'] = [] for sensor in device.sensors.all(): sensor_resource = SensorResource(obj=sensor, request=request) sensor_data = sensor_resource.serialize(rels=False) sensor_data['href'] = sensor_resource.get_single_href() dev_data['sensors'].append(sensor_data) sensor_data['data'] = [] sensor_hash[sensor.id] = sensor_data #import pdb; pdb.set_trace() for data in db_sensor_data: data_data = SensorDataResource( obj=data, request=request).serialize(rels=False) sensor_hash[data.sensor_id]['data'].append(data_data) return cls.render_response(response, request)
def get_single_href(self): return full_reverse(self.resource_name + '-single', self._request, args=(self.sensor_id, self.timestamp))
def get_single_href(self): return full_reverse(self.resource_name + '-single', self._request, args=(self.sensor_id,self.timestamp))
def organization_summary_view(cls, request, id): time_begin = timezone.now() - timedelta(days=1) #filters = request.GET.dict() deployments = Deployment.objects.filter(organization_id=id) response = { '_links': { 'self': {'href': full_reverse('organization-summary', request, args=(id,))}, }, 'deployments': [] } #add each deployment in organization for deployment in deployments: dep_resource = DeploymentResource(obj=deployment, request=request) dep_data = dep_resource.serialize(rels=False) dep_data['href'] = dep_resource.get_single_href() response['deployments'].append(dep_data) #deployments can have devices, or sites that have devices dep_data['devices'] = [] dep_data['sites'] = [] #first add direct child devices deployment_devices = Device.objects.filter(deployment_id=deployment.id) for device in deployment_devices: device_resource = DeviceResource(obj=device, request=request) device_data = device_resource.serialize(rels=False) device_data['href'] = device_resource.get_single_href() #add sensors to device device_data['sensors'] = [] for sensor in device.sensors.all(): sensor_resource = SensorResource( obj=sensor, request=request) sensor_data = sensor_resource.serialize(rels=False) sensor_data['href'] = sensor_resource.get_single_href() device_data['sensors'].append(sensor_data) dep_data['devices'].append(device_data) #now add direct child sites, and their devices sites = FixedSite.objects.filter(deployment_id=deployment.id) for site in sites: site_resource = FixedSiteResource(obj=site, request=request) site_data = site_resource.serialize(rels=False) site_data['href'] = site_resource.get_single_href() #now add child devices that live in sites site_data['devices']=[] site_devices = Device.objects.filter(site_id=site.id) for device in site_devices: device_resource = DeviceResource(obj=device, request=request) device_data = device_resource.serialize(rels=False) device_data['href'] = device_resource.get_single_href() #add sensors to device device_data['sensors'] = [] for sensor in device.sensors.all(): sensor_resource = SensorResource( obj=sensor, request=request) sensor_data = sensor_resource.serialize(rels=False) sensor_data['href'] = sensor_resource.get_single_href() device_data['sensors'].append(sensor_data) site_data['devices'].append(device_data) dep_data['sites'].append(site_data) return cls.render_response(response, request)