Exemplo n.º 1
0
def db_populate_from_seed():
    session.query(Category).delete()

    category1 = Category(name="Bowling")
    category2 = Category(name="Tennis")

    session.add(category1)
    session.add(category2)
    session.flush()
    session.refresh(category1)
    session.refresh(category2)

    item1 = Item(name="HeavyBall",
                 description="Bowling Ball",
                 category_id=category1.id)
    item2 = Item(name="Racket",
                 description="Medium Size Racket",
                 category_id=category2.id)

    session.add(item1)
    session.add(item2)

    try:
        session.commit()
    except Exception as e:
        return "Error trying seed populate db"

    return "db re-populated with seed"
Exemplo n.º 2
0
def add_item():
    # This is done as a workaround for "ProgrammingError: SQLite objects
    # created in a thread can only be used in that same thread."
    db_session = DBSession()
    if request.method == 'POST':
        # Create item
        # Make sure another item by the same name does not exist in the
        # category
        category_obj = db_session.query(Category).filter_by(name=request.form.get('category')).one_or_none()
        already_exists = db_session.query(exists().where(
            and_(Item.name == request.form.get('name'),
                 Item.category_id == category_obj.id))).scalar()
        if (already_exists):
            flash("This item already exists")
            return redirect(url_for('add_item'))

        newitem = Item(name=request.form.get('name'),
                       description=request.form.get('description', ''),
                       category=db_session.query(Category).filter_by(
                           name=request.form.get('category')).one(),
                       owner_email=login_session['email'])
        db_session.add(newitem)
        db_session.commit()
        return redirect(
            url_for('item_index', category=request.form.get('category'),
                    item=newitem.name))
    else:
        categories = [c.name for c in db_session.query(Category).all()]
        category = request.args.get('category', None)
        return render_template('add_item.html', **locals())
Exemplo n.º 3
0
def create_item_precat(category_name):
    """Creates an item with only one category option in the creation form.
    This happens in case of creating an item inside an empty category. """

    if 'name' not in login_session:
        flash('You must be logged in to do that!')
        return redirect(url_for('login'))

    if request.method == 'GET':
        predetermined_category = session.query(Category).filter_by(
            name=category_name).first()
        return render_template('new_item.html',
                               predetermined_cat=predetermined_category)
    else:
        if request.form['name'] == '' or request.form['desc'] == '':
            flash('Invalid item name or description!')
            return redirect(url_for('create_item_precat'))

        if helpers.item_exists(request.form['name'].lower()):
            flash('Item already exists!')
            return redirect(
                url_for('show_item', item_name=request.form['name'].lower()))

        new_item = Item(name=request.form['name'].lower(),
                        description=request.form['desc'],
                        category_id=request.form['cat'],
                        user_id=login_session['user_id'])
        session.add(new_item)
        session.commit()

        flash('Item successfully created!')
        return redirect(url_for('show_item', item_name=new_item.name))
Exemplo n.º 4
0
def create_item():
    """Creates a new item.

    The GET endpoint displays a form to create the item.
    The POST endpoint creates the item and shows it afterwards.
    """

    if 'name' not in login_session:
        flash('You must be logged in to do that!')
        return redirect(url_for('login'))
    elif request.method == 'GET':
        categories = session.query(Category).all()
        return render_template('new_item.html', categories=categories)
    else:
        if request.form['name'] == '' or request.form['desc'] == '' or \
                request.form['cat'] == '':
            flash('Invalid item name or description!')
            return redirect(url_for('create_item'))

        # Check if item already exists
        item = session.query(Item).filter_by(
            name=request.form['name'].lower()).first()
        if item:
            flash('Item already exists!')
            return redirect(url_for('show_item', item_name=item.name))

        new_item = Item(name=request.form['name'].lower(),
                        category_id=request.form['cat'],
                        description=request.form['desc'],
                        user_id=login_session['user_id'])
        session.add(new_item)
        session.commit()
        flash('Item successfully created!')
        return redirect(url_for('show_item', item_name=new_item.name))
