JoshuaOndieki/ridemyway-api

View on GitHub
ridemyway/controllers/ride_request_controller.py

Summary

Maintainability
A
0 mins
Test Coverage
"""
    Controller for endpoints on ride requests
"""


from flask import current_app as app

from ridemyway.models.request import Request
from ridemyway.utils.response import Response


class RequestController():
    """
        Controls all CRUD operations of the Request object.
    """

    def create_request(self, **kwargs):
        """
            Creates and adds a request to the app database.

            Returns:
                A success status if success adding ride,
                failed status otherwise.
        """
        if kwargs['ride_id'] in app.database['Rides']:
            request_ids = [x for x in app.database['Requests']]
            if request_ids:
                request_id = max(request_ids) + 1
            else:
                request_id = 1
            self.new_request = Request(
                request_id=request_id,
                ride_id=kwargs['ride_id'],
                status='available'
                )
            request = self.new_request.__dict__
            app.database['Requests'][request_id] = request
            message = 'Ride request created successfully'
            attributes = {
                'location': '/api/v1/rides/' + str(request_id) + '/requests'
                }
            response = Response.success(message=message, attributes=attributes)
            return response, 201
        meta = {'errors': 1,
                'source': '/' + str(kwargs['ride_id']) + '/requests'}
        message = 'NOT FOUND'
        return Response.failed(meta=meta, message='NOT FOUND',
                               info='The ride requested does not exist'), 404