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, })
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]})
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)
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})
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]})
def get_categories(): """GET categories""" categories = Category.get_all() return render_json({'categories': categories_schema.dump(categories)[0]})
def get_current_user(): return render_json({ 'current_user': userSchema.dump(g.current_user).data, })
def delete_item(item_id, item): """Delete an item""" db.session.delete(item) db.session.commit() return render_json({}, 204)
def get_item(item_id, item): """Get item detail""" return render_json({'item': item_schema.dump(item).data})