예제 #1
0
파일: element.py 프로젝트: waffle-iron/MFW
def editelement(mfw_id, menu_id):
    """page to edit a menu item."""

    if 'access_token' not in flask_session:
        return logInRedirect()
    mfw = session.query(MFW).filter_by(id = mfw_id).first()
    user_id = getUserId(flask_session['email'],flask_session['google_plus_id'])
    if not mfw.user_id == user_id:
        return redirect(url_for("publicMenu",mfw_id = mfw_id))
        flash("Only MFW owners can edit items.")

    if request.method == "POST":
        edited_name = request.form['edited_name']
        print "\neditelement POST triggered, name is: ", edited_name
        old_name = session.query(element).filter_by(id = menu_id).first().name

        result = session.execute(""" UPDATE menu_item
                                     SET name=:edited_name
                                     WHERE id=:edited_menu_item_id; """,
                                 { "edited_name": edited_name,
                                   "edited_menu_item_id": menu_id}
                                 )
        session.commit()
        flash( "item '" +  old_name + "' edited to '" + edited_name + "'. Jawohl!")
        return redirect(url_for("showMenu", mfw_id=mfw_id))

    else:
        element = session.query(element).filter_by(id = menu_id).first()
        return render_template('editelement.html',
                                  mfw = mfw,
                                  element = element )
예제 #2
0
def category_edit(category_id):
    """page to edit a MFW. Authorized only for users
       (intentionally not limited only to creators)."""

    if 'access_token' not in flask_session:
        return logInRedirect()
    category = session.query(Category).filter_by(id = category_id).first()

    if request.method == "POST":
        edited_name = request.form['edited_name']
        edited_description = request.form['edited_description']
        print "\ncategory_edit POST triggered, name is: ", edited_name
        old_name = session.query(Category).filter_by(id = category_id).first().name

        result = session.execute(""" UPDATE category
                                     SET name=:edited_name,
                                         description=:edited_description
                                     WHERE id=:category_id; """,
                                 { "edited_name": edited_name,
                                   "edited_description": edited_description,
                                   "category_id": category_id }
                                 )
        session.commit()
        flash( "Category '" +  old_name + "' edited to '" + edited_name + "'. Jawohl!")
        return redirect( url_for("category_view", category_id=category_id) )

    else:
        if not category.description:
            category.description = ""
        return render_template( 'category_edit.html', category = category )
예제 #3
0
파일: element.py 프로젝트: waffle-iron/MFW
def deleteelement(mfw_id, menu_id):
    """page to delete a menu item."""

    if 'access_token' not in flask_session:
        return logInRedirect()
    mfw = session.query(MFW).filter_by(id = mfw_id).first()
    user_id = getUserId(flask_session['email'],flask_session['google_plus_id'])
    if not mfw.user_id == user_id:
        flash("Only MFW owners can delete items.")
        return redirect(url_for("publicMenu",mfw_id = mfw_id))

    if request.method == "POST":
        print "\ndeleteelement POST triggered!, menu_id is: ", menu_id
        deletedelement = session.query(element).filter_by(id = menu_id).first()
        session.delete(deletedelement)
        session.commit()
        flash( "item '" + deletedelement.name + "' deleted. Auf Wiedersehen!")
        return redirect(url_for("showMenu", mfw_id=mfw_id))

    else:
        print "MFWs/delete accessed..."
        element = session.query(element).filter_by(id = menu_id).first()
        return render_template( 'deleteelement.html',
                                   element = element,
                                   mfw = mfw )
예제 #4
0
def createUser(flask_session):
    newUser = User( name = flask_session['username'],
                    picture = flask_session['picture'],
                    link = flask_session['link'],
                    email = flask_session['email'],
                    google_plus_id = flask_session['google_plus_id'] )
    session.add(newUser)
    session.commit()
    user = session.query(User).filter_by(google_plus_id = flask_session['google_plus_id']).one()
    return user.id
