Ejemplo n.º 1
0
def dummy():
    # Create a user if they do not exist.
    user = User.query.filter_by(email="*****@*****.**").first()
    if not user:
        user = User("*****@*****.**", "123456")
        user.save()

    for i in range(100):
        # Add events to the database
        event = Event(faker.lorem_ipsum.title(words_quantity=10), faker.name.location(), faker.date.date(), user.id)
        event.save()

    for j in range(500):
        # Add guests to the database
        guest = Guest(faker.name.first_name(), faker.name.last_name(), faker.name.company_name(), faker.email.address(user=None), user.id)
        guest.save()

    for ev in range(1000):
        # Add tickets to the event
        event = Event.query.filter_by(event_id=randint(1, Event.query.count() - 1)).first()
        guest = Guest.query.filter_by(guest_id=randint(1, Guest.query.count() - 1)).first()
        ticket = Ticket(event.event_id, guest.guest_id, faker.lorem_ipsum.words(quantity=15, as_list=False), faker.basic.number(at_least=0, at_most=1), faker.basic.number(at_least=0, at_most=1), faker.basic.number(at_least=0, at_most=1000))
        db.session.add(ticket)
        try:
            db.session.commit()
        except IntegrityError:
            db.session.rollback()
Ejemplo n.º 2
0
def saveEvent(uid, eventType, time):
    event = Event(
                    uid,
                    eventType,
                    time
            )
    event.add(event)
Ejemplo n.º 3
0
def add_event_post(eventId):
    user = DB.find_one(collection="Profile",
                       query={"email": current_user.email})
    if user is None:
        flash('Please create your profile first!')
        return redirect(url_for('edit_profile'))
    author_id = user['_id']
    timestamp = datetime.now()
    post_text = request.form['post_text']
    newPost = Post(author_id, timestamp, post_text)
    newPostId = newPost.insert()
    Event.add_post_by_id(ObjectId(eventId), newPostId)
    return redirect(url_for('display_event', id=eventId))
Ejemplo n.º 4
0
    def put(self, event_id):
        """
        PUT Method for Event. Login required

        :param event_id:
        :return: JSON response
        """
        event = Event.query.filter_by(id=event_id).first()
        if event is None:
            return self.response(404)

        params = self.get_form_values(Event.get_columns(), request.form)

        country = Country.query.filter_by(iso_code=str(params['country_id'].upper())).first()
        if country is None:
            return self.response(400, "The country_id doesn't exists")

        if params['title']:
            event.title = params['title']
        if params['description']:
            event.description = params['description']
        if params['category_id']:
            event.category_id = params['category_id']
        if params['country_id']:
            event.country_id = country.id

        event.save()

        return self.response(200)
Ejemplo n.º 5
0
    def before_request(self, name, event_id=None, *args, **kwargs):
        self.event = Event.load(event_id)
        self.validate_show(self.event)

        self.daily_plans = self.event.active_daily_plans
        self.split_recipes = self.event.daily_recipes_split_by_shopping

        self.ingredients = DailyPlan.load_ingredient_amounts_for_daily_plans(
            [dp.id for dp in self.daily_plans])
Ejemplo n.º 6
0
    def before_request(self, name, hash_value):
        from app.helpers.general import unobscure

        event_id = unobscure(hash_value)
        self.event = Event.load(event_id)

        self.validate_show(self.event)

        if current_user in self.event.connected_users:
            return redirect(url_for("EventView:show", id=event_id))
Ejemplo n.º 7
0
def add_event():
    event_date = request.form['date']
    event_name = request.form['name']
    event_guests = request.form['guests']
    event_room = request.form['room']
    event_description = request.form['description']
    event_recurring = request.form['recurring']
    new_event = Event(event_date, event_name, event_guests, event_room, event_description, event_recurring)
    add_new_event(new_event)
    return render_template('index.html', title="Bookings", events=events)
Ejemplo n.º 8
0
    def post(self):
        """
        POST Method for Event. Login required

        :return: JSON response
        """
        try:
            self.validate_fields(Event.required_fields(), request.form)
        except ValueError:
            return self.response(400, 'Required fields: ' + ' '.join(Event.required_fields()))

        params = self.get_form_values(Event.get_columns(), request.form)

        country = Country.query.filter_by(iso_code=str(params['country_id'].upper())).first()
        if country is None:
            return self.response(400, "The country_id doesn't exists")

        if params['category_id']:
            category = EventCategory.query.filter_by(id=params['category_id']).first()
            if category is None:
                return self.response(400, "The category_id doesn't exists")

        new_event = Event(
            title=params['title'],
            description=params['description'],
            category_id=params['category_id'],
            country_id=country.id,
        )
        new_event.save()

        return self.response(201)
