Last active
July 4, 2016 16:36
-
-
Save arush0311/f1189e11016d55b0a9c13c328e617719 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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