def __init__(self, request, cls, table_lookup=None): self.request = request self.session = get_session(self.request) self.cls = cls if table_lookup == None: self.table_lookup = self.cls.__tablename__ else: self.table_lookup = table_lookup
def __init__(self, request): self.request = request self.base = get_base(request) self.session = get_session(request) self.tables = {} # Loop through all the tables in the SQLAlchemy registry # and store them if they subclass the TraversalMixin for key, table in self.base._decl_class_registry.items(): if isinstance(table, type) and issubclass(table, TraversalMixin): table.__parent__ = self self.tables[table.__tablename__] = table
def resources_view(request): session = get_session(request) if request.method == 'GET': #TODO: Do we really want to be doing this? :P results = request.context.__json__(request) parent_pks = {} get_parent_keys(request.context, parent_pks) if isinstance(request.context, ModelCollection): results = [] for obj in request.context: json = obj.__json__(request) results.append(dict(json.items() + parent_pks.items())) return results else: return dict(results.items() + parent_pks.items()) elif request.method == 'POST' or request.method == 'PUT': if isinstance(request.context, SQLAlchemyRoot): request.context = request.context.cls() saver = request.registry.adapters.lookup( [providedBy(request.context)], ISaver ) if saver == None: raise Exception("You need to register an ISaver for %s" % request.context ) result = saver(request) if not isinstance(result, TraversalMixin): if 'has_errors' in result: request.response_status = '400 Bad Request' if 'serverAttrs' in request.json: to_return = {} for attr in request.json['serverAttrs']: to_return[attr] = getattr(result, attr) return to_return return result elif request.method == 'DELETE': session.delete(request.context) return {'success': True}
def resources_view(request): session = get_session(request) if request.method == 'GET': #TODO: Do we really want to be doing this? :P results = request.context.__json__(request) parent_pks = {} get_parent_keys(request.context, parent_pks) if isinstance(request.context, ModelCollection): results = [] for obj in request.context: json = obj.__json__(request) results.append( dict(list(json.items()) + list(parent_pks.items()))) return results else: return dict(list(results.items()) + list(parent_pks.items())) elif request.method == 'POST' or request.method == 'PUT': if isinstance(request.context, SQLAlchemyRoot): request.context = request.context.cls() saver = request.registry.adapters.lookup([providedBy(request.context)], ISaver) if saver == None: raise Exception("You need to register an ISaver for %s" % request.context) result = saver(request) if not isinstance(result, TraversalMixin): if 'has_errors' in result: request.response_status = '400 Bad Request' if 'serverAttrs' in request.json: to_return = {} for attr in request.json['serverAttrs']: to_return[attr] = getattr(result, attr) return to_return return result elif request.method == 'DELETE': session.delete(request.context) return {'success': True}
def __init__(self, cls, query, request, old_gi): self.cls = cls self.query = query self.request = request self.session = get_session(self.request) self.old_gi = old_gi