from functools import update_wrapper import json from flask import request, Response from application import app, db from models import User, Item def api_wrapper(view): def wrapper(*args, **kwargs): return_value = view(*args, **kwargs) return_json = json.dumps(return_value) resp = Response(return_json) resp.headers['Content-Type'] = 'application/json' return resp update_wrapper(wrapper, view) return wrapper @app.route('/user//collection', methods={'GET'}) @api_wrapper def user_collection(user_uuid): user_id = user_uuid.hex user = User.get_or_create(user_id) items = [item.json_data for item in user.collections[0].items] return items @app.route('/user//collection', methods={'PUT'}) @api_wrapper def user_collection_put(user_uuid): put_item = request.form.get('item') put_data = json.loads(put_item) user_id = user_uuid.hex user = User.get_or_create(user_id) collection = user.collections[0] for item in collection.items: if item.json_data.get('upc', None) == put_data.get('upc', None): return '' new_item = Item() new_item.data = put_item collection.items.append(new_item) db.session.add(collection) db.session.commit() return '' @app.route('/user//collection', methods={'DELETE'}) @api_wrapper def user_collection_delete(user_uuid): delete_upc = request.form.get('upc') user_id = user_uuid.hex user = User.get_or_create(user_id) collection = user.collections[0] for item in collection.items: if item.json_data['upc'] == delete_upc: db.session.delete(item) db.session.commit() return ''