class REST(object): resourceType = None schemaCls = None def get_resource(self): resource = self.session.query( self.resourceType).get(self.request.matchdict['id']) if resource is None: raise HTTPNotFound() return resource def __init__(self, request): self.request = request self.session = DBSession() def get(self): return self.get_resource() def post(self): resource = self.get_resource() s = self.schemaCls() vals = s.deserialize(self.request.json_body) for k, v in vals.items(): setattr(resource, k, v) return resource def delete(self): self.session.delete(self.get_resource()) return {'okay': True}
class REST(object): resourceType = None schemaCls = None def get_resource(self): resource = self.session.query(self.resourceType).get( self.request.matchdict['id']) if resource is None: raise HTTPNotFound() return resource def __init__(self, request): self.request = request self.session = DBSession() def get(self): return self.get_resource() def post(self): resource = self.get_resource() s = self.schemaCls() vals = s.deserialize(self.request.json_body) for k, v in vals.items(): setattr(resource, k, v) return resource def delete(self): self.session.delete(self.get_resource()) return {'okay': True}
def pgelement_adapter(obj, request): # In order to pass a geometry object to the pyramid json renderer # we have to pull the geometry and generate a python dict # Postgis's geojson function returns a string, so we have to pass # that to json loads in order for the final output to be correct. # FIXME, this method currently makes a query against the database # for each geometry s = DBSession() return json.loads(s.scalar(obj.geojson))
def post_validate(form): session = DBSession() try: user = session.query(User).filter_by( name=form.name.data, password=User.encode_password(form.password.data)).one() headers = remember(request, user.id) return HTTPFound(headers=headers, location=request.route_url('index')) except NoResultFound, e: return {'form': form, 'errors': [e]}
def post_validate(form): session = DBSession() try: user = session.query(User).filter_by( name=form.name.data, password=User.encode_password(form.password.data)).one() headers = remember(request, user.id) return HTTPFound( headers=headers, location=request.route_url('index')) except NoResultFound, e: return {'form': form, 'errors': [e]}
def add_resource(request, model, schema_cls): session = DBSession() try: schema = schema_cls() vals = schema.deserialize(request.json_body) ints = model(**vals) session.add(ints) session.flush() return ints except colander.Invalid, e: request.response.status = 'Bad request 400' return e.asdict()
def load_fixtures(fixture_path): fixtures = yaml.load(open(fixture_path, 'r').read()) session = DBSession() for fixture in fixtures: model = resolve(fixture.get('class')) try: inst = model(**fixture['fields']) with transaction.manager: session.add(inst) except Exception, e: raise e
def __init__(self, request): self.request = request self.session = DBSession()
def load_database(engine): DBSession.configure(bind=engine) Base.metadata.create_all(engine)
def clear_database(engine): DBSession.configure(bind=engine) Base.metadata.drop_all(engine)
def show_rides(request): session = DBSession() return list(session.query(Ride).all())
def show_traces(request): session = DBSession() return list(session.query(Trace).all())
def show_devices(request): session = DBSession() return list(session.query(Device).all())
def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) Base.metadata.create_all(engine) authentication = AuthTktAuthenticationPolicy( settings.get('secret_key'), callback=groupfinder ) authorization = ACLAuthorizationPolicy() config = Configurator( settings=settings, authentication_policy=authentication, authorization_policy=authorization ) config.add_static_view('static', 'static', cache_max_age=3600) config.add_renderer('json', json_renderer) config.scan() config.add_route('index', '/') config.add_route('dashboard', '/dashboard') config.add_route('login', '/login') config.add_route('logout', 'logout') config.add_route('traces', '/traces') config.add_route('rest-trace', '/traces/{id}') config.add_view(RESTTrace, attr='get', renderer='json', request_method='GET') config.add_view(RESTTrace, attr='post', renderer='json', request_method='POST') config.add_view(RESTTrace, attr='delete', renderer='json', request_method='DELETE') config.add_route('rides', '/rides') config.add_route('rest-rides', '/rides/{id}') config.add_view(RESTRide, attr='get', renderer='json', request_method='GET') config.add_view(RESTRide, attr='post', renderer='json', request_method='POST') config.add_view(RESTRide, attr='delete', renderer='json', request_method='DELETE') config.add_route('devices', '/devices') config.add_route('rest-devices', '/devices/{id}') config.add_view(RESTDevice, attr='get', renderer='json', request_method='GET') config.add_view(RESTDevice, attr='post', renderer='json', request_method='POST') config.add_view(RESTDevice, attr='delete', renderer='json', request_method='DELETE') return config.make_wsgi_app()
def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) Base.metadata.create_all(engine) authentication = AuthTktAuthenticationPolicy(settings.get('secret_key'), callback=groupfinder) authorization = ACLAuthorizationPolicy() config = Configurator(settings=settings, authentication_policy=authentication, authorization_policy=authorization) config.add_static_view('static', 'static', cache_max_age=3600) config.add_renderer('json', json_renderer) config.scan() config.add_route('index', '/') config.add_route('dashboard', '/dashboard') config.add_route('login', '/login') config.add_route('logout', 'logout') config.add_route('traces', '/traces') config.add_route('rest-trace', '/traces/{id}') config.add_view(RESTTrace, attr='get', renderer='json', request_method='GET') config.add_view(RESTTrace, attr='post', renderer='json', request_method='POST') config.add_view(RESTTrace, attr='delete', renderer='json', request_method='DELETE') config.add_route('rides', '/rides') config.add_route('rest-rides', '/rides/{id}') config.add_view(RESTRide, attr='get', renderer='json', request_method='GET') config.add_view(RESTRide, attr='post', renderer='json', request_method='POST') config.add_view(RESTRide, attr='delete', renderer='json', request_method='DELETE') config.add_route('devices', '/devices') config.add_route('rest-devices', '/devices/{id}') config.add_view(RESTDevice, attr='get', renderer='json', request_method='GET') config.add_view(RESTDevice, attr='post', renderer='json', request_method='POST') config.add_view(RESTDevice, attr='delete', renderer='json', request_method='DELETE') return config.make_wsgi_app()