Ejemplo n.º 9
0
def create_event(current_user):
    """
    Create an event from the sent json data.
    :param current_user: Current User
    :return:
    """
    if request.content_type == 'application/json':
        data = request.get_json().get("event")
        name = data.get('name') if data.get('name') is not None else None
        location = data.get('location') if data.get(
            'location') is not None else None
        time = data.get('time') if data.get('time') is not None else None
        eval_link = data.get('eval_link') if data.get(
            'eval_link') is not None else None
        if name and location and time:
            user_event = Event(name, location, time, current_user.id)
            user_event.event_eval_link = eval_link
            user_event.save()
            return response_for_created_event(user_event, 201)
        return response('failed',
                        'Missing some event data, nothing was changed', 400)
    return response('failed', 'Content-type must be json', 202)
Ejemplo n.º 10
0
def edit_event(current_user, event_id):
    """
    Validate the event Id. Also check for the data in the json payload.
    If the data exists update the event with the new data.
    :param current_user: Current User
    :param event_id: Event Id
    :return: Http Json response
    """
    if request.content_type == 'application/json':
        data = request.get_json().get("event")
        name = data.get('name') if data.get("name") is not None else ""
        location = data.get('location') if data.get(
            "location") is not None else ""
        time = data.get('time') if data.get("time") is not None else ""
        eval_link = data.get('eval_link') if data.get(
            "eval_link") is not None else ""
        updated_event = Event(name, location, time, current_user.id)
        updated_event.event_eval_link = eval_link
        if name or location or time or eval_link:
            try:
                int(event_id)
            except ValueError:
                return response('failed', 'Please provide a valid Event Id',
                                400)
            user_event = User.get_by_id(
                current_user.id).events.filter_by(event_id=event_id).first()
            if user_event:
                user_event.update(updated_event)
                return response_for_created_event(user_event, 201)
            return response(
                'failed', 'The Event with Id ' + event_id + ' does not exist',
                404)
        return response(
            'failed',
            'No attribute or value was specified, nothing was changed', 400)
    return response('failed', 'Content-type must be json', 202)
Ejemplo n.º 11
0
 def before_request(self, name, event_id, **kwargs):
     self.event = Event.load(event_id)
     self.validate_edit(self.event)
Ejemplo n.º 12
0
from app.models.events import Event

event1 = Event("03/04/2021", "duck's big birthday", 20, "room1",
               "big birthday bash", True)
event2 = Event("30/05/2021", "bill and ben wedding", 150, "big ballroom",
               "wedding of the year", True)

events = [event1, event2]


def add_new_event(event):
    events.append(event)
Ejemplo n.º 13
0
def poll_create_event(poll):
    user = DB.find_one(collection="Profile",
                       query={"email": current_user.email})
    if user is None:
        flash('Please create your profile first!')
        return redirect(url_for('edit_profile'))

    my_poll = DB.find_one(collection="Poll", query={"_id": ObjectId(poll)})
    if my_poll is None:
        flash('Please contact admin, DB issues!')
        return redirect(url_for('polls'))

    date1 = None
    largest = 0
    for option in my_poll['options']:
        if 'voters' in option:
            if len(list(option['voters'])) > largest:
                largest = len(list(option['voters']))
                date1 = option['date']

    event_obj = Event(name=my_poll['name'],
                      description=my_poll['description'],
                      start=date1,
                      end=None,
                      host=user['_id'],
                      invitees=[],
                      pictureDir='events.jpg',
                      private=True).json()

    form = EventForm()
    if form.validate_on_submit():
        form.starttime.data = form.starttime.data.split(' ')
        time1 = form.starttime.data[0].split(':')
        if form.starttime.data[1] == 'PM':
            time1[0] = int(time1[0]) + 12
            if time1[0] == 24:
                time1[0] = 0
        time1 = time(int(time1[0]), int(time1[1]))

        form.endtime.data = form.endtime.data.split(' ')
        time2 = form.endtime.data[0].split(':')
        if form.endtime.data[1] == 'PM':
            time2[0] = int(time2[0]) + 12
            if time2[0] == 24:
                time2[0] = 0
        time2 = time(int(time2[0]), int(time2[1]))

        date1 = datetime((form.start.data).year, (form.start.data).month,
                         (form.start.data).day, time1.hour, time1.minute)
        date2 = datetime((form.end.data).year, (form.end.data).month,
                         (form.end.data).day, time2.hour, time2.minute)
        # check date and time
        if date1 < datetime.now():
            flash('Start has to be today or later!')
            return render_template('poll-create-event.html',
                                   title="Create Your Event",
                                   form=form,
                                   poll=poll,
                                   event=event_obj)
        elif date2 < date1:
            flash('End cannot be earlier than Start!')
            return render_template('poll-create-event.html',
                                   title="Create Your Event",
                                   form=form,
                                   poll=poll,
                                   event=event_obj)
        elif date1 == date2:
            flash('Start and End cannot be the same!')
            return render_template('poll-create-event.html',
                                   title="Create Your Event",
                                   form=form,
                                   poll=poll,
                                   event=event_obj)
        if form.pictureDir.data is None:
            filename = "event.jpg"
        else:
            filename = photos.save(form.pictureDir.data,
                                   name='event/' + str(user['_id']) + '.')
            filename = filename.split('/')[1]

        form.name.data = form.name.data.strip()
        form.description.data = form.description.data.strip()
        if form.eventType.data == 'private':
            event_type = True
        else:
            event_type = False

        inviteesList = []
        for voter in my_poll['voters']:
            voter_obj = DB.find_one(collection='Profile', query={'_id': voter})
            voter_dict = {'email': voter_obj['email'], 'status': 'going'}
            inviteesList.append(voter_dict)

        updated_event = Event(name=form.name.data,
                              description=form.description.data,
                              start=date1,
                              end=date2,
                              host=user['_id'],
                              invitees=inviteesList,
                              pictureDir=filename,
                              private=event_type)
        eventid = updated_event.insert(user['email'], user['_id'])

        for invitees in inviteesList:
            DB.update_one(collection="Profile",
                          filter={"email": invitees['email']},
                          data={"$push": {
                              "events": ObjectId(eventid)
                          }})

        return redirect(url_for('delete_poll', poll=poll))
    return render_template('poll-create-event.html',
                           title="Create Your Event",
                           form=form,
                           poll=poll,
                           event=event_obj)
