Created
March 2, 2017 02:55
-
-
Save ha-yi/0ece99f25f2c404561f53f483e526cfe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class SalesAPI(Resource): | |
def get(self): | |
auth, message, code, user = authenticated(request.headers.get('Authorization')) | |
if not auth: | |
return message, code | |
if not user: | |
return {'status': 'INTERNAL SERVER ERROR', 'message': 'Failed to get user information'} | |
# items = [] | |
if request.args.get('id'): | |
sales = Sales.query.filter_by(user_id=user.id, id=request.args.get('id')).first() | |
result, errors = SalesSchema().dump(sales, many=False) | |
else: | |
sales = Sales.query.filter_by(user_id=user.id).order_by(Sales.create_date).all() | |
result, errors = SalesSchema().dump(sales, many=True) | |
return result, 200 | |
def post(self): | |
auth, message, code, user = authenticated(request.headers.get('Authorization')) | |
if not auth: | |
return message, code | |
if not user: | |
return {'status': 'INTERNAL SERVER ERROR', 'message': 'Failed to get user information'} | |
data = request.get_json(force=True) | |
print(data) | |
customers = data['customer'] if 'customer' in data else None | |
date = data['date'] if 'date' in data else None | |
status = data['status'] if 'status' in data else None | |
due_date = data['due_date'] if 'due_date' in data else None | |
note = data['note'] if 'note' in data else None | |
items = data['items'] if 'items' in data else None | |
_id = data['id'] if 'id' in data else None | |
sales = None | |
if _id: | |
sales = Sales.query.filter_by(user_id=user.id, id=_id).first() | |
if sales: | |
sales.date = date | |
sales.status = status | |
sales.due_date = due_date | |
sales.customer=customers | |
sales.note = note | |
if sales is None: | |
sales = Sales(user=user, date=date, status=status, due_date=due_date, customer=customers, note=note) | |
db.session.add(sales) | |
db.session.commit() | |
# clean up data | |
SalesItem.query.filter_by(sales_id=sales.id).delete() | |
db.session.commit() | |
for item in items: | |
id_ = item['id'] if 'id' in item else None | |
# name = item['name'] if 'name' in item else None | |
prices = item['prices'] if 'prices' in item else None | |
qty = item['qty'] if 'qty' in item else None | |
itdesc = item['item'] if 'item' in item else None | |
if itdesc: | |
name = itdesc['name'] if 'name' in itdesc else None | |
if name: | |
it = Item.query.filter_by(name=name).first() | |
if not it: | |
it = Item(name=name, prices=prices, user=user) | |
db.session.add(it) | |
db.session.commit() | |
sales_item = None | |
if id_: | |
sales_item = SalesItem.query.filter_by(id=id_).first() | |
if sales_item: | |
sales_item.item = it | |
sales_item.qty = qty | |
sales_item.prices = prices | |
if sales_item is None: | |
sales_item = SalesItem(sales=sales, item=it, qty=qty, prices=prices) | |
db.session.add(sales_item) | |
db.session.commit() | |
return items |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment