def bypath(): path = load(request.data)['path'][1:].split('/') root = api.get_entity('Database')(path[0]) last = root for level in path[1:]: last = last.View(level) return dump(last)
def get_select_processor(objid): """Handle get select.""" try: argspec = api.get_args('Select', 'select') kwargs = {'objid': objid, 'limit': 50} return dump(api.get_entity('Select')().select(**kwargs)) except errors.RelationDoesNotExist as e: print objid abort(410)
def respond(path): """Generic path responder, on its way out.""" # Standardize to no trailing slash (for parsing purposes) try: if path[-1] == '/': path = path[:-1] except IndexError: pass args = path.split('/') if args[0] == 'get_byrowid': return dump(api.get_entity('Select')().get_byrowid(*args[1:])) elif args[0] == 'get_array': return dump(api.get_entity('Select')().get_array(**load(request.data))) try: return process_entity_identified(*args) except errors.RelationDoesNotExist: abort(410) except TypeError: abort(404) abort(404)
def get_select_processor(objid): """Handle get select.""" try: argspec = api.get_args('Select','select') kwargs = { 'objid':objid, 'limit':50 } return dump(api.get_entity('Select')().select(**kwargs)) except errors.RelationDoesNotExist as e: print objid abort(410)
def post_select_processor(objid): """Handle post select.""" lastaccess = open('lastaccess','w') now = datetime.datetime.now() now = dump((now.year,now.month,now.day,now.hour,now.minute)) lastaccess.write(now) lastaccess.close() try: kwargs = load(request.data) if 'limit' not in kwargs: kwargs['limit'] = 50 return dump(api.get_entity('Select')().select(**kwargs)) except errors.RelationDoesNotExist as e: print objid abort(410)
def post_select_processor(objid): """Handle post select.""" lastaccess = open('lastaccess', 'w') now = datetime.datetime.now() now = dump((now.year, now.month, now.day, now.hour, now.minute)) lastaccess.write(now) lastaccess.close() try: kwargs = load(request.data) if 'limit' not in kwargs: kwargs['limit'] = 50 return dump(api.get_entity('Select')().select(**kwargs)) except errors.RelationDoesNotExist as e: print objid abort(410)
def listing(self,child_type=None): if child_type is None: items = json.loads(sesh.get(self._get_req_url()).text) entities = [init_entity(x) for x in items] for e in entities: e.sesh = sesh return entities else: url = self._get_req_url(self.objid) + ("%ss/" % child_type.lower()) r = sesh.get(url).text try: return [api.get_entity(x['entitytype'])(x) for x in json.loads(r)] except ValueError as e: print r raise e
def listing(self, child_type=None): if child_type is None: items = json.loads(sesh.get(self._get_req_url()).text) entities = [init_entity(x) for x in items] for e in entities: e.sesh = sesh return entities else: url = self._get_req_url(self.objid) + ("%ss/" % child_type.lower()) r = sesh.get(url).text try: return [ api.get_entity(x['entitytype'])(x) for x in json.loads(r) ] except ValueError as e: print r raise e
def view_tile_handler_mag(objid,x,y,z,magnitude): """Handle get tile with specified magnitude column.""" try: return dump(api.get_entity('View')(objid).tile(x,y,z,magnitude)) except errors.RelationDoesNotExist: abort(404)
def view_rowids_handler(objid,x,y,z): """Handle get tile rowids.""" return dump(api.get_entity('View')(objid).tile_rowids(x,y,z))
def view_tile_handler(objid,x,y,z): """Handle get tile rowids.""" try: return dump(api.get_entity('View')(objid).tile(x,y,z)) except errors.RelationDoesNotExist: abort(404)
def table_rowids_handler(objid,x,y,z): """Handle get tile.""" return dump(api.get_entity('Table')(objid).tile_rowids(x,y,z))
def table_tile_handler(objid,x,y,z): """Handle get tile.""" try: return dump(api.get_entity('Table')(objid).tile(x,y,z)) except errors.RelationDoesNotExist: abort(404)
def process_entity_identified(entityname,objid,method=None,child=None,last=None): """Remnants.""" if request.method == 'GET' and (method is not None and child is not None and last is None): ent = api.get_entity(entityname)(objid) meth = getattr(ent,method) return dump( meth(child) ) elif request.method == 'GET' and all(x is not None for x in (method,child,last)): outer = api.get_entity(entityname)(objid) outer = getattr(outer,method) print outer return dump( getattr(outer,last)() ) elif method in ('modify','rename'): if request.method == 'OPTIONS': return '' elif request.method not in ('PUT','POST'): abort(405) entity = api.get_entity(entityname)(objid) try: if method == 'modify': #try: return dump(entity.modify(**load(request.data))) #except errors.DataError: # abort(409) if method == 'rename': return dump(entity.rename(**load(request.data))) except errors.NotAuthorized: abort(401) elif request.method == 'POST' and method == 'add_columns': entity = api.get_entity(entityname)(objid) return dump(entity.add_columns(**load(request.data))) elif request.method == 'POST' and method == 'add_index': entity = api.get_entity(entityname)(objid) return dump(entity.add_index(**load(request.data))) elif method is not None and method.startswith('create_'): if request.method != 'POST': abort(405) try: ent = api.get_entity(entityname)(objid) except KeyError: abort(404) return dump(getattr(ent,method)(**load(request.data))) else: if request.method != 'GET': abort(405) try: ent = api.get_entity(entityname)(objid) except KeyError: abort(404) try: return dump(getattr(ent,method)()) except AttributeError: abort(404) abort(404)
def view_tile_handler_mag(objid, x, y, z, magnitude): """Handle get tile with specified magnitude column.""" try: return dump(api.get_entity('View')(objid).tile(x, y, z, magnitude)) except errors.RelationDoesNotExist: abort(404)
def tree(): return dump(api.get_entity('Database')().tree())
def view_rowids_handler(objid, x, y, z): """Handle get tile rowids.""" return dump(api.get_entity('View')(objid).tile_rowids(x, y, z))
def appview(): """The launcher app spec.""" appdb = api.get_entity('Database')('earth-mgmt') assets = appdb.Table('assets') fname, val = assets.columns() return dump(assets.select())
def view_tile_handler(objid, x, y, z): """Handle get tile rowids.""" try: return dump(api.get_entity('View')(objid).tile(x, y, z)) except errors.RelationDoesNotExist: abort(404)
def appjson(appname): """Return the json spec for the app.""" appdb = api.get_entity('Database')(appname) assets = appdb.Table('assets') fname, val = assets.columns() return dump(assets.select())
def process_entity_identified(entityname, objid, method=None, child=None, last=None): """Remnants.""" if request.method == 'GET' and (method is not None and child is not None and last is None): ent = api.get_entity(entityname)(objid) meth = getattr(ent, method) return dump(meth(child)) elif request.method == 'GET' and all(x is not None for x in (method, child, last)): outer = api.get_entity(entityname)(objid) outer = getattr(outer, method) print outer return dump(getattr(outer, last)()) elif method in ('modify', 'rename'): if request.method == 'OPTIONS': return '' elif request.method not in ('PUT', 'POST'): abort(405) entity = api.get_entity(entityname)(objid) try: if method == 'modify': #try: return dump(entity.modify(**load(request.data))) #except errors.DataError: # abort(409) if method == 'rename': return dump(entity.rename(**load(request.data))) except errors.NotAuthorized: abort(401) elif request.method == 'POST' and method == 'add_columns': entity = api.get_entity(entityname)(objid) return dump(entity.add_columns(**load(request.data))) elif request.method == 'POST' and method == 'add_index': entity = api.get_entity(entityname)(objid) return dump(entity.add_index(**load(request.data))) elif method is not None and method.startswith('create_'): if request.method != 'POST': abort(405) try: ent = api.get_entity(entityname)(objid) except KeyError: abort(404) return dump(getattr(ent, method)(**load(request.data))) else: if request.method != 'GET': abort(405) try: ent = api.get_entity(entityname)(objid) except KeyError: abort(404) try: return dump(getattr(ent, method)()) except AttributeError: abort(404) abort(404)
def table_rowids_handler(objid, x, y, z): """Handle get tile.""" return dump(api.get_entity('Table')(objid).tile_rowids(x, y, z))
def getbyrowid(objid,rowid): """Handle get select.""" return dump(api.get_entity('Select')().get_byrowid(objid,rowid,True))
def getbyrowid(objid, rowid): """Handle get select.""" return dump(api.get_entity('Select')().get_byrowid(objid, rowid, True))
def table_tile_handler(objid, x, y, z): """Handle get tile.""" try: return dump(api.get_entity('Table')(objid).tile(x, y, z)) except errors.RelationDoesNotExist: abort(404)
def view_features_handler(objid): """Handle get features.""" rdat = load(request.data) print[str(x) for x in rdat['rowids']] return dump(api.get_entity('View')(objid).features(rdat['rowids']))
@app.route('/tables/<objid>/tile/<x>/<y>/<z>/<magnitude>/tile.geo.json',methods=['GET']) @app.route('/Table/<objid>/tile/<x>/<y>/<z>/<magnitude>/tile.geo.json',methods=['GET']) def table_tile_handler_mag(objid,x,y,z,magnitude): """Handle get tile with specified magnitude column.""" try: return dump(api.get_entity('Table')(objid).tile(x,y,z,magnitude)) except errors.RelationDoesNotExist: abort(404) @app.route('/tables/<objid>/features/',methods=['POST']) @app.route('/Table/<objid>/features/',methods=['POST']) def table_features_handler(objid): """Handle get features.""" rdat = load(request.data) print [str(x) for x in rdat['rowids']] return dump(api.get_entity('Table')(objid).features(rdat['rowids'])) @app.route('/views/<objid>/tile_rowids/<x>/<y>/<z>/',methods=['GET']) @app.route('/View/<objid>/tile_rowids/<x>/<y>/<z>/',methods=['GET']) def view_rowids_handler(objid,x,y,z): """Handle get tile rowids.""" return dump(api.get_entity('View')(objid).tile_rowids(x,y,z)) @app.route('/views/<objid>/tile/<x>/<y>/<z>/',methods=['GET']) @app.route('/View/<objid>/tile/<x>/<y>/<z>/',methods=['GET']) @app.route('/views/<objid>/tile/<x>/<y>/<z>/tile.geo.json',methods=['GET']) @app.route('/View/<objid>/tile/<x>/<y>/<z>/tile.geo.json',methods=['GET']) def view_tile_handler(objid,x,y,z): """Handle get tile rowids.""" try: return dump(api.get_entity('View')(objid).tile(x,y,z))