Skip to content

Instantly share code, notes, and snippets.

@arush0311
Last active July 4, 2016 16:36
Show Gist options
  • Save arush0311/f1189e11016d55b0a9c13c328e617719 to your computer and use it in GitHub Desktop.
Save arush0311/f1189e11016d55b0a9c13c328e617719 to your computer and use it in GitHub Desktop.
from services.social_graph_api.BaseRequestHandler import BaseRequestHandler
from tornado import gen
from tornado import web
from graph.models.components.Device import Device
from graph.models.components.Event import Event
from graph.models.components.SensorStream import SensorStream
from goblin.models.element import BaseElement
class ComponentRelationsHandler(BaseRequestHandler):
def prepare(self):
super().prepare()
self.bind_class()
def bind_class(self):
self.Component = Device
@gen.coroutine
def _get_component_by_name(self, name):
try:
component = yield self.Component.get(name)
return component
except BaseElement.DoesNotExist as e:
raise web.HTTPError(404)
@gen.coroutine
def get(self, name):
component = yield self._get_component_by_name(name)
stream = yield component.outE()
relations_list = []
while True:
resp = yield stream.read() ## Here is the problem
if resp is None:
break
relations_list += [(relation.as_dict()+{'label': relation.label()}) for relation in resp]
self.write_json(relations_list)
@gen.coroutine
def delete(self, name):
component = self._get_component_by_name(name)
stream = yield component.outE()
relations_list = []
while True:
resp = yield stream.read()
if resp is None:
break
for relation in resp:
yield relation.delete()
self.acknowledge()
class DeviceRelationsHandler(ComponentRelationsHandler):
def bind_class(self):
self.Component = Device
class EventRelationsHandler(ComponentRelationsHandler):
def bind_class(self):
self.Component = Event
class SensorStreamRelationsHandler(ComponentRelationsHandler):
def bind_class(self):
self.Component = SensorStream
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment