Exemple #1
0
def add_activity():
    form = ActivityForm()
    if form.validate_on_submit():
        activity = ActivityInfo(name=form.name.data,
                                time=form.time.data,
                                address=form.address.data,
                                introduce=form.introduce.data,
                                guest=form.guest.data,
                                poster=form.poster_url.data)
        db.session.add(activity)
        db.session.commit()
        flash(u'活动添加成功!')
        return redirect(url_for('add_activity'))
    return render_template("admin/add_activity.html", title=u'活动', form=form)
Exemple #2
0
def add_activity():
    form = ActivityForm()
    if form.validate_on_submit():
        activity = ActivityInfo(name=form.name.data,
                                time=form.time.data,
                                address=form.address.data,
                                introduce=form.introduce.data,
                                guest=form.guest.data,
                                poster=form.poster_url.data)
        db.session.add(activity)
        db.session.commit()
        flash(u'活动添加成功!')
        return redirect(url_for('add_activity'))
    return render_template("admin/add_activity.html",
                           title=u'活动',
                           form=form)
def submit_activity():
    """
    Submit activity

    Render activity form
    Check form is valid and save to the database
    """
    if session.get('user') is None:
        flash('You must be logged-in to submit an Activity', 'error')
        return redirect(url_for('login'))

    form = ActivityForm()

    if form.validate_on_submit():
        td = form.venue.data
        del td['location']
        result = Activity().add_activity()
        activity_id = result[0]
        if result[0] != 'TITLE_EXISTS':
            if form.image.data:
                save_image(form.image.data, activity_id + '.jpg')

            return redirect(url_for('index'))

        form.title.errors.append('An activity with this name already exists')

    elif request.method == 'POST':
        flash('Please correct form errors below', 'error')

    return render_template(
        'activity_form.html',
        form=form,
        page_title=('Things to Do and Places to Go: Submit new Activity'),
        form_title='Add an Activity',
        nav_link='Submit_Activity',
        categories=CATEGORIES)
def edit_activity(activity_id):
    """
    Edit activity

    Render activity form
    Check form is valid and save to the database

    :param activity_id: string
    :return: redirect to home page
    """
    if session.get('user') is None:
        flash('You must be logged-in to edit an Activity', 'error')
        return redirect(url_for('login'))
    else:
        user_session = session.get('user')

    if check_activity_id(activity_id):
        activity_data = Activity().get_activity(activity_id)

        if activity_data is None:
            flash('Activity not found', 'error')
            return redirect(url_for('index'))

        users_level = user_session.get('level', 0)
        # Check user owns activity or user level is 1-moderator or 7-admin
        if (ObjectId(user_session['_id']['$oid']) != ObjectId(
                activity_data['userid'])) and (users_level != 1
                                               and users_level != 7):
            flash(
                f'''You cannot edit the activity "
                      {activity_data["title"]}"''', 'error')
            return redirect(url_for('index'))

        # Set imageURL for preview image
        imageURL = set_imageURL(activity_id)

        # Check form isn't too large (image data size)
        try:
            form = ActivityForm(data=activity_data)
        except RequestEntityTooLarge:
            flash('Chosen file too large, limit is 4mb', 'error')
            form = ActivityForm(data=activity_data)
        else:
            form.imageId.data = activity_id

            if form.validate_on_submit():
                # Remove venue location field as not required for database
                td = form.venue.data
                del td['location']

                if form.image.data:
                    save_image(form.image.data, activity_id + '.jpg')

                Activity().update_activity(activity_id)
                return redirect(url_for('index'))

            elif request.method == 'POST':
                flash('Please correct form errors below', 'error')

        return render_template(
            'activity_form.html',
            form=form,
            page_title=('Things to Do and Places to Go: Edit Activity'),
            form_title='Edit Activity',
            imageURL=imageURL,
            categories=CATEGORIES)
    else:
        return redirect(url_for('index'))