Exemple #1
0
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}
Exemple #2
0
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}
Exemple #3
0
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 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))
Exemple #5
0
 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]}
Exemple #6
0
 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]}
Exemple #7
0
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
Exemple #9
0
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
Exemple #10
0
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()
Exemple #11
0
 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)
Exemple #14
0
def show_rides(request):
    session = DBSession()
    return list(session.query(Ride).all())
Exemple #15
0
def load_database(engine):
    DBSession.configure(bind=engine)
    Base.metadata.create_all(engine)
Exemple #16
0
def show_traces(request):
    session = DBSession()
    return list(session.query(Trace).all())
Exemple #17
0
 def __init__(self, request):
     self.request = request
     self.session = DBSession()
Exemple #18
0
def show_traces(request):
    session = DBSession()
    return list(session.query(Trace).all())
Exemple #19
0
def show_devices(request):
    session = DBSession()
    return list(session.query(Device).all())
Exemple #20
0
def show_rides(request):
    session = DBSession()
    return list(session.query(Ride).all())
Exemple #21
0
def clear_database(engine):
    DBSession.configure(bind=engine)
    Base.metadata.drop_all(engine)
Exemple #22
0
def show_devices(request):
    session = DBSession()
    return list(session.query(Device).all())
Exemple #23
0
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()