Exemplo n.º 5
0
def newCatalogItem(catalog_id):
    if 'username' not in login_session:
        return redirect('/login')
    catalog = session.query(Catalog).filter_by(id=catalog_id).one()
    if catalog.user_id != login_session['user_id']:
        return "<script>" \
               "function alertFunction() {" \
               "alert('You are not authorized to edit this catalog');" \
               "}" \
               "</script>" \
               "<body onload='alertFunction()'>"
    if request.method == 'POST':
        newItem = Item(name=request.form['name'],
                       description=request.form['description'],
                       picture_url=request.form['picture_url'],
                       homepage_url=request.form['homepage_url'],
                       catalog_id=catalog_id,
                       user_id=login_session['user_id'])
        session.add(newItem)
        session.commit()
        flash("New item created!")
        return redirect(url_for('catalogItem', catalog_id=catalog_id))
    else:
        return render_template('newCatalogItem.html',
                               catalog_id=catalog_id,
                               catalog=catalog)
def addItem():
    categories = session.query(Category).all()
    if request.method == 'POST':
        name = request.form.get('name')
        description = request.form.get('description')
        category_id = request.form.get('Category')
        item = Item(name=name,
                    description=description,
                    category_id=category_id,
                    user_id=session_login['user_id'])
        session.add(item)
        session.commit()
        # upload img
        if request.files.get('photo') is not None:
            file = request.files['photo']
            if allowed_file(file.filename):
                filename = secure_filename(file.filename)
                extension = filename.rsplit('.', 1)[1].lower()
                filename = '%s.%s' % (item.id, extension)  # rename file
                file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
                item.photo = filename  # add filename to database
                session.add(item)
                session.commit()
        return redirect(url_for('showCategories'))
    return render_template('itemadd.html', categories=categories)
Exemplo n.º 7
0
def newItem(category_id):
    """
    newItem(category_id): adds a Item to Category
    Args:
        category_id (data type: int): primary key of Category class
    Returns:
        redirects to the method that shows the
        list of items of category if successful
    """
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        if 'type' not in request.form:
            type = 'eItem'
        else:
            type = request.form['type']
        newItem = Item(name=request.form['name'],
                           description=request.form['description'],
                           user_id=login_session['user_id'], category_id=category_id)
        session.add(newItem)
        session.commit()
        flash('Item was successfully added to the list')
        return redirect(url_for('showItems', category_id=category_id))
    else:
        return render_template('newItem.html', category_id=category_id)
Exemplo n.º 8
0
def newItem(category_name):
    category = session.query(Category).filter_by(name=category_name).first()
    if (request.method == 'POST'):
        # Sanitize user input
        name = bleach.clean(request.form['name'], tags=[], strip=True)
        description = bleach.clean(request.form['description'],
                                   tags=[],
                                   strip=True)
        image = bleach.clean(request.form['image'], tags=[], strip=True)
        # Very rudimentary csrf protection
        if not csrf_protect():
            return "CSRF detected"
        item = Item(name=name,
                    description=description,
                    category=category,
                    user_id=login_session['user_id'],
                    picture=image)
        session.add(item)
        session.commit()
        return (redirect(
            url_for('showItem',
                    category_name=item.category.name,
                    item_name=item.name)))
    else:
        return render_template('newitem.html', category=category)
Exemplo n.º 9
0
def addItem():
    '''
    GET Shows a form to add item.

    POST adds a new item to the database. As we are using Item.name for routes
    we need to check the uniqueness of the item name.

    Returns
        For a successful POST we return a redirect object to the 'main' route.
        For GET or unsuccessful POST we return the additem.html template.
    '''
    if request.method == 'POST':
        addedItem = Item(name=request.form['name'],
                         user_id=login_session['user_id'],
                         category_id=request.form['category_select'],
                         description=request.form['description'])
        if session.query(Item).filter_by(
                name=addedItem.name).one_or_none() is None:
            session.add(addedItem)
            session.commit()
            return redirect(url_for('main'))
        else:
            flash("Item with that name already exist!")

    categories = session.query(Category).all()
    return render_template('additem.html',
                           categories=categories,
                           login_session=login_session)
