def get(self): """Get endpoint for all requests. Headers: {Authorization: JWT jwt_token, ContentType: application/json} Returns json object of all requests and 200 code.""" return {'requests': [request.json() for request in RequestModel.find_all()]}, 200
def get(cls): userID = get_jwt_identity() requests = RequestModel.get_all_user_requests(userID) return { 'requests': [request.json() for request in requests if request.quantity > 0] }, 200
def get(self, request_id): """Get endpoint for request with matching id in the database. Headers: {Authorization: JWT jwt_token, ContentType: application/json} If no request with ID found will return json message 404 error. If found returns json of request with matching ID and 200 code.""" request = RequestModel.select_by_id(request_id) if request: return request.json(), 200 return {'message': 'Request not found'}, 404
def delete(self, request_id): """Get endpoint for request with matching id in the database. Headers: {Authorization: JWT jwt_token, ContentType: application/json} If no request with ID found will return json message and 404 error. If found and deleted returns 200 code.""" request = RequestModel.select_by_id(request_id) if request: request.delete_from_db() return {'message': 'Request deleted'}, 200 return {'message': 'Request not found'}, 404
def post(cls): _parser = reqparse.RequestParser() _parser.add_argument('categoryTypeID', type=str, required=True, help="This field cannot be blank.") _parser.add_argument('quantity', type=int, required=True, help="This field cannot be blank.") _parser.add_argument('comments', type=str, required=False) userID = get_jwt_identity() data = _parser.parse_args() request = RequestModel(userID=userID, categoryTypeID=data['categoryTypeID'], quantity=data['quantity'], comments=data['comments']) request.save_to_db() #Add request to queue queueItem = QueueItemModel(userID=userID, categoryTypeID=data['categoryTypeID'], requestID=request.id) queueItem.save_to_db() return {"message": "Request created successfully"}, 201
def put(self,id): data = _request_parser.parse_args() #Validacao das condicoes de entrada request = RequestModel.find_by_id(id) if request: request.name = data['name'] request.address = data['address'] request.author = data['author'] request.accepted = data['accepted'] request.done = data['done'] else: return {'message': 'Request not found'}, 404 request.save_to_db() return request.json()
def post(self): _parser = reqparse.RequestParser() _parser.add_argument('requestID',type=str,required=True,help="This field cannot be blank.") _parser.add_argument('delivererID',type=str,required=True,help="This field cannot be blank.") _parser.add_argument('itemID',type=str,required=True,help="This field cannot be blank.") _parser.add_argument('quantity',type=int,required=True,help="This field cannot be blank.") _parser.add_argument('collectionDateTime') _parser.add_argument('deliveryDateTime') _parser.add_argument('dateTime') _parser.add_argument('itemName',type=str,required=True,help="This field cannot be blank.") data = _parser.parse_args() request = RequestModel.find_by_id(data['requestID']) if not request: return {'message': 'Request Not Found'}, 404 deliverer = UserModel.find_by_id(data['delivererID']) if not deliverer: return {'message': 'Deliverer not found'}, 404 item = ItemModel.find_by_id(data['itemID']) if not item: return {'message': 'Item not found'}, 404 if data['quantity'] <= 0: return {'message' : 'Invalied quantity selected'}, 400 if request.quantity <= 0: return {'message', 'No more items requested'}, 400 if data['quantity'] > request.quantity: return {'message' : 'Quantity selected is more than requested'}, 400 if item.quantity <= 0: return {'message': 'No more items to be donated'}, 400 if data['quantity'] > item.quantity: return {'message' : 'Quantity selected is more than donated'}, 400 collectionDateTime = datetime.strptime(data['collectionDateTime'], '%Y-%m-%dT%H:%M:%S.%fZ') deliveryDateTime = datetime.strptime(data['deliveryDateTime'], '%Y-%m-%dT%H:%M:%S.%fZ') dateTime = datetime.strptime(data['dateTime'], '%Y-%m-%dT%H:%M:%S.%fZ') if (deliveryDateTime <= collectionDateTime): return {'message' : 'Delivery time should be later than the collection time'}, 400 if (collectionDateTime <= dateTime): return {'message' : 'Collection time should be later than the current time'}, 400 if (deliveryDateTime <= dateTime): return {'message' : 'Collection time should be later than the current time'}, 400 confirmationCode = "" for i in range(6): confirmationCode += str(randint(1,9)) delivery = DeliveryModel(requestID=data['requestID'],delivererID=data['delivererID'],itemID=data['itemID'],dateTime=dateTime,confirmationCode=confirmationCode,quantity=data['quantity'],collectionDateTime=collectionDateTime,deliveryDateTime=deliveryDateTime, itemName=data['itemName']) delivery.save_to_db() item.update_quantity(item.quantity - data['quantity']) request.update_quantity(request.quantity - data['quantity']) return {"message": "Delivery details saved successfully"}, 201
def delete(cls): _parser = reqparse.RequestParser() _parser.add_argument('id', type=str, required=True, help="This field cannot be blank.") data = _parser.parse_args() userID = get_jwt_identity() request = RequestModel.find_by_id(data['id']) if not request: return {'message': 'Request Not Found'}, 404 if request.userID != userID: return {'message': 'Invalid User'}, 400 if (len(request.deliveries) > 0): return { 'message': 'This request has deliveries associated with it and hence, cannot be deleted' }, 400 request.delete_from_db() return {'message': 'Request deleted.'}, 200
def post(self): data = _request_parser.parse_args() #Validacao das condicoes de entrada if RequestModel.find_by_name(data['name']): return {'message': "A Request with name '{}' already exists".format(data['name'])}, 400 request = RequestModel(**data) try: request.save_to_db() except: return {'message': "An error occured while creating the request"}, 500 return request.json(), 201
def post(self): """Post endpoint for adding requests into the database. Headers: {Authorization: JWT jwt_token, ContentType: application/json} Body must be json with priority, target_date, product_area, client_name, title, description fields. Database must have matching client_name or will return json message 400 error. If error occurs while inserting into database will return json message and 500 error. On successful insert into database returns json of request and 201 code.""" parser = Parser() parser.required_fields( 'priority', 'target_date', 'product_area', 'client_name', 'title', 'description') data = parser.parse_args() if not ClientModel.select(data['client_name']): return { 'message': 'Client does not exist'}, 400 request = RequestModel(**data) client_name = data['client_name'] priority = data['priority'] update_list = [] try: while RequestModel.select_same_priority(client_name, priority): update_list.append( RequestModel.select_same_priority( client_name, priority)) priority += 1 request.save_to_db() for req in update_list: req.priority += 1 req.save_to_db() except BaseException: return {'message': 'Something went wrong'}, 500 return request.json(), 201
def _parse_requests(self): _requests = [ x for x in self._raw['resources'] if x['_type'] == 'request' ] for req in _requests: self.requests.append(RequestModel(req))
def get(self, id): request = RequestModel.find_by_id(id) if request: return request.json() return {'message': 'request not found'}, 404
from app import app from db import db from models.request import RequestModel from models.user import UserModel db.init_app(app) with app.app_context(): db.create_all() parker = UserModel(email='*****@*****.**') req = RequestModel(url_link='https://google.com') req.user = parker db.session.add(parker) db.session.add(req) db.session.commit()
def delete(self, id): request = RequestModel.find_by_id(id) if request: request.delete_from_db() return {'message': 'Request deleted'}
def get(cls, userID): requests = RequestModel.get_all_user_requests(userID) return {'requests': [request.json() for request in requests]}, 200
def get(cls, requestID: str): request = RequestModel.find_by_id(requestID) if not request: return {'message': 'Request Not Found'}, 404 return {'request': request.json()}, 200
def get(self): user_id = get_jwt_identity() return [request.json() for request in RequestModel.find_by_user_id(user_id)]
def get(self): return [request.json() for request in RequestModel.find_all()]