Skip to content

Instantly share code, notes, and snippets.

@ha-yi
Created March 2, 2017 02:55
Show Gist options
  • Save ha-yi/0ece99f25f2c404561f53f483e526cfe to your computer and use it in GitHub Desktop.
Save ha-yi/0ece99f25f2c404561f53f483e526cfe to your computer and use it in GitHub Desktop.
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