Skip to content
This repository has been archived by the owner on Mar 26, 2021. It is now read-only.

Commit

Permalink
небольшой рефакторин apiv2 refs #7
Browse files Browse the repository at this point in the history
  • Loading branch information
wolf1996 committed Jun 30, 2018
1 parent bdfc93c commit 088e9cd
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 92 deletions.
2 changes: 1 addition & 1 deletion python/gateway/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
107
115
41 changes: 24 additions & 17 deletions python/gateway/gateway/resources_v2/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,28 @@ def __init__(self, **kwargs):
self.data_chan = kwargs['data']
self.stats_chan = kwargs['stats']
self.object = kwargs['object']


@staticmethod
def collect_controller_info(cntrlr):
from gateway.resources_v2.sensor import Relations as SensorRel
ctr = ControllerInfo(id=cntrlr.id,
object_id=cntrlr.object_id,
name=cntrlr.name,
meta=cntrlr.meta,
activation_date=cntrlr.activation_date,
status=cntrlr.status,
mac=cntrlr.mac,
controller_type=cntrlr.controller_type,
deactivation_date=None)
if cntrlr.HasField("deactivation_date_val"):
ctr.deactivation_date = ssr.deactivation_date_val
return ctr

@staticmethod
def collect_controller_relations(cntrlr, data_chan):
from gateway.resources_v2.sensor import Relations as SensorRel
return [SensorRel.collect_sensor_info(i, data_chan) for i in cntrlr.sensors]

def get(self, _id):
stub = objects_pb2_grpc.ObjectServiceStub(self.object)
include = request.args.getlist("include")
Expand All @@ -39,22 +60,8 @@ def get(self, _id):
except Exception as e:
log.error("Error handling {}".format(str(e)))
return NotFound("Not found error").get_message()
objects = []
controllers = []
sensors = []
def sensor(ssr):
rs = SensorInfo(ssr.id,
ssr.controller_id,
ssr.name,
ssr.activation_date,
None,
ssr.sensor_type,
ssr.company)
if ssr.HasField("deactivation_date_val"):
rs.deactivation_date = ssr.deactivation_date_val
return rs
sensors = [sensor(i) for i in rsp.sensors]
sensors=Listed(sensors)
sensors = Relations.collect_controller_relations(rsp, self.data_chan)
sensors = Listed(sensors)
kwargs = {}
if include:
if 'sensors' in include:
Expand Down
53 changes: 20 additions & 33 deletions python/gateway/gateway/resources_v2/object.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,25 @@ def __init__(self, **kwargs):
self.data_chan = kwargs['data']
self.stats_chan = kwargs['stats']
self.object = kwargs['object']


@staticmethod
def collect_object_info(rsp):
uo = ObjectInfo(
rsp.id,
rsp.user_id,
rsp.name,
rsp.adres,
)
return uo

@staticmethod
def collect_object_relations(rsp, data_chan):
from gateway.resources_v2.controller import Relations as ContrRelations
sensors = []
for i in rsp.controllers:
sensors += ContrRelations.collect_controller_relations(i, data_chan)
return [ContrRelations.collect_controller_info(i) for i in rsp.controllers], sensors

def get(self, _id):
stub = objects_pb2_grpc.ObjectServiceStub(self.object)
include = request.args.getlist("include")
Expand All @@ -39,39 +57,8 @@ def get(self, _id):
except Exception as e:
log.error("Error handling {}".format(str(e)))
return NotFound("Not found error").get_message()
objects = []
controllers = []
sensors = []
def controller(cntrlr):
def sensor(ssr):
rs = SensorInfo(ssr.id,
ssr.controller_id,
ssr.name,
ssr.activation_date,
None,
ssr.sensor_type,
ssr.company)
if ssr.HasField("deactivation_date_val"):
rs.deactivation_date = ssr.deactivation_date_val
return rs
nonlocal sensors
sensors += [sensor(i) for i in cntrlr.sensors]

ctr = ControllerInfo(id=cntrlr.id,
object_id=cntrlr.object_id,
name=cntrlr.name,
meta=cntrlr.meta,
activation_date=cntrlr.activation_date,
status=cntrlr.status,
mac=cntrlr.mac,
controller_type=cntrlr.controller_type,
deactivation_date=None)
if cntrlr.HasField("deactivation_date_val"):
ctr.deactivation_date = ssr.deactivation_date_val
return ctr

controllers = [controller(i) for i in rsp.controllers]

controllers, sensors = Relations.collect_object_relations(rsp, self.data_chan)
controllers=Listed(controllers)
sensors=Listed(sensors)

Expand Down
45 changes: 45 additions & 0 deletions python/gateway/gateway/resources_v2/sensor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from flask_restful import Resource
from flask_restful import reqparse
from flask import request
from gateway.views.errors import InvalidRequest
from gateway.views.errors import NotFound
from gateway.views.objects_info import UserInfo
from gateway.views_v2.objects_lvl import ObjectInfo
from gateway.views_v2.objects_lvl import ControllerInfo
from gateway.views_v2.objects_lvl import SensorInfo
from gateway.views_v2.objects_lvl import ObjList
from gateway.views_v2.objects_lvl import Listed
from proto import objects_pb2_grpc
from proto import objects_pb2
from proto import data_pb2_grpc
from proto import data_pb2
from proto import stats_pb2_grpc
from proto import stats_pb2
from proto import utils_pb2
import datetime
import base64
import time
import logging

log = logging.getLogger("flask.app")


# добавлен для однообразности
class Relations(object):
@staticmethod
def parse_sensor_info(ssr):
rs = SensorInfo(ssr.id,
ssr.controller_id,
ssr.name,
ssr.activation_date,
None,
ssr.sensor_type,
ssr.company)
if ssr.HasField("deactivation_date_val"):
rs.deactivation_date = ssr.deactivation_date_val
return rs

@staticmethod
def collect_sensor_info(sensor_info, data_chan):
s_inf = Relations.parse_sensor_info(sensor_info)
return s_inf
53 changes: 12 additions & 41 deletions python/gateway/gateway/resources_v2/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,17 @@ def __init__(self, **kwargs):
self.data_chan = kwargs['data']
self.stats_chan = kwargs['stats']
self.object = kwargs['object']

@staticmethod
def collect_user_relations(rsp, data_chan):
from gateway.resources_v2.object import Relations as ObjRelations
controllers = []
sensors = []
for i in rsp.objects:
ctr, ssr = ObjRelations.collect_object_relations(i, data_chan)
controllers += ctr
sensors += ssr
return [ObjRelations.collect_object_info(i) for i in rsp.objects], controllers, sensors

def get(self):
stub = objects_pb2_grpc.ObjectServiceStub(self.object)
Expand All @@ -41,47 +52,7 @@ def get(self):
except Exception as e:
log.error("Error handling {}".format(str(e)))
return NotFound("Not found error").get_message()
objects = []
controllers = []
sensors = []
def controller(cntrlr):
def sensor(ssr):
rs = SensorInfo(ssr.id,
ssr.controller_id,
ssr.name,
ssr.activation_date,
None,
ssr.sensor_type,
ssr.company)
if ssr.HasField("deactivation_date_val"):
rs.deactivation_date = ssr.deactivation_date_val
return rs
nonlocal sensors
sensors += [sensor(i) for i in cntrlr.sensors]

ctr = ControllerInfo(id=cntrlr.id,
object_id=cntrlr.object_id,
name=cntrlr.name,
meta=cntrlr.meta,
activation_date=cntrlr.activation_date,
status=cntrlr.status,
mac=cntrlr.mac,
controller_type=cntrlr.controller_type,
deactivation_date=None)
if cntrlr.HasField("deactivation_date_val"):
ctr.deactivation_date = ssr.deactivation_date_val
return ctr
def obct(rsp):
nonlocal controllers
controllers += [controller(i) for i in rsp.controllers]
uo = ObjectInfo(
rsp.id,
rsp.user_id,
rsp.name,
rsp.adres,
)
return uo
objects = [obct(i) for i in rsp.objects]
objects, controllers, sensors = Relations.collect_user_relations(rsp, self.data_chan)

objects=Listed(objects)
controllers=Listed(controllers)
Expand Down

0 comments on commit 088e9cd

Please sign in to comment.