Esempio n. 1
0
def get_employees(request: Request):
    # TODO add a wrapper params handler that allows you to specify the type
    # and handles validation errors automatically.
    page_size = request.params.get('page[size]')
    if page_size is None:
        page_size = 10
    else:
        page_size = int(page_size)  # error thrown here

    page_after = request.params.get('page[after]')

    query = select([db.employee
                    ]).limit(page_size + 1).order_by(db.employee.c.id.asc())
    if page_after is not None:
        query = query.where(db.employee.c.id > id_from_cursor(page_after))

    employees = list(db.execute(Employee, query))
    next_id = None
    if len(employees) > page_size:
        next_id = employees[-1].id
        employees = employees[:-1]

    return Envelope(
        employees,
        Pagination(next=None if next_id is None else cursor_from_id(next_id)))
Esempio n. 2
0
 def wrapped(request):
     raw_response = func(request)
     
     if type(raw_response) is Response:
         return raw_response
         
     if type(raw_response) is not Envelope:
         raw_response = Envelope(raw_response)
         
     return cattr.unstructure(raw_response)
Esempio n. 3
0
async def api_create_envelope(request, *, remarks, postcards):
    check_admin(request)
    if not remarks or not remarks.strip():
        raise APIValueError('remarks', 'remarks cannot be empty.')
    if not postcards or not postcards.strip():
        raise APIValueError('postcards', 'postcards cannot be empty.')
    envelope = Envelope(user_id=request.__user__.id,
                        user_name=request.__user__.name,
                        user_image=request.__user__.image,
                        remarks=remarks.strip(),
                        postcards=postcards.strip())
    await envelope.save()
    return envelope