Beispiel #1
0
    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
Beispiel #2
0
 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
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #5
0
 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()
Beispiel #7
0
 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
Beispiel #8
0
 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
Beispiel #10
0
    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
Beispiel #13
0
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'}
Beispiel #15
0
 def get(cls, userID):
     requests = RequestModel.get_all_user_requests(userID)
     return {'requests': [request.json() for request in requests]}, 200
Beispiel #16
0
 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()]