Ejemplo n.º 1
0
    def post(self, name):
        """adds a new event"""
        data = Event.parser.parse_args()
        if EventModel.find_event_by_name(name):
            return {
                "message":
                "An event with name '{}' already exists. Please try to use another name"
                .format(name)
            }, 400
        if not LocationModel.find_location_by_id(data["location_id"]):
            return {
                "message": "Location_id not valid".format(data["location_id"])
            }, 400
        if not OrganizerModel.find_organizer_by_id(data["organizer_id"]):
            return {
                "message": "Holder_id not valid".format(data["holder_id"])
            }, 400

        event = EventModel(name, **data)
        try:
            event.save_to_db()
        except Exception as e:
            return {
                "message": "An error ocurred inserting the event: {}".format(e)
            }, 500
        return {"event_result": event.json()}, 201
Ejemplo n.º 2
0
    def post(self):

        parser = reqparse.RequestParser(
        )  # create parameters parser from request

        # define al input parameters need and its type
        parser.add_argument('name',
                            type=str,
                            required=True,
                            help="This field cannot be left blank")
        parser.add_argument('place', type=str)
        parser.add_argument('city', type=str)
        parser.add_argument('date', type=str)
        parser.add_argument('price', type=int)
        parser.add_argument('total_available_tickets', type=int)

        data = parser.parse_args()

        for event in EventModel.query.all():
            if (data['name'] == event.name):
                return {
                    'message': 'Event {} already exists'.format(event.name)
                }, 404

        new_event = EventModel(data['name'], data['place'], data['city'],
                               data['date'], data['price'],
                               data['total_available_tickets'])

        new_event.save_to_db()

        return new_event.json(), 200
Ejemplo n.º 3
0
    def put(self, id):
        data = Event.parser.parse_args()
        data.start_time = datetime.datetime.strptime(
            data.start_time, '%Y-%m-%d %H:%M:%S')
        data.end_time = datetime.datetime.strptime(
            data.end_time, '%Y-%m-%d %H:%M:%S')
        data.event_date = datetime.datetime.strptime(
            data.event_date, '%Y-%m-%d %H:%M:%S')

        event = EventModel.find_by_id(id)

        if event is None:
            event = EventModel(**data)
        else:
            event.name = data['name'] or event.name
            event.category = data['category'] or event.category
            event.location = data['location'] or event.location
            event.start_time = data['start_time'] or event.start_time
            event.end_time = data['end_time'] or event.end_time
            event.event_date = data['event_date'] or event.event_date
            event.owner = data['owner'] or event.owner
            event.status = data['status'] or event.status
            event.quota = data['quota'] or event.quota
            event.price = data['price'] or event.price

        event.save_to_db()
        return event.json()
Ejemplo n.º 4
0
    def put(self, EventID):
        '''
        This function is used to upate or add an event if it does 
        not exists, we will not go through input check or more details
        this is just an illstration basic project
        '''
        event = EventModel.find_event(EventID)

        if not event:
            # Same case as adding a new event
            data = Event.parser.parse_args()
            #** is used to unpack the dictionnnary
            event = EventModel(EventID, **data)
        # use this to update stop or tags
        else:
            data = Event.parser.parse_args()
            # you may check data compatiblity here
            if data['stop'] is not None: event.stop = data['stop']
            if data['tags']:
                # the format of tags: #tag1##tag2##tag3#
                # if tag exist or empty don't add it
                # you may set another rules of tag length, chars to remove...
                if data['tags'] not in event.tags.split('##'):
                    event.tags += f"#{data['tags']}#"
        try:
            event.add_event()
        except:
            return {'message': 'Server error when trying to update event'}, 500

        return event.json(), 200
Ejemplo n.º 5
0
    def post(self, EventID):
        '''
        This function is used to add a new event to the database
        Put may do the same but we prefer to separate them for future extension 
        '''
        if EventModel.find_event(EventID):
            return {
                'message': f'An event with EventID {EventID} already exists'
            }, 400

        # The parser will detect automatically if the body is not well formatted so it
        # it will throw a 400 bad request error reponse
        data = Event.parser.parse_args()
        event = EventModel(EventID, **data)

        # if the server cannot add the event to database throw this 500 error reponse
        try:
            event.add_event()
        except Exception as error:
            return {
                'message':
                f'Server error occured when trying to save event {error}'
            }, 500

        return event.json(), 201
Ejemplo n.º 6
0
    def post(self, group_id):
        data = Event.parser.parse_args()

        event = EventModel(data['name'], data['description'], data['location'],
                           data['date_time'], data['is_private'], group_id)

        event.save_to_db()

        return event.json(), 201
    def post(self, id):
        data = self.parser.parse_args()
        event = EventModel(data.name, data.startdate, data.enddate, data.org,
                           data.place, get_jwt_identity())
        try:
            event.save_to_db()
        except:
            return {"message": "An error occurred creating the event."}, 500

        return event.json(), 201
Ejemplo n.º 8
0
    def post(self):

        parser = reqparse.RequestParser(
        )  # create parameters parser from request
        # define al input parameters need and its type
        parser.add_argument(n.NM,
                            type=str,
                            required=True,
                            help="Name of the event")
        parser.add_argument(n.PLC,
                            type=str,
                            required=True,
                            help="Place or area where the event takes place")
        parser.add_argument(n.CTY,
                            type=str,
                            required=True,
                            help="City that holds the event")
        parser.add_argument(n.DATE,
                            type=str,
                            required=True,
                            help="Date when the event takes place")
        parser.add_argument(n.PRC,
                            type=int,
                            required=True,
                            help="Weighted average price of the event")
        parser.add_argument(n.TAT,
                            type=int,
                            required=True,
                            help="Number of people that can attend the event")
        data = parser.parse_args()

        with lock.lock:
            if EventModel.find_by_uniqueness(data[n.NM], data[n.DATE],
                                             data[n.CTY]):
                return {n.MSG: "Event already in the data base"}, 409

            if data[n.PRC] < 0:
                return {n.MSG: "Negative price not allowed"}, 400

            if data[n.TAT] < 0:
                return {n.MSG: "Negative number of tickets not possible"}, 400

            try:
                new_event = EventModel(data[n.NM], data[n.PLC], data[n.CTY],
                                       data[n.DATE], data[n.PRC], data[n.TAT])
                new_event.save_to_db()
                return new_event.json(), 201
            except:
                return {n.MSG: "Error Description"}, 500
Ejemplo n.º 9
0
    def post(self, name):
        args = Event.parser1.parse_args()
        if EventModel.find_by_name(name):
            return {
                'message':
                "A event with name '{}' already exists.".format(name)
            }, 400

        event = EventModel(name, **args)
        try:
            event.save_to_db()
        except:
            return {
                'message': 'An error occurred while creating the event.'
            }, 500

        return event.json(), 201
Ejemplo n.º 10
0
    def post(self, id=None):
        data = self.parser()
        with lock.lock:
            if id and EventModel.find_by_id(id):
                return {
                    'message': "Event with id [{}] already exists".format(id)
                }, 404
            else:
                event = EventModel(data['name'], data['place'], data['city'],
                                   data['date'], data['price'],
                                   data['available_tickets'])
                print(event)
                try:
                    event.save_to_db()
                except Exception as e:
                    print(e)
                    return {"message": 'error'}, 500

                return event.json(), 201
    def put(self, id):
        data = self.parser.parse_args()

        event = EventModel.find_by_id(id)
        if event:
            try:
                event.update(data.name, data.startdate, data.enddate, data.org,
                             data.place, get_jwt_identity())
            except:
                return {"message": "Non autorizzato"}, 403
        else:
            event = EventModel(data.name, data.startdate, data.enddate,
                               data.org, data.place, get_jwt_identity())
        try:
            event.save_to_db()
        except:
            return {"message": "An error occurred creating the event."}, 500

        return event.json(), 201
Ejemplo n.º 12
0
    def post(self):
        data = EventPost.parser.parse_args()
        data.start_time = datetime.datetime.strptime(
            data.start_time, '%Y-%m-%d %H:%M:%S')
        data.end_time = datetime.datetime.strptime(
            data.end_time, '%Y-%m-%d %H:%M:%S')
        data.event_date = datetime.datetime.strptime(
            data.event_date, '%Y-%m-%d %H:%M:%S')

        event = EventModel(**data)

        try:
            event.save_to_db()

        except Exception as e:
            print('Err: ' + str(e))
            return {'message': 'An error occured inserting the event'}, 500

        return event.json(), 201
Ejemplo n.º 13
0
    def put(self, event_id):
        data = Event.parser.parse_args()

        event = EventModel.find_by_id(event_id)

        if event is None:
            event = EventModel(data['name'], data['description'],
                               data['location'], data['date_time'],
                               data['is_private'], group_id)
        else:
            event.name = data['name']
            event.description = data['description']
            event.location = data['location']
            event.date_time = datetime.strptime(data['date_time'],
                                                '%Y/%m/%d %H:%M')
            event.is_private = data['is_private']

        event.save_to_db()

        return event.json(), 200
Ejemplo n.º 14
0
    def post(cls):
        parser = reqparse.RequestParser()
        parser.add_argument('name', type=str, required=True)
        parser.add_argument('description', type=str, required=False)
        parser.add_argument('start_date', type=datetime.fromisoformat, required=True)
        parser.add_argument('end_date', type=datetime.fromisoformat, required=True)
        parser.add_argument('duration_time', type=int, required=False)
        parser.add_argument('image_url', type=str, required=False)
        data = parser.parse_args()

        current_userid = get_jwt_identity()
        current_user = UserModel.find_by_id(current_userid)

        if not current_user:
            return {"status": Status.USER_NOT_FOUND, "message": "User not found"}, 403

        start_date: datetime = data['start_date']
        end_date: datetime = data['end_date']
        if start_date > end_date:
            return {"status": Status.INVALID_DATA, "message": "End_date cannot be before start_date"}, 403

        duration_time = data['duration_time']
        if duration_time and duration_time < 0:
            return {"status": Status.INVALID_DATA, "message": "Duration_time cannot be less than 0"}, 403

        event = EventModel(name=data['name'], description=data['description'], start_date=start_date, end_date=end_date, image_url=data['image_url'],
                           duration_time=duration_time)

        admin_participant = ParticipantModel(user_id=current_user.id, role=Role.ADMIN)
        event.participants.append(admin_participant)

        event.invitation_link = str(uuid.uuid4())

        event.save_to_db()

        return {"status": Status.SUCCESS,
                "message": "Event created successfully",
                "event": event.json()
                }, 201