Exemplo n.º 1
0
def new_event_post():
    """
    View function to handle creating a new EventPost post

    GET Request:
    Returns HTML template to render the Event form

    POST Request:
    Expects a properly validated Event form to create a EventPosts object
    """
    form = EventForm()
    users = []
    for user in Users.query.order_by(Users.last_name):
        users.append(user.name)
    tags = choices.TAGS

    if flask_request.method == 'POST' and form.validate_on_submit():
        post_id = create_event_post(
            event_date=form.event_date.data,
            event_location=form.event_location.data,
            event_leader=form.event_leader.data.title(),
            start_time=form.start_time.data,
            end_time=form.end_time.data,
            sponsor=form.sponsor.data,
            author=current_user.id,
            title=form.title.data,
            content=form.content.data,
            tags=flask_request.form.getlist('tags'))
        return redirect(url_for('main.view_post', post_id=post_id))
    return render_template('new_event_post.html',
                           form=form,
                           users=users,
                           tags=tags)
Exemplo n.º 2
0
def new_event(equipment_id, date_input, timeslot):
    """Display the event creation page & process data from the creation form."""
    form = EventForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            event = Event(
                title=form.title.data,
                color=form.color.data,
                date=form.date.data,
                timeslot=form.timeslot.data,
                user=
                current_user,  #User(id= 3, username= "******", password= "******"),
                equipment=form.equipment.data)
            db.session.add(event)
            db.session.commit()
            flash('Event Created.')
        print(form.errors)
        return redirect(url_for('main.home'))
    else:
        context = {
            "timeslot_input": timeslot,
            "date_input": date_input,
            "min_date": datetime.now(),
            'max_date': datetime.now() + timedelta(days=25),
        }
        form.date.default = date_input
        form.timeslot.default = timeslot
        form.equipment.default = [equipment_id]
        print(form.errors)
        return render_template('new_event.html', form=form)
Exemplo n.º 3
0
def addeventsubmit():
    # Define form
    form = EventForm()
    # Process form
    if form.validate_on_submit():
        # Get data
        title = form.title.data
        description = form.description.data
        address = form.address.data
        user_id = current_user.get_id()
        start_time = datetime.combine(form.start_date.data,
                                      form.start_time.data)
        end_time = datetime.combine(form.end_date.data, form.end_time.data)
        travel_method = form.travel_method.data
        # Create event
        esi.addevent(title=title,
                     description=description,
                     user_id=user_id,
                     address=address,
                     start_time=start_time,
                     end_time=end_time,
                     travel_method=travel_method)
        # Redirect to event list
        return redirect(url_for('main.eventlist'))
    else:
        # Flash all form errors
        for field, errormessages in form.errors.items():
            for errormessage in errormessages:
                flash(errormessage, category="error")
        # Redirect to event list
        return redirect(url_for('main.addevent'))
Exemplo n.º 4
0
def index():
    form = EventForm()
    if form.validate_on_submit():
        employees = form.employees_count.data
        salary = form.average_salary.data / (21 * 8)
        time = form.event_duration.data
        count = int(employees * salary / time)
        return render_template('index.html', cost=count)
    return render_template('index.html', form=form)
Exemplo n.º 5
0
def add_events():
    event_form = EventForm()
    if event_form.validate_on_submit():
        event = Event(start=event_form.start.data,
                      end=event_form.end.data,
                      name=event_form.name.data,
                      price=event_form.price.data,
                      latitude=event_form.locationLatitude.data,
                      longitude=event_form.locationLongitude.data)
        db.session.add(event)
        db.session.commit()
        event.save_list_of_categories(event_form.Categories.data.split(','))
        flash('Event Added.')
    return render_template('add_events.html', event_form=event_form)
Exemplo n.º 6
0
def event_register():
    form = EventForm()
    form.set_choices()
    if form.validate_on_submit():
        event = Event(name=form.name.data, date=form.date.data, \
                      place=form.place.data, type_id=form.type_id.data)
        event.description = form.description.data
        db.session.add(event)
        db.session.commit()
        flash(_('Succesfully athlete added'))
        return redirect(url_for('main.events'))
    return render_template('event_register_edit.html',
                           form=form,
                           title=_('Register event'))
Exemplo n.º 7
0
def index():
    form = EventForm()
    if form.validate_on_submit():
        language = guess_language(form.event.data)
        if language == 'UNKNOWN' or len(language) > 5:
            language = ''
        event = Event(body=form.event.data, author=current_user,
                      language=language, date=form.date.data)
        db.session.add(event)
        db.session.commit()
        flash(_('Your event is now live!'))
        return redirect(url_for('main.index'))
    page = request.args.get('page', 1, type=int)
    events = current_user.followed_events().paginate(
        page, current_app.config['EVENTS_PER_PAGE'], False)
    next_url = url_for('main.index', page=events.next_num) \
        if events.has_next else None
    prev_url = url_for('main.index', page=events.prev_num) \
        if events.has_prev else None
    return render_template('index.html', title=_('Home'), form=form,
                           events=events.items, next_url=next_url,
                           prev_url=prev_url)
Exemplo n.º 8
0
def event(id):
    event = Event.query.get_or_404(id)
    form = EventForm()
    form.set_choices()
    if form.validate_on_submit():
        print('save')
        event.name = form.name.data
        event.date = form.date.data
        event.place = form.place.data
        event.description = form.description.data
        event.type_id = form.type_id.data
        db.session.commit()
        flash(_('Your changes have been saved.'))
        return redirect(url_for('main.events'))
    elif request.method == 'GET':
        form.name.data = event.name
        form.date.data = event.date
        form.place.data = event.place
        form.description.data = event.description
        form.type_id.data = event.type_id
    return render_template('event_register_edit.html',
                           title=_('Edit event'),
                           form=form)
Exemplo n.º 9
0
def admin_events(selected_event_id=None, api_message=None):
    events = api_client.get_limited_events()
    event_types = api_client.get_event_types()
    speakers = api_client.get_speakers()
    venues = api_client.get_venues()
    session['events'] = events
    form = EventForm()

    temp_event = None
    errors = reject_reasons = []

    form.set_events_form(events, event_types, speakers, venues)

    if form.validate_on_submit():
        if form.image_filename.data:
            filename = form.image_filename.data.filename
        else:
            filename = form.existing_image_filename.data

        reject_reasons = json.loads(form.reject_reasons_json.data)

        if form.reject_reason.data:
            reject_reasons.append(
                {
                    'reason': form.reject_reason.data,
                    'created_by': session['user']['id']
                }
            )

        event = {
            'event_id': form.events.data,
            'event_type_id': form.event_type.data,
            'title': form.title.data,
            'sub_title': form.sub_title.data,
            'description': form.description.data,
            'image_filename': filename,
            'fee': int(form.fee.data) if form.fee.data else 0,
            'conc_fee': int(form.conc_fee.data) if form.conc_fee.data else 0,
            'multi_day_fee': int(form.multi_day_fee.data) if form.multi_day_fee.data else 0,
            'multi_day_conc_fee': int(form.multi_day_conc_fee.data) if form.multi_day_conc_fee.data else 0,
            'venue_id': form.venue.data,
            'event_dates': form.event_dates.data,
            'start_time': form.start_time.data,
            'end_time': form.end_time.data,
            'event_state': form.submit_type.data,
            'reject_reasons': reject_reasons,
            'remote_access': form.remote_access.data,
            'remote_pw': form.remote_pw.data,
            'show_banner_text': form.show_banner_text.data
        }

        adjusted_event = event.copy()

        from html import escape
        adjusted_event['description'] = escape(event['description'])
        adjusted_event['event_dates'] = json.loads(str(event['event_dates']))
        file_request = request.files.get('image_filename')
        if file_request:
            file_data = file_request.read()
            file_data_encoded = base64.b64encode(file_data)
            file_data_encoded = base64.b64encode(file_data_encoded).decode('utf-8')
            _file_size = size_from_b64(str(file_data_encoded))
            if _file_size > current_app.config['MAX_IMAGE_SIZE']:
                _file_size_mb = round(_file_size/(1024*1024), 1)
                _max_size_mb = current_app.config['MAX_IMAGE_SIZE']/(1024*1024)
                errors.append("Image {} file size ({} mb) is larger than max ({} mb)".format(
                    file_request.filename, _file_size_mb, _max_size_mb))
            else:
                adjusted_event['image_data'] = file_data_encoded

        if not errors:
            # remove empty values
            for key, value in event.items():
                if value != 0 and not value:
                    del adjusted_event[key]

            try:
                message = None
                if event.get('event_id'):
                    response = api_client.update_event(event['event_id'], adjusted_event)
                    message = 'event updated'

                    if event['event_state'] != "approved" and not form.cache_switch.data:
                        Cache.set_review_entity('get_events_in_future', event.get('event_id'))
                    else:
                        Cache.delete_review_entity('get_events_in_future', event.get('event_id'))
                        update_cache(
                            func=api_client.get_events_in_future_from_db,
                            decorator=only_show_approved_events, approved_only=True)
                else:
                    # do not need to update the cache here as an event is never in approved state when first created
                    response = api_client.add_event(adjusted_event)

                if 'error' in session:
                    raise HTTPError(response, message=session.pop('error'))

                return redirect(url_for('main.admin_events', selected_event_id=response.get('id'), api_message=message))
            except HTTPError as e:
                current_app.logger.error(e)
                temp_event = json.dumps(event)
                if "message" in e.message:
                    errors = e.message['message']
                else:
                    errors = json.dumps(e.message)

    return render_template(
        'views/admin/events.html',
        form=form,
        images_url=current_app.config['IMAGES_URL'],
        selected_event_id=selected_event_id,
        message=api_message,
        temp_event=temp_event,
        errors=json.dumps(errors)
    )