Ejemplo n.º 14
0
def create_events():
    user = DB.find_one(collection="Profile",
                       query={"email": current_user.email})
    if user is None:
        flash('Please create your profile first!')
        return redirect(url_for('edit_profile'))

    form = EventForm()
    # if form.is_submitted():
    if form.validate_on_submit():

        form.starttime.data = form.starttime.data.split(' ')
        time1 = form.starttime.data[0].split(':')
        if form.starttime.data[1] == 'PM':
            time1[0] = int(time1[0]) + 12
            if time1[0] == 24:
                time1[0] = 0
        time1 = time(int(time1[0]), int(time1[1]))

        form.endtime.data = form.endtime.data.split(' ')
        time2 = form.endtime.data[0].split(':')
        if form.endtime.data[1] == 'PM':
            time2[0] = int(time2[0]) + 12
            if time2[0] == 24:
                time2[0] = 0
        time2 = time(int(time2[0]), int(time2[1]))

        date1 = datetime((form.start.data).year, (form.start.data).month,
                         (form.start.data).day, time1.hour, time1.minute)
        date2 = datetime((form.end.data).year, (form.end.data).month,
                         (form.end.data).day, time2.hour, time2.minute)
        # check date and time
        if date1 < datetime.now():
            flash('Start has to be today or later!')
            return render_template('create-event.html',
                                   title="Create Your Event",
                                   form=form)
        elif date2 < date1:
            flash('End cannot be earlier than Start!')
            return render_template('create-event.html',
                                   title="Create Your Event",
                                   form=form)
        elif date1 == date2:
            flash('Start and End cannot be the same!')
            return render_template('create-event.html',
                                   title="Create Your Event",
                                   form=form)
        if form.pictureDir.data is None:
            filename = "event.jpg"
        else:
            filename = photos.save(form.pictureDir.data,
                                   name='event/' + str(user['_id']) + '.')
            filename = filename.split('/')[1]

        form.name.data = form.name.data.strip()
        form.description.data = form.description.data.strip()
        if form.eventType.data == 'private':
            event = Event(name=form.name.data,
                          description=form.description.data,
                          start=date1,
                          end=date2,
                          host=user['_id'],
                          invitees=[],
                          pictureDir=filename,
                          private=True)
        else:
            event = Event(name=form.name.data,
                          description=form.description.data,
                          start=date1,
                          end=date2,
                          host=user['_id'],
                          invitees=[],
                          pictureDir=filename,
                          private=False)
        event.insert(current_user.email, user['_id'])
        flash('Create event successful')
        return redirect(url_for('view_events'))
    return render_template('create-event.html',
                           title="Create Your Event",
                           form=form)
Ejemplo n.º 15
0
def saveEvent(uid, eventType, time):
    event = Event(uid if uid else "00000000", eventType, time)
    event.add(event)
    return event