Exemple #1
0
def google_login():
    payload = request.get_json()

    if not (payload and 'id_token' in payload):
        return render_json_error('Id token is required', 400)

    id_token = payload['id_token']

    user_info = auth_helper.get_user_info(id_token)
    if not user_info:
        return render_json_error('Id token is not valid', 401)

    # Try to find user in our db
    user = db.session.query(User).filter(
        User.email == user_info.get('email')).first()
    # If user not in db, create new
    if not user:
        user = User(name=user_info.get('name'),
                    email=user_info.get('email'),
                    picture=user_info.get('picture'))
        db.session.add(user)
        db.session.commit()

    return render_json({
        'access_token': create_jwt_token(user),
        'current_user': userSchema.dump(user).data,
    })
Exemple #2
0
def latest_items():
    """Get latest items, order by created_at"""
    limit = int(request.args.get('limit') or 10)

    items = db.session.query(Item)\
        .order_by(Item.created_at.desc())\
        .limit(limit).all()

    return render_json({'items': items_schema.dump(items)[0]})
Exemple #3
0
def create_item():
    """Create new item"""
    payload = g.get('payload')
    name, description, category_id = (payload['name'], payload['description'],
                                      payload['category_id'])

    exist_item = db.session.query(Item) \
        .filter(Item.name == name, Item.category_id == category_id)\
        .first()

    if exist_item is not None:
        return render_json_error('Item\'s name existed in this category')

    item = Item(name=name,
                description=description,
                category_id=category_id,
                user_id=g.current_user.id)
    db.session.add(item)
    db.session.commit()
    return render_json({'item': item_schema.dump(item).data}, 201)
Exemple #4
0
def edit_item(item_id, item):
    """Edit an item"""
    payload = g.get('payload')
    name, description, category_id = (payload['name'], payload['description'],
                                      payload['category_id'])

    exist_item = db.session.query(Item) \
        .filter(Item.name == name,
                Item.category_id == category_id,
                Item.id != item_id) \
        .first()

    if exist_item is not None:
        return render_json_error('Item\'s name existed in this category')

    item.name = name
    item.description = description
    item.category_id = category_id
    db.session.add(item)
    db.session.commit()

    return render_json({'item': item_schema.dump(item).data})
Exemple #5
0
def get_category_items(category_id):
    """GET items of a category"""
    items = db.session.query(Item).filter(Item.category_id == category_id)
    return render_json({'items': items_schema.dump(items)[0]})
Exemple #6
0
def get_categories():
    """GET categories"""
    categories = Category.get_all()
    return render_json({'categories': categories_schema.dump(categories)[0]})
Exemple #7
0
def get_current_user():
    return render_json({
        'current_user': userSchema.dump(g.current_user).data,
    })
Exemple #8
0
def delete_item(item_id, item):
    """Delete an item"""
    db.session.delete(item)
    db.session.commit()

    return render_json({}, 204)
Exemple #9
0
def get_item(item_id, item):
    """Get item detail"""
    return render_json({'item': item_schema.dump(item).data})