Example #1
0
def delete_item(item_name):
    '''Allows a logged-in user to delete an item they created'''

    # Ensure there is a user logged in:
    if not gplus.is_logged_in():
        return redirect('/')

    # Ensure the item being edited exists:
    query = db.session.query(Item).filter_by(name = item_name)
    if not db.session.query(query.exists()):
        return redirect('/')

    # Ensure the logged-in user owns this item:
    item = query.one()
    if item.user_id != login_session['user_id']:
        return redirect('/')

    if request.method == 'POST':
        category_id = item.category_id
        category_name = db.get_category_name_by_id(category_id)
        db.session.delete(item)
        return redirect('/catalog/%s/items' % category_name)
    elif request.method == 'GET':
        (state, logged_in, username) = gplus.get_login_state()

        data = {
            'item_name': item_name,
            'state': state,
            'logged_in': logged_in,
            'username': username
        }
        return render_template('delete.html', data = data)
Example #2
0
def delete_item(item_name):
    '''Allows a logged-in user to delete an item they created'''

    # Ensure there is a user logged in:
    if not gplus.is_logged_in():
        return redirect('/')

    # Ensure the item being edited exists:
    query = db.session.query(Item).filter_by(name=item_name)
    if not db.session.query(query.exists()):
        return redirect('/')

    # Ensure the logged-in user owns this item:
    item = query.one()
    if item.user_id != login_session['user_id']:
        return redirect('/')

    if request.method == 'POST':
        category_id = item.category_id
        category_name = db.get_category_name_by_id(category_id)
        db.session.delete(item)
        return redirect('/catalog/%s/items' % category_name)
    elif request.method == 'GET':
        (state, logged_in, username) = gplus.get_login_state()

        data = {
            'item_name': item_name,
            'state': state,
            'logged_in': logged_in,
            'username': username
        }
        return render_template('delete.html', data=data)
Example #3
0
def edit_item(item_name):
    '''Allows a logged-in user to edit an item they created'''

    # Ensure there is a user logged in:
    if not gplus.is_logged_in():
        return redirect('/')

    # Ensure the item being edited exists:
    query = db.session.query(Item).filter_by(name=item_name)
    if not db.session.query(query.exists()):
        return redirect('/')

    # Ensure the logged-in user owns this item:
    item = query.one()
    if item.user_id != login_session['user_id']:
        return redirect('/')

    if request.method == 'POST':
        new_item_name = request.form['item_name']
        new_item_description = request.form['item_description']
        new_category_name = request.form['category_name']

        # Ensure the new category exists:
        query = db.session.query(Category).filter_by(name=new_category_name)
        if not db.session.query(query.exists()):
            return redirect('/')

        new_category = query.one()

        # Validate the new item name and description
        if not db.is_valid_item(new_item_name, new_item_description):
            return redirect('/catalog/%s/%s' % (new_category.name, item_name))

        item.name = new_item_name
        item.description = new_item_description
        item.category_id = new_category.id
        db.session.commit()
        return redirect('/catalog/%s/%s' % (new_category.name, new_item_name))
    elif request.method == 'GET':
        item_description = db.session.query(Item).filter_by(
            name=item_name).one().description  #NOQA

        categories = db.get_categories()
        categories = [category.name for category in categories]

        (state, logged_in, username) = gplus.get_login_state()

        data = {
            'item_name': item_name,
            'item_description': item_description,
            'categories': categories,
            'state': state,
            'logged_in': logged_in,
            'username': username
        }
        return render_template('edit.html', data=data)
Example #4
0
def edit_item(item_name):
    '''Allows a logged-in user to edit an item they created'''

    # Ensure there is a user logged in:
    if not gplus.is_logged_in():
        return redirect('/')

    # Ensure the item being edited exists:
    query = db.session.query(Item).filter_by(name = item_name)
    if not db.session.query(query.exists()):
        return redirect('/')

    # Ensure the logged-in user owns this item:
    item = query.one()
    if item.user_id != login_session['user_id']:
        return redirect('/')

    if request.method == 'POST':
        new_item_name = request.form['item_name']
        new_item_description = request.form['item_description']
        new_category_name = request.form['category_name']

        # Ensure the new category exists:
        query = db.session.query(Category).filter_by(name = new_category_name)
        if not db.session.query(query.exists()):
            return redirect('/')

        new_category = query.one()

        # Validate the new item name and description
        if not db.is_valid_item(new_item_name, new_item_description):
            return redirect('/catalog/%s/%s' % (new_category.name, item_name))

        item.name = new_item_name
        item.description = new_item_description
        item.category_id = new_category.id
        db.session.commit()
        return redirect('/catalog/%s/%s' % (new_category.name, new_item_name))
    elif request.method == 'GET':
        item_description = db.session.query(Item).filter_by(name = item_name).one().description #NOQA

        categories = db.get_categories()
        categories = [category.name for category in categories]

        (state, logged_in, username) = gplus.get_login_state()

        data = {
            'item_name': item_name,
            'item_description': item_description,
            'categories': categories,
            'state': state,
            'logged_in': logged_in,
            'username': username
        }
        return render_template('edit.html', data = data)
Example #5
0
def add_item():
    '''Adds an item to the database'''

    # Ensure there is a user logged in:
    if not gplus.is_logged_in():
        return redirect('/')

    if request.method == 'POST':
        category_name = request.form['category_name']

        # Ensure the category exists:
        query = db.session.query(Category).filter_by(name = category_name) #NOQA
        if not db.session.query(query.exists()):
            return redirect('/')

        category = query.one()
        item_name = request.form['item_name']
        item_description = request.form['item_description']

        # Validate the item name and descriptions
        if not db.is_valid_item(item_name, item_description):
            return redirect('/')

        user_id = db.get_user_id_by_name(login_session['username'])
        db.create_item(item_name, item_description, category.id, user_id)

        return redirect("/catalog/%s/items" % category_name)
    elif request.method == 'GET':
        categories = db.get_categories()

        (state, logged_in, username) = gplus.get_login_state()
        data = {
            'categories': [category.name for category in categories],
            'state': state,
            'logged_in': logged_in,
            'username': username
        }
        return render_template('add.html', data = data)
Example #6
0
def add_item():
    '''Adds an item to the database'''

    # Ensure there is a user logged in:
    if not gplus.is_logged_in():
        return redirect('/')

    if request.method == 'POST':
        category_name = request.form['category_name']

        # Ensure the category exists:
        query = db.session.query(Category).filter_by(name=category_name)  #NOQA
        if not db.session.query(query.exists()):
            return redirect('/')

        category = query.one()
        item_name = request.form['item_name']
        item_description = request.form['item_description']

        # Validate the item name and descriptions
        if not db.is_valid_item(item_name, item_description):
            return redirect('/')

        user_id = db.get_user_id_by_name(login_session['username'])
        db.create_item(item_name, item_description, category.id, user_id)

        return redirect("/catalog/%s/items" % category_name)
    elif request.method == 'GET':
        categories = db.get_categories()

        (state, logged_in, username) = gplus.get_login_state()
        data = {
            'categories': [category.name for category in categories],
            'state': state,
            'logged_in': logged_in,
            'username': username
        }
        return render_template('add.html', data=data)