Exemplo n.º 10
0
def newItem(subject_id):
    """
    Create a new homework item
    """
    try:
        subject = session.query(Subject).filter_by(id=subject_id).one()
    except:
        flash('No such subject is found.', 'error')
        return redirect(url_for('mod_views.showSubjects'))

    if login_session['user_id'] != subject.user_id:
        flash('You are not authorized to create a new item for this subject!',
              'error')
        return redirect(url_for('mod_views.showItems', subject_id=subject_id))
    if request.method == 'POST':
        if request.form['name'] == "":
            flash('Please enter an item name.', 'error')
            return redirect(url_for('mod_views.newItem',
                                    subject_id=subject_id))
        newItem = Item(name=request.form['name'],
                       description=request.form['description'],
                       time_estimate=request.form['time_estimate'],
                       priority=request.form['priority'],
                       subject_id=subject_id,
                       user_id=subject.user_id)
        session.add(newItem)
        session.commit()
        flash('\'%s\' successfully created' % (newItem.name), 'success')
        return redirect(url_for('mod_views.showItems', subject_id=subject_id))
    else:
        picture = login_session['picture']
        return render_template('new_item.html',
                               subject_id=subject_id,
                               picture=picture)
Exemplo n.º 11
0
def newItem(category_name):
    category = session.query(Category).filter_by(name=category_name).one()
    if (request.method == 'POST'):
        # Sanitize user input
        name = bleach.clean(request.form['name'], tags=[], strip=True)
        description = bleach.clean(request.form['description'],
                                   tags=[],
                                   strip=True)
        # Very rudimentary csrf protection
        if not csrf_protect():
            return "CSRF detected"
        # If an image is attached, upload it to the server.
        if request.files['image']:
            file = request.files['image']
            image = upload_image(file, name)
        else:
            image = None
        item = Item(name=name,
                    description=description,
                    category=category,
                    user_id=login_session['user_id'],
                    filename=image)
        session.add(item)
        session.commit()
        return (redirect(
            url_for('showItem',
                    category_name=item.category.name,
                    item_name=item.name)))
    else:
        return render_template('newitem.html', category=category)
Exemplo n.º 12
0
def newItem(category_name):
    mycatalog = session.query(Category).filter_by(name=category_name).one()
    if request.method == 'POST':
        newItem = Item(title=request.form['title'], description=request.form[
                           'description'], date_added=request.form['date_added'], category_name=category_name)
        session.add(newItem)
        session.commit()
        flash('New Item %s Successfully Created' % (newItem.name))
        return redirect(url_for('showItems', category_name=category_name))
    else:
        return render_template('newitem.html', category_name=category_name)
Exemplo n.º 13
0
def addItem(catalog_id):
    if 'username' not in login_session:
        return redirect('/login')
    catalog_id = session.query(Catalog).filter_by(id=catalog_id).one()
    if request.method == 'POST':
        new_item = Item(name=request.form['name'], description=request.form['description'], catalog_id=catalog_id.id)  # noqa
        session.add(new_item)
        session.commit()
        flash('New %s Item Successfully Created' % (new_item.name))
        return redirect(url_for('item', catalog_id=catalog_id.id))
    else:
        return render_template('additem.html', catalog_id=catalog_id)
Exemplo n.º 14
0
def newItem(category_id):
    if 'username' not in login_session:
        return redirect('/login')

    if request.method == 'POST':
        newItem = Item(name=request.form['name'],
                       description=request.form['description'],
                       category_id=category_id)
        session.add(newItem)
        session.commit()
        return redirect(url_for('category', category_id=category_id))
    else:
        return render_template('item_new.html', category_id=category_id)
Exemplo n.º 15
0
def newItem(category_id):
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        if request.form['name'] and request.form['description']:
            newItem = Item(name=request.form['name'],
                           description=request.form['description'],
                           category_id=category_id,
                           user_id=login_session['user_id'])
            session.add(newItem)
            session.commit()
            return redirect(url_for('showItems', category_id=category_id))
    name = session.query(Category).filter_by(id=category_id).one().name
    return render_template('newItem.html', catName=name)
Exemplo n.º 16
0
def newItem(category_id):
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newItem = Item(name=request.form['name'],
                       description=request.form['description'],
                       category_id=category_id,
                       user_id=login_session['user_id'])
        session.add(newItem)
        session.commit()
        flash('New item created!')
        return redirect(url_for('showCategory', category_id=category_id))
    else:
        return render_template('newItem.html', category_id=category_id)
