Skip to content

Commit

Permalink
feature [#161415070] make availbale endpoints for an individual sale …
Browse files Browse the repository at this point in the history
…record
  • Loading branch information
root committed Oct 23, 2018
1 parent 4ad3b17 commit 8862332
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 2 deletions.
5 changes: 4 additions & 1 deletion app/api/app.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from flask import Flask, Blueprint
from flask_restful import Resource, Api
from flask_restful import Api
from views import product_views, sale_views

store_blueprint = Blueprint("store-man", __name__)
Expand All @@ -13,6 +13,9 @@ def create_app():
'/stman/api/v1.0/sales', endpoint='sales')
api.add_resource(product_views.ProductsAPI,
'/stman/api/v1.0/products', endpoint='products')
api.add_resource(sale_views.SaleAPI,
'/stman/api/v1.0/sales/<int:sales_record>',
endpoint='sale')

my_app.register_blueprint(store_blueprint)
return my_app
55 changes: 54 additions & 1 deletion app/api/views/sale_views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from flask_restful import Resource, reqparse, marshal, fields
from models import sales
from datetime import datetime
from flask import abort

sales = sales.Sales.salesList()

Expand Down Expand Up @@ -91,13 +92,65 @@ def post(self):
)

# Add new sale to sales record
sales.append(sale)
sales.sales.append(sale)

return {
'sale': marshal(sale, sale_fields)
}, 201


class SaleAPI(Resource):
def __init__(self):
self.parse = reqparse.RequestParser()
self.parse.add_argument('attendant', type=str, location='json')
self.parse.add_argument('transaction_info', type=dict, location='json')
self.parse.add_argument('gifts', type=int, location='json')
self.parse.add_argument('total',
type=float,
location='json'
)
super(SaleAPI, self).__init__()

def get(self, sales_record):
sale = [sale for sale in sales.sales if sale[
'sales_record'] == sales_record]

if not sale:
abort(404)

return {'sale': marshal(sale[0], sale_fields)}

def put(self, sales_record):
sale = [sale for sale
in sales.sales if sale['sales_record'] is sales_record
]

if not sale:
abort(404)

elements = self.parse.parse_args()

# update any changed element
for key, value in list(elements.items()):
if value:
sale[0][key] = value

return {'sale': marshal(sale[0], sale_fields)}

def delete(self, sales_record):
sale = [sale for sale
in sales.sales if sale['sales_record'] is sales_record
]

if not sale:
abort(404)
sales.remove(sale[0])

return {
'Effect': True
}


sale_fields = {
'sales_uri': fields.Url('sale'),
'attendant': fields.String,
Expand Down

0 comments on commit 8862332

Please sign in to comment.