Exemplo n.º 1
0
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 )
Exemplo n.º 2
0
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 )
Exemplo n.º 3
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 )
Exemplo n.º 4
0
def publicMenu(mfw_id):
    """ displays all menu items for a MFW id, read-only."""

    mfw = session.query(mfw).filter_by(id = mfw_id).first()
    elements = session.query(element).filter_by(mfw_id = mfw_id)
    creator = getUserInfo(mfw.user_id)

    return render_template( 'publicMenu.html',
                            elements = elements,
                            mfw = mfw,
                            creator= creator )
Exemplo n.º 5
0
def parse_categories(mfw, category_names):
    """ * parse 'categories' form field by proper splitting and stripping.
        * checks if each category already exists.
        * if it doesn not exist, create new category in session.
        * append category to mfw. """

    user_id = getUserId(flask_session['email'],
                        flask_session['google_plus_id'])

    category_names = str(category_names).split(",")
    for category_name in category_names:
        category_name = category_name.strip()
        if not ((category_name == None) or (category_name == "")):
            existing_category = session.query(Category).\
                                    filter_by(name = category_name).\
                                    first()
            try:
                if existing_category:
                    mfw.categories.append(existing_category)
                else:
                    new_category = Category(name=category_name,
                                            creator_id=user_id)
                    mfw.categories.append(new_category)
            except:
                mfw.categories.append(existing_category)
    return mfw
Exemplo n.º 6
0
def category_view(category_id):
    """view the MFWs in a category"""
    category = session.query(Category).filter_by(id = category_id).first()
    if not category.description:
        category.description = ""
    return render_template( 'category_view.html',
                            category=category,
                            mfws=category.mfws )
Exemplo n.º 7
0
def showMenu(mfw_id):
    """ displays all menu items for a MFW id, with all CRUD options."""

    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) )

    elements = session.query(element).filter_by(mfw_id = mfw_id)
    creator = getUserInfo(mfw.user_id)

    return render_template( 'showMenu.html',
                            mfw = mfw,
                            elements = elements,
                            creator = creator )
Exemplo n.º 8
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
Exemplo n.º 9
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
Exemplo n.º 10
0
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)
Exemplo n.º 11
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 )
Exemplo n.º 12
0
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)
Exemplo n.º 13
0
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 )
Exemplo n.º 14
0
def mfw_json(mfw_id):
    mfw = session.query(MFW).filter_by(id = mfw_id).one()
    elements = mfw.elements
    return jsonify(mfw = mfw.serialize, elements = [element.serialize for element in elements])
Exemplo n.º 15
0
def getUserIdFromGooglePlusID(google_plus_id):
    user= session.query(User).filter_by(google_plus_id = google_plus_id).one()
    return user.id
Exemplo n.º 16
0
def category_json(category_id):
    category = session.query(Category).filter_by(id = category_id).one()
    mfws = category.mfws
    return jsonify(category = category.serialize, mfws = [mfw.serialize for mfw in category.mfws])
Exemplo n.º 17
0
def getUserInfo(user_id):
    user = session.query(User).filter_by(id = user_id).one()
    return user
Exemplo n.º 18
0
def getUserIdFromEmail(email):
    user = session.query(User).filter_by(email = email).one()
    return user.id
Exemplo n.º 19
0
def mfw_view(mfw_id):
    """view the full details of a MFW"""
    mfw = session.query(MFW).filter_by(id=mfw_id).first()
    return render_template('mfw_view.html', mfw=mfw, elements=mfw.elements)
Exemplo n.º 20
0
def getUserIdFromEmail(email):
    user = session.query(User).filter_by(email=email).one()
    return user.id
Exemplo n.º 21
0
def mfw_browse():
    """tile styled page to display and browse MFWs"""
    mfws = session.query(MFW).all()
    return render_template('mfw_browse.html', mfws=mfws)
Exemplo n.º 22
0
def getUserIdFromGooglePlusID(google_plus_id):
    user = session.query(User).filter_by(google_plus_id=google_plus_id).one()
    return user.id
Exemplo n.º 23
0
def category_browse():
    """tile styled page to display and browse categories"""
    categories = session.query(Category).all()
    return render_template( 'category_browse.html', categories = categories )
Exemplo n.º 24
0
def category_json(category_id):
    category = session.query(Category).filter_by(id=category_id).one()
    mfws = category.mfws
    return jsonify(category=category.serialize,
                   mfws=[mfw.serialize for mfw in category.mfws])
Exemplo n.º 25
0
def mfw_json(mfw_id):
    mfw = session.query(MFW).filter_by(id=mfw_id).one()
    elements = mfw.elements
    return jsonify(mfw=mfw.serialize,
                   elements=[element.serialize for element in elements])
Exemplo n.º 26
0
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)
Exemplo n.º 27
0
def getUserInfo(user_id):
    user = session.query(User).filter_by(id=user_id).one()
    return user