Exemplo n.º 17
0
def item_new_post(form):
    '''item_new POST handler'''

    params = {}
    params['name'] = form.name.data
    params['description'] = form.description.data
    params['price'] = form.price.data
    params['category_id'] = form.category_id.data
    params['user_id'] = get_user_id(login_session)
    item = Item(**params)
    session.add(item)
    session.commit()
    flash('New Item <strong>%s</strong> Successfully Created!' % (item.name), 'success')
    return redirect(url_for('item_view', item_id=item.id))
Exemplo n.º 18
0
def addItem():
    # only add item if user has submitted the item details
    if request.method == 'POST':
        newItem = Item(name=request.form['name'],
                       description=request.form['description'],
                       cat_id=request.form['cat_id'])
        session.add(newItem)
        flash('New Item %s Successfully Created' % newItem.name)
        session.commit()
        return redirect(url_for('showCategories'))
    # first renders page to add item
    else:
        categories = session.query(Category)
        return render_template('newItem.html', categories=categories)
Exemplo n.º 19
0
def newItemPage(category_name):
    """Add a new item for a specific category to the DB

    Arguments:
        category_name {string} -- variable containing the category name

    Returns:
        render_template -- renders the html page for new item add
    """

    if 'user_email' in login_session:
        categories = session.query(Category).all()
        for cati in categories:
            if cati.t_catName == category_name:
                catx = cati.t_id

        if request.method == 'POST':
            item_name = request.form['item_name']
            item_desc = request.form['i_description']
            if session.query(Item).filter_by(t_itemName=item_name).first():
                return "item already exists"
            else:
                new_item = Item(t_itemName=bleach.clean(item_name,
                                                        tags=[],
                                                        attributes={},
                                                        styles=[],
                                                        strip=True),
                                t_itemDescription=bleach.clean(item_desc,
                                                               tags=[],
                                                               attributes={},
                                                               styles=[],
                                                               strip=True),
                                t_userId=login_session['user_id'],
                                t_catId=catx)
                session.add(new_item)
                session.commit()
                flash('new item added to the database')
                return redirect(url_for('mainPage'))
        else:

            # the method used in this call is GET

            print('this is a get call')
            return render_template('newItem.html',
                                   current_cat=category_name,
                                   current_user=login_session['user_email'],
                                   session_type=login_session['type'])
    else:
        return redirect(url_for('login'))
Exemplo n.º 20
0
def create_item(category_id):
    category = session.query(Category).filter_by(id=category_id).one()
    if request.method == 'POST':
        item = Item(name=request.form['name'],
                    description=request.form['description'],
                    price=request.form['price'],
                    date_added=datetime.datetime.now(),
                    category_id=category.id,
                    user_id=login_session['user_id'])
        session.add(item)
        session.commit()
        flash("New item successfully created")
        return redirect(url_for('show_category', category_id=category_id))
    if request.method == 'GET':
        return render_template('new_item.html', category=category)
Exemplo n.º 21
0
def newItem(category_id):
    """ create new item """
    catquery = SESSION.query(Category).get(category_id)
    if request.method == 'POST':
        req = request.form
        itemNew = Item(name=req['name'],
                       description=req['description'],
                       user_id=login_session['user_id'],
                       category_id=category_id)
        SESSION.add(itemNew)
        SESSION.commit()
        flash("New Record Added !!!!!")
        return redirect(url_for('showItems', category_id=category_id))
    else:
        return render_template('newitem.html', category_one=catquery)
Exemplo n.º 22
0
def newItem():
    '''Adds a new item to the database'''
    state = setState()
    if request.method == 'POST':
        itemToAdd = Item(name=request.form['name'],
                         category=request.form['categories'],
                         description=request.form['description'],
                         user_email=login_session['email'])
        session.add(itemToAdd)
        session.commit()
        flash('Item added')
        return redirect(
            url_for('categoryItems', category=itemToAdd.category, state=state))
    else:
        return render_template('newitem.html', state=state)
Exemplo n.º 23
0
def saveItem(form, categorie_name):
    slug = make_slug(form['name'])
    count = 0
    while session.query(Item).filter_by(slug=slug).count() > 0:
        print("\n=====\n" + slug + " does exist, make it ")
        slug += "-" + str(count)
        count += 1
        print(slug + " and check again \n=====\n")
    newItem = Item(name=form['name'],
                   slug=slug,
                   description=form['description'],
                   categorie_id=getCategorieIdFromName(categorie_name),
                   user_id=getUserIdByName(login_session.get('username')))
    session.add(newItem)
    session.commit()