Exemplo n.º 10
0
def admin_events(selected_event_id=None, api_message=None):
    events = api_client.get_limited_events()
    event_types = api_client.get_event_types()
    speakers = api_client.get_speakers()
    venues = api_client.get_venues()
    session['events'] = events
    form = EventForm()

    temp_event = None
    errors = reject_reasons = []

    form.set_events_form(events, event_types, speakers, venues)

    if form.validate_on_submit():
        if form.image_filename.data:
            filename = form.image_filename.data.filename
        else:
            filename = form.existing_image_filename.data

        reject_reasons = json.loads(form.reject_reasons_json.data)

        if form.reject_reason.data:
            reject_reasons.append({
                'reason': form.reject_reason.data,
                'created_by': session['user']['id']
            })

        event = {
            'event_id':
            form.events.data,
            'event_type_id':
            form.event_type.data,
            'title':
            form.title.data,
            'sub_title':
            form.sub_title.data,
            'description':
            form.description.data,
            'image_filename':
            filename,
            'fee':
            int(form.fee.data) if form.fee.data else 0,
            'conc_fee':
            int(form.conc_fee.data) if form.conc_fee.data else 0,
            'multi_day_fee':
            int(form.multi_day_fee.data) if form.multi_day_fee.data else 0,
            'multi_day_conc_fee':
            int(form.multi_day_conc_fee.data)
            if form.multi_day_conc_fee.data else 0,
            'venue_id':
            form.venue.data,
            'event_dates':
            form.event_dates.data,
            'start_time':
            form.start_time.data,
            'end_time':
            form.end_time.data,
            'event_state':
            form.submit_type.data,
            'reject_reasons':
            reject_reasons
        }

        adjusted_event = event.copy()

        from cgi import escape
        adjusted_event['description'] = escape(event['description'])
        adjusted_event['event_dates'] = json.loads(str(event['event_dates']))

        file_request = request.files.get('image_filename')
        if file_request:
            # filename = secure_filename(file_request.filename)
            file_data = file_request.read()
            file_data_encoded = base64.b64encode(file_data)

            adjusted_event['image_data'] = file_data_encoded

        # remove empty values
        for key, value in event.iteritems():
            if not value:
                del adjusted_event[key]

        try:
            message = None
            if event.get('event_id'):
                response = api_client.update_event(event['event_id'],
                                                   adjusted_event)
                message = 'event updated'
            else:
                response = api_client.add_event(adjusted_event)

            return redirect(
                url_for('main.admin_events',
                        selected_event_id=response['id'],
                        api_message=message))
        except HTTPError as e:
            current_app.logger.error(e)
            temp_event = json.dumps(event)
            errors = json.dumps(e.message)

    return render_template('views/admin/events.html',
                           form=form,
                           images_url=current_app.config['IMAGES_URL'],
                           selected_event_id=selected_event_id,
                           message=api_message,
                           temp_event=temp_event,
                           errors=errors)
Exemplo n.º 11
0
def addevent():
    # Define form
    form = EventForm()
    # Render template with form
    return render_template('eventform.html', form=form)