Beispiel #1
0
async def get_currency(request: Request):
    date_time_start = request.args.get('from')
    date_time_end = request.args.get('to')
    raise_if_empty(date_time_end, date_time_start)
    raise_if_not_int(date_time_end, date_time_start)
    domains = await redis_loaders.get_list_domains(int(date_time_start),
                                                   int(date_time_end))
    return json({'domains': domains, 'status': 'ok'})
Beispiel #2
0
async def add_rating_photo(request: Request, user: User):
    photo_id = request.json.get('photo_id')
    rating = request.json.get('rating')
    raise_if_empty(photo_id, rating)
    raise_if_not_float(rating)
    await Assessment.create(
        photo_id=photo_id,
        user_id=user.id,
        rating=float(rating)
    )
    return json({'status': 'ok'})
Beispiel #3
0
async def get_photos(request: Request, user: User):
    limit = request.args.get('limit')
    offset = request.args.get('offset', default=0)
    raise_if_empty(limit, offset)
    raise_if_not_int(limit, offset)
    subq = db.select([Assessment.photo_id
                      ]).where(Assessment.user_id == user.id).as_scalar()
    query = Photo.query.where(not_(Photo.id.in_(subq)))
    photos = limit_query(query, limit, offset)
    photos = await photos.gino.all()
    photos = [{'id': str(photo.id), 'path': photo.path} for photo in photos]
    return json(photos)
Beispiel #4
0
async def get_photos(request: Request, user: User):
    limit = request.args.get('limit')
    offset = request.args.get('offset', default=0)
    raise_if_empty(limit, offset)
    raise_if_not_int(limit, offset)
    if user.login == 'admin':
        photos_loads = admin_load_photos(limit=limit, offset=offset)
        photos = await photos_loads.all()
        photos = [photo.to_dict() for photo in photos]
        users = await load_users().all()
        users = [user.to_dict() for user in users]
        photos = {'photos': photos, 'users': users}
    else:
        photos_loads = load_photos(user=user, limit=limit, offset=offset)
        photos = await photos_loads.all()
        photos = [{'id': str(photo.id), 'path': photo.path} for photo in photos]
    return json(photos)
Beispiel #5
0
async def update_user(request: Request, user: User):
    validators.raise_if_empty(request.json)

    login = request.json.get('login')
    password = request.json.get('password')

    user_update = None
    if login is not None:
        user_update = (user_update or user).update(login=login)
    if password:
        argon2 = request.app.argon2
        hashed_password = await argon2.async_hash(password)
        user_update = (user_update or user).update(
            password=hashed_password.encode('utf-8'))
    if user_update:
        await user_update.apply()

    return json(user.to_dict())
Beispiel #6
0
async def domain(request: Request):
    links = request.json.get('links')
    raise_if_empty(links)
    await redis_loaders.create_domains(links, int(datetime.now().timestamp()))
    return json({'status': 'ok'})