def user_address(userid): try: if request.method == 'GET': address = dbm.fetch_user_address(userid) if address: return jsonify(address) return not_found() elif request.method == 'POST': if request.json: address_keys = post_address_keys address_keys.append('apreferred') address_keys.append('atype') for key in address_keys: if key not in request.json: return missing_parameters_error() errors = validate_address(request.json) if errors: return jsonify({'Errors': errors}), 400 if request.json[ 'atype'] == 'billing' and 'pid' not in request.json: return jsonify({'Errors': "Missing Payment Method."}), 400 new_address_id = dbm.create_user_address(userid, request.json) return jsonify({'aid': new_address_id}), 201 else: return missing_parameters_error() except Exception as e: print e.message return internal_server_error()
def user(userid): try: if request.method == 'GET': cg_user = dbm.fetch_user_info(userid=userid) if cg_user: return jsonify(cg_user) return not_found() elif request.method == 'PUT': if request.json: # Verify request json contains needed parameters if not ('uname' or 'ufirstname' or 'ulastname' or 'uemail' or 'uphone' or 'udob' in request.json): return missing_parameters_error() # Verify that parameters are valid errors = validate_update_account_data(request.json) if errors: return jsonify({'Errors': errors}), 400 # Update user account: if dbm.update_user_account(userid, request.json): response = jsonify(request.json) response.status_code = 201 return response return not_found() else: return bad_request() except Exception as e: print e return internal_server_error()
def user_preferences(userid): try: if request.method == 'GET': preferences = dbm.fetch_user_preferences(userid) if preferences: return jsonify(preferences) return not_found() elif request.method == 'PUT': if ('shipping_addressid' or 'billing_addressid' or 'cid') not in request.json: return missing_parameters_error() errors = validate_user_preferences(request.json, userid) if errors: return jsonify({'errors': errors}), 400 if 'shipping_addressid' in request.json: dbm.update_user_preferred_shipping( request.json['shipping_addressid'], userid) if 'billing_addressid' in request.json: dbm.update_user_preferred_billing( request.json['billing_addressid'], userid) if 'cid' in request.json: dbm.update_user_preferred_payment(request.json['cid'], userid) preferences = dbm.fetch_user_preferences(userid) if preferences: return jsonify(preferences) return bad_request() except Exception as e: print e.message return internal_server_error()
def update_payment(userid, payment_methodid): try: if request.method == 'PUT': if request.json: payment_keys = post_payment_keys payment_keys.append('ppreferred') for key in payment_keys: if key not in request.json: return missing_parameters_error() errors = validate_payment(request.json) if errors: return jsonify({'Errors': errors}), 400 billing_addressid = dbm.fetch_user_preferences( userid)['billing_address']['aid'] if billing_addressid: pid = dbm.update_payment_method(userid, payment_methodid, request.json, billing_addressid) return jsonify({'payment_methodid': pid}), 201 else: return jsonify({ 'Error': 'Preferred Billing Address Not Found For User {0}'. format(userid) }), 400 return bad_request() elif request.method == 'DELETE': result = dbm.deactivate_user_payment_method( userid, payment_methodid) if result: return jsonify(result) return bad_request() except Exception as e: print e.message return internal_server_error()
def create_genre(): try: if request.json: if 'genre' and 'active' not in request.json: return missing_parameters_error() result = dbm.create_genre(request.json['genre'], request.json['active']) return jsonify({"genreid": result}) else: return bad_request except Exception as e: print e.message return internal_server_error()
def create_product(): try: if request.json: for key in product_keys: if key not in request.json: return missing_parameters_error() result = dbm.create_product(request.json) return jsonify({"pid": result}) else: return bad_request except Exception as e: print e.message return internal_server_error()
def create_admin(): try: if request.json: for key in post_user_keys: if key not in request.json: return missing_parameters_error() errors = validate_account(request.json) if errors: return jsonify({'errors': errors}), 400 result = dbm.add_admin_user(request.json) return jsonify({"uid": result}) else: return bad_request except Exception as e: print e.message return internal_server_error()
def user_order(userid): try: if request.method == 'GET': orders = dbm.fetch_user_orders(userid) return jsonify(orders) elif request.method == 'POST': if not request.json: return bad_request() if 'shipment_feeid' and 'aid' and 'cid' not in request.json: return missing_parameters_error() errors = validate_order(request.json, userid) if errors: return jsonify({'errors': errors}), 400 orderid = dbm.process_order(userid, request.json) if orderid: # Fetch Order order = dbm.fetch_order(orderid, userid) return jsonify(order) return internal_server_error() except Exception as e: print e.message return internal_server_error()
def get_user_id(): if request.json: try: uid = dbm.fetch_user_id(request.json['uname'], request.json['upassword']) if uid: user = uid[0] token = generate_auth_token(user) return jsonify({ "uid": user['uid'], 'token': token, 'roleid': user['roleid'] }) else: # Login Error Response return jsonify( {'Message': "Username or Password does not match!"}), 401 except Exception as e: print e return bad_request() else: return missing_parameters_error()
def change_password(userid): try: if request.json: print request.json # Verify request json contains needed parameters if 'upassword' not in request.json: return missing_parameters_error() # Verify that parameters are valid if not validate_password(request.json['upassword']): return jsonify({'error': 'Invalid Password.'}), 400 # Update user password: if dbm.change_password(userid, request.json['upassword']): return jsonify({ "message": "User {0} Password Was Changed.".format(userid) }) return not_found() else: return bad_request() except Exception as e: print e return internal_server_error()
def update_address(userid, addressid): try: if request.method == 'PUT': if request.json: put_address_keys = post_address_keys put_address_keys.append('apreferred') put_address_keys.append('atype') for key in put_address_keys: if key not in request.json: return missing_parameters_error() errors = validate_address(request.json) if errors: return jsonify({'Errors': errors}), 400 new_address_id = dbm.update_user_address( userid, addressid, request.json) return jsonify({'aid': new_address_id}), 201 return bad_request() elif request.method == 'DELETE': result = dbm.deactivate_user_address(userid, addressid) return jsonify(result) except Exception as e: print e.message return internal_server_error()
def edit_cart(userid, productid): try: if request.method == 'DELETE': is_deleted = dbm.remove_product_from_cart(userid=userid, productid=productid) if is_deleted: return jsonify({ 'Message': 'Product {0} was deleted from user {1} cart'.format( productid, userid) }) return not_found() elif request.method == 'PUT': if request.json: if 'pquantity' in request.json: cartid = dbm.fetch_user_cartid(userid=userid)['cartid'] if cartid: product_qty = int(request.json['pquantity']) if product_qty > 0: cart_contains_product = dbm.cart_contains( productid=productid, cartid=cartid)['product_in_cart'] if cart_contains_product: has_changed = dbm.update_cart_product_qty( product_qty=product_qty, productid=productid, userid=userid) if has_changed: cart = dbm.fetch_user_cart(userid=userid) return jsonify(cart) return bad_request() else: return jsonify({ 'error': 'Product {0} does not exist in user {1} cart.' .format(productid, userid) }), 400 else: return jsonify({ 'error': 'Product Quantity must be greater than 0.' }), 400 else: return jsonify({ 'error': 'User {0} does not have an active cart.'.format( userid) }), 400 return missing_parameters_error() elif request.method == 'POST': if request.json: if 'pquantity' in request.json: cartid = dbm.fetch_user_cartid(userid=userid)['cartid'] if cartid: product_qty = int(request.json['pquantity']) if product_qty > 0: cart_contains_product = dbm.cart_contains( productid=productid, cartid=cartid)['product_in_cart'] if not cart_contains_product: added_product = dbm.add_product_to_cart( cartid=cartid, productid=productid, product_qty=product_qty) if added_product: cart = dbm.fetch_user_cart(userid=userid) return jsonify(cart) else: return jsonify({ 'error': 'Product {0} is already in user {1} cart.'. format(productid, userid) }), 400 else: return jsonify({ 'error': 'Product Quantity must be greater than 0.' }), 400 else: return jsonify({ 'error': 'User {0} does not have an active cart.'.format( userid) }), 400 return missing_parameters_error() except Exception as e: print e return internal_server_error()