예제 #5
0
def createUser(flask_session):
    newUser = User(name=flask_session['username'],
                   picture=flask_session['picture'],
                   link=flask_session['link'],
                   email=flask_session['email'],
                   google_plus_id=flask_session['google_plus_id'])
    session.add(newUser)
    session.commit()
    user = session.query(User).filter_by(
        google_plus_id=flask_session['google_plus_id']).one()
    return user.id
예제 #6
0
파일: MFW.py 프로젝트: waffle-iron/MFW
def mfw_create(category_name=""):
    """page to create a new Mental Framework."""
    #guard clauses:
    if 'access_token' not in flask_session:
        return logInRedirect()
    user_id = getUserId(flask_session['email'],
                        flask_session['google_plus_id'])
    #form initialization
    mfwForm = MFWForm(request.form)

    if request.method == "POST":  #and mfwForm.validate():
        mfw = MFW()
        mfwForm.populate_obj(mfw)
        mfw.creator_id = user_id
        duplicate_mfw = session.query(MFW).\
                                filter_by(name = mfw.name).\
                                first()
        if duplicate_mfw:
            flash("The name " + mfw.name + " already exists.")
            return redirect(url_for("mfw_create", form=mfwForm))
        try:
            uploaded_image = upload_image(request.files['image_file'])
        except:
            uploaded_image = False
        if uploaded_image: mfw.image_url = uploaded_image

        mfw = parse_categories(mfw, request.form['category'])
        session.add(mfw)
        session.commit()

        # add elements to mfw object from numbered element form fields
        i = 0
        while i < 20:
            try:
                element = Element(letter=request.form['element' + str(i) +
                                                      '-letter'],
                                  description=request.form['element' + str(i) +
                                                           '-description'],
                                  order=i,
                                  mfw_id=mfw.id)
                session.add(element)
                i = i + 1
            except:
                break
        session.commit()
        flash("new MFW '" + mfw.name + "' created!")
        print "\nmfw POST triggered, name is: ", mfw.name
        return redirect(url_for("mfw_browse"))

    else:
        return render_template('mfw_create.html',
                               mfwForm=mfwForm,
                               category_name=category_name)
예제 #7
0
파일: MFW.py 프로젝트: waffle-iron/MFW
def mfw_delete(mfw_id):
    """page to delete a MFW (authorized only for creators)."""
    # guard clauses:
    if 'access_token' not in flask_session:
        return logInRedirect()
    mfw = session.query(MFW).filter_by(id=mfw_id).first()
    user_id = getUserId(flask_session['email'],
                        flask_session['google_plus_id'])
    if not mfw.creator_id == user_id:
        flash("Only MFW owners can delete MFWs.")
        return redirect(url_for("mfw_view", mfw_id=mfw_id))

    if request.method == "POST":
        print "\nmfw_delete POST triggered!"
        session.delete(mfw)
        session.commit()
        flash("item '" + mfw.name + "' deleted. Auf Wiedersehen!")
        return redirect(url_for("mfw_browse"))

    else:
        print "/id/delete accessed..."
        return render_template("mfw_delete.html", mfw=mfw)
예제 #8
0
파일: element.py 프로젝트: waffle-iron/MFW
def newElement(mfw_id):
    """page to create a new menu item."""

    if 'access_token' not in flask_session:
        return logInRedirect()
    mfw = session.query(MFW).filter_by(id = mfw_id).first()
    user_id = getUserId(flask_session['email'],flask_session['google_plus_id'])
    if not mfw.user_id == user_id:
        flash("Only MFW owners can add new items.")
        return redirect(url_for("publicMenu",mfw_id = mfw_id))

    if request.method == "POST":
        mfw_name = request.form['mfw_name']
        print "\nnewElement POST triggered, name is: ", mfw_name
        newElement = element( name=mfw_name, mfw_id=mfw.id )
        session.add(newElement)
        session.commit()
        flash( "new item '" + mfw_name + "' created!")
        print "POST worked!"
        return redirect(url_for("showMenu", mfw_id=mfw.id))

    else:
        return render_template('newElement.html', mfw = mfw )