Exemplo n.º 24
0
def createItem():
    if 'credentials' in flask.session:

        try:
            item = Item(name=request.form['name'],
                        description=request.form['description'],
                        category_id=request.form['category'],
                        user_id=login_session['user_id'])

            session.add(item)
            session.commit()
            flash('Item Created')
        except exc.DatabaseError:
            flash('Create failed')

    return redirect(url_for('routeCatalog'))
Exemplo n.º 25
0
def newItem(category_id):
    if 'username' not in login_session:
        return redirect('/login')
    category = session.query(Category).filter_by(id=category_id).one()
    if request.method == 'POST':
        newItem = Item(name=request.form['name'],
                       description=request.form['description'],
                       price=request.form['price'],
                       category_id=category_id,
                       user_id=category.user_id)
        session.add(newItem)
        session.commit()
        flash('%s Item Created' % (newItem.name))
        return redirect(url_for('showItem', category_id=category_id))
    else:
        return render_template('newitem.html', category_id=category_id)
Exemplo n.º 26
0
def addNEw():
    newData = session.query(Category).filter_by(name=Category.name)).one()
    if request.method == 'POST':
        nameofItem = request.form['name']
        descriptionOfItem = request.form['description']
        categoryOfItem = session.query(Category).filter_by(name=request.form['category']).one()
        imageOfItem = request.form['image']
        if nameOfItem != '':
            print "item name %s" % nameOfItem
            addingItem = Item(name=nameOfItem, description=descriptionOfItem, image=imageOfItem, category=categoryOfItem,
                              user_id=categoryOfItem.user_id)
            session.add(addingItem)
            session.commit()
            return redirect(url_for('categories_view', user_id=categoryOfItem.user_id ))
        else:
            return render_template('addNew.html', newData=newData)
Exemplo n.º 27
0
def newCatItem(cat_name):
    if 'username' not in login_session:
        return redirect('/catalog/login')
    cat = session.query(Category).filter(Category.name.ilike(cat_name)).one()
    if request.method == "POST":
        newItem = Item(name=request.form['name'], user_id=login_session
                       ['user_id'], dateadded=datetime.date.today(),
                       desc=request.form['desc'], cat_id=cat.id)
        session.add(newItem)
        session.commit()
        # Update latest item added to category
        categoryList()
        flash("A new catalog item (%s) has been created in the %s category" %
              (newItem.name, cat_name))
        return redirect(url_for('catItemList', cat_name=cat.name))
    else:
        return render_template("newcatitem.html", cat=cat, cat_id=cat.id)
Exemplo n.º 28
0
def newCategoryItem(category_id):
    if 'username' not in login_session:
        return redirect('/login')

    if request.method == 'POST':
        newItem = Item(
            name=request.form['name'],
            price=request.form['price'],
            description=request.form['description'],
            category_id=category_id,
            user_id=login_session['user_id'])
        session.add(newItem)
        session.commit()
        return redirect('/category/' + str(category_id))
    else:
        return render_template('newitem.html',
                               is_user=isUser(login_session))
Exemplo n.º 29
0
def newItem(category_id):
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'GET':
        return render_template('new_item.html')
    elif request.method == 'POST':
        novo_item = Item(name=request.form['name'],
                         active=request.form['active'],
                         dy=request.form['dy'],
                         price=request.form['price'],
                         description=request.form['description'],
                         category_id=category_id,
                         user_id=login_session['user_id'])
        session.add(novo_item)
        flash('New Active %s Successfully Created' % novo_item.name)
        session.commit()
        return redirect(url_for('showItem', category_id=category_id))
Exemplo n.º 30
0
def add_item():
    if request.method == 'POST':
        user = getUserInfo(login_session['user_id'])
        category_name = request.form['genre']
        category = session.query(Category).filter_by(
            name=str(category_name)).one()
        newItem = Item(title=request.form['title'],
                       description=request.form['description'],
                       category=category,
                       user_id=login_session['user_id'],
                       user=user)
        session.add(newItem)
        session.commit()
        flash("New item created!")
        return redirect(url_for('users.display_all'))
    else:
        return render_template('add_item.html')