Example #1
0
    def create_artist(self, request):
        message = Message()
        try:
            artist_data = request.data

            if artist_data.keys() < {
                    "username", "password", "genre", "band_name", "role_num"
            }:
                raise InsufficientFieldsException(
                    "Please provide all of the artist fields: username, password, genre, band_name, and role_num"
                )
            if artist_data["role_num"] != 3:
                raise WrongAccountTypeException(
                    "Wrong Role number provided for artist: role_num provided "
                    + str(artist_data["role_num"]))

            artist = self.artist_service.create_artist(artist_data)
            serializer = ArtistSerializer(artist)

            message.add_payload("Successfully created an artist account",
                                serializer.data)
            return Response(message.response)
        except BaseError as e:
            message.add_error(e)
            return Response(message.response,
                            status=status.HTTP_400_BAD_REQUEST)
Example #2
0
    def create_concert(self, request):
        message = Message()
        try:
            concert_data = request.data
            print(request.user.customuser.role_num.role_num)
            if request.user.customuser.role_num.role_num != 1:
                raise WrongAccountTypeException("You're not a venue_owner")
            if concert_data.keys() < {
                    "concert_name", "artist_id", "date_time", "default_price"
            }:
                raise InsufficientFieldsException(
                    "Please provide all of the concert fields: concert_name, venue_id, artist_id, date_time"
                )
            try:
                concert_data["artist_id"] = int(concert_data["artist_id"])
            except ValueError:
                raise FieldTypeException("venue_id must be an int")
            venue = request.user.customuser.venue

            concert_data["venue_id"] = venue
            concert = self.concert_service.create_concert(concert_data)

            serializer = ConcertSerializer(concert)
            message.add_payload("Successfully created a concert",
                                serializer.data)

            return Response(message.response)
        except BaseError as e:
            message.add_error(e)
            return Response(message.response,
                            status=status.HTTP_400_BAD_REQUEST)
Example #3
0
    def confirm_ticket(self, request):
        message = Message()
        try:

            if request.data.keys() < {"credit_card", "ticket_id"}:
                raise InsufficientFieldsException(
                    "Please provide credit card details and ticket_id")

            credit_card_details = request.data["credit_card"]
            ticket_id = request.data["ticket_id"]
            if credit_card_details["new"] and credit_card_details.keys() < {
                    "credit_card_number", "security_code", "expiration_date",
                    "card_nickname"
            }:
                raise InsufficientFieldsException(
                    "Please provide all of the credit card details: credit_card_number, security_code, expiration_date, card_nickname"
                )
            if not credit_card_details["new"] and credit_card_details.keys(
            ) < {"credit_card_id"}:
                raise InsufficientFieldsException("No credit_card_id provided")

            ticket = self.customer_service.confirm_ticket(
                request.user, ticket_id, credit_card_details)

            serializer = TicketSerializer(ticket)

            message.add_payload("Successfully confirmed ticket",
                                serializer.data)
            return Response(message.response)
        except BaseError as e:
            message.add_error(e)
            return Response(message.response)
Example #4
0
    def create_venue(self, request):
        message = Message()
        try:

            user_data = request.data
            serializer_context = {
                'request': request,
            }
            if user_data.keys() < {
                    "username", "password", "role_num", "seat_rows",
                    "seat_cols", "venue_name", "address", "location"
            }:
                raise InsufficientFieldsException(
                    "Please provide all of the user fields: username, password, role_num, seat_rows, seat_cols, venue_name, address, location"
                )
            if user_data["location"].keys() < {"lon", "lat"}:
                raise InsufficientFieldsException(
                    "Please provide all of the location fields: lon, lat")
            if user_data["role_num"] != 1:
                raise WrongAccountTypeException(
                    "Wrong Role number provided for customer: role_num provided "
                    + str(user_data["role_num"]))

            user = self.venue_service.create_venue(user_data)
            serializer = VenueSerializer(user, context=serializer_context)

            message.add_payload("Successfully created a venue account",
                                serializer.data)
            return Response(message.response)
        except BaseError as e:
            message.add_error(e)
            return Response(message.response,
                            status=status.HTTP_400_BAD_REQUEST)
Example #5
0
    def create_customer(self, request):
        message = Message()
        try:

            user_data = request.data
            serializer_context = {
                'request': request,
            }

            if user_data.keys() < {"username", "password", "role_num"}:
                raise InsufficientFieldsException(
                    "Please provide all of the user fields: username, password, role_num"
                )
            if user_data["role_num"] != 2:
                raise WrongAccountTypeException(
                    "Wrong Role number provided for customer: role_num provided"
                    + str(user_data["role_num"]))

            user = self.customer_service.create_customer(user_data)
            serializer = CustomUserSerializer(user, context=serializer_context)

            message.add_payload("Successfully created an account",
                                serializer.data)
            return Response(message.response)
        except BaseError as e:
            message.add_error(e)
            return Response(message.response)
Example #6
0
    def get_user_type(self, request):
        message = Message()
        try:
            message.add_payload("Successfully Retrieved Role",
                                request.user.customuser.role_num.role_num)

            return Response(message.response)
        except BaseError as e:
            message.add_error(e)
            return Response(message.response,
                            status=status.HTTP_400_BAD_REQUEST)
Example #7
0
    def find_concerts(self, request):
        message = Message()
        try:
            concerts = self.concert_service.find_concerts(request.query_params)
            serializer = ConcertSerializer(concerts, many=True)

            message.add_payload("Successfully retrieved concerts",
                                serializer.data)
            return Response(message.response)
        except BaseError as e:
            message.add_error(e)
            return Response(message.response)
Example #8
0
    def get_my_tickets(self, request):
        message = Message()
        try:

            if request.user.customuser.role_num.role_num != 2:
                raise WrongAccountTypeException(
                    "Wrong account type, you should be a customer")
            tickets = self.customer_service.get_my_tickets(
                request.user.customuser)
            serializer = TicketSerializer(tickets, many=True)

            message.add_payload("Successfully retrieved tickets",
                                serializer.data)
            return Response(message.response)
        except BaseError as e:
            message.add_error(e)
            return Response(message.response)
Example #9
0
    def get_my_concerts(self, request):
        message = Message()

        try:
            if request.user.customuser.role_num.role_num != 1:
                raise WrongAccountTypeException("You're not a venue_owner")

            concerts = self.concert_service.get_concerts_by_venue(
                request.user.customuser.venue)

            serializer = ConcertSerializer(concerts, many=True)
            message.add_payload("Successfully retrieved concerts",
                                serializer.data)
            return Response(message.response)

        except BaseError as e:
            message.add_error(e)
            return Response(message.response,
                            status=status.HTTP_400_BAD_REQUEST)
Example #10
0
    def reserve_ticket(self, request):
        message = Message()
        try:
            ticket_data = request.data
            if ticket_data.keys() < {"ticket_id"}:
                raise InsufficientFieldsException(
                    "Please provide the ticket_id")

            ticket = self.customer_service.reserve_ticket(
                request.user, ticket_data["ticket_id"])

            serializer = TicketSerializer(ticket)

            message.add_payload("Successfully reserved ticket",
                                serializer.data)
            return Response(message.response)
        except BaseError as e:
            message.add_error(e)
            return Response(message.response)
Example #11
0
    def get_artist_by_id(self, request):
        message = Message()

        try:
            if "artist_id" not in request.query_params:
                InsufficientFieldsException("Please provide a artist_id")
            try:
                artist_id = int(request.query_params["artist_id"])
            except ValueError:
                raise FieldTypeException("artist_id must be an int")

            artist = self.artist_service.get_artist_by_id(artist_id)
            serializer = ArtistSerializer(artist)
            message.add_payload("Successfully retrieved artist",
                                serializer.data)
            return Response(message.response)

        except BaseError as e:
            message.add_error(e)
            return Response(message.response,
                            status=status.HTTP_400_BAD_REQUEST)
Example #12
0
    def get_venue_by_id(self, request):
        message = Message()

        try:
            if "venue_id" not in request.query_params:
                InsufficientFieldsException("Please provide a venue_id")
            try:
                venue_id = int(request.query_params["venue_id"])
            except ValueError:
                raise FieldTypeException("venue_id must be an int")

            venue = self.venue_service.get_venue_by_id(venue_id)
            serializer = VenueSerializer(venue)
            message.add_payload("Successfully retrieved venue",
                                serializer.data)
            return Response(message.response)

        except BaseError as e:
            message.add_error(e)
            return Response(message.response,
                            status=status.HTTP_400_BAD_REQUEST)
Example #13
0
    def get_tickets_by_concert_id(self, request):
        message = Message()
        try:
            if request.query_params.keys() < {"concert_id"}:
                raise InsufficientFieldsException(
                    "Please provide a concert_id provided")

            concert_id = request.query_params["concert_id"]
            tickets = self.customer_service.get_tickets_by_concert_id(
                concert_id)

            serializer = AvailableTicketSerializer(tickets, many=True)

            message.add_payload("Successfully retrieved ticket",
                                serializer.data)

            return Response(message.response)

        except BaseError as e:
            message.add_error(e)
            return Response(message.response)