예제 #9
0
def category_delete(category_id):
    """page to delete a category (authorized only for creators)."""

    if 'access_token' not in flask_session:
        return logInRedirect()
    category = session.query(Category).filter_by(id = category_id).first()
    user_id = getUserId(flask_session['email'],flask_session['google_plus_id'])

    if not category.creator_id == user_id:
        flash("Only Category creators can delete Categories.")
        return redirect(url_for("category_view", category_id = category_id))

    if request.method == "POST":
        print "\ncategory_delete POST triggered!"
        deletedCategory = session.query(Category).filter_by(id = category_id).first()
        session.delete(deletedCategory)
        session.commit()
        flash( "item '" + deletedCategory.name + "' deleted. Auf Wiedersehen!")
        return redirect(url_for("category_browse"))

    else:
        print "categories/id/delete accessed..."
        return render_template( "category_delete.html",
                                category = category )
예제 #10
0
def category_create():
    """page to create a new Mental Framework."""
    form = CategoryForm(request.form)
    # if request.method == "POST" and form.validate():
    if request.method == "POST":
        if 'access_token' not in flask_session:
            return logInRedirect()
        user_id = getUserId(
                      flask_session['email'],flask_session['google_plus_id'] )
        new_category = Category( name = request.form['category_name'],
                                 description = request.form['category_description'],
                                 creator_id = user_id )
        session.add(new_category)
        session.commit()
        flash( "new Category '" + new_category.name + "' created!" )
        print "\nnew_category POST triggered, name is: ", new_category.name
        return redirect(url_for("category_browse"))

    else:
        if 'access_token' not in flask_session:
            return logInRedirect()
        user_id = getUserId(
                      flask_session['email'], flask_session['google_plus_id'] )
        return render_template('category_create.html')
예제 #11
0
파일: MFW.py 프로젝트: waffle-iron/MFW
def mfw_edit(mfw_id):
    """page to edit a MFW. (authorized only for creators)"""
    # guard clauses:
    if 'access_token' not in flask_session:
        return logInRedirect()
    mfw = session.query(MFW).filter_by(id=mfw_id).first()
    user_id = getUserId(flask_session['email'],
                        flask_session['google_plus_id'])
    if not mfw.creator_id == user_id:
        return redirect(url_for("mfw_view", mfw_id=mfw_id))
        flash("Only the creator of a MFW can edit items.")

    # form initialization
    mfwForm = MFWForm(request.form, mfw)
    elementForms = []
    for element in mfw.elements:
        elementForm = ElementForm(None, element)
        elementForms.append(elementForm)

    if request.method == "POST":
        print "\nmfw_edit POST triggered, name is: ", mfwForm.name.data
        old_name = mfw.name
        mfwForm.populate_obj(mfw)

        # populate elements of the mfw object from numbered element form fields
        i = 0
        while i < 20:
            try:
                elementForm = ElementForm(
                    id=int(request.form['element' + str(i) + '-id']),
                    letter=request.form['element' + str(i) + '-letter'],
                    description=request.form['element' + str(i) +
                                             '-description'],
                    order=i)
                elementForm.populate_obj(mfw.elements[i])
                i = i + 1
            except:
                break

        try:
            edited_image_file = upload_image(
                request.files['edited_image_file'])
        except:
            edited_image_file = False
        if edited_image_file: mfw.image_url = edited_image_file

        mfw = parse_categories(mfw, request.form['edited_categories'])

        session.add(mfw)
        session.commit()
        flash("item '" + old_name + "' edited to '" + mfw.name + "'. Jawohl!")
        return redirect(url_for("mfw_view", mfw_id=mfw_id))

    else:
        # prep 'categories' field and serve page
        category_names = ""
        for category in mfw.categories:
            if category_names == "": category_names = category.name
            category_names = category_names + ", " + category.name
        return render_template('mfw_edit.html',
                               mfwForm=mfwForm,
                               elementForms=elementForms,
                               category_names=category_names)