예제 #1
0
def newCatalogItem():
    catalog = session.query(Catalog).filter_by(parent_id=1).all()
    catalog_all = session.query(Catalog)
    newest_catalog = session.query(Catalog).filter(Catalog.id != 1).order_by(
        Catalog.id.desc()).limit(1).first()

    try:
        parentid = int(request.args.get('parentid'))
    except (ValueError, TypeError):
        parentid = 1
    # print u'new_catalog_item: ', login_session
    if request.method == 'POST':
        if not session.query(Catalog).all():
            Catalogitem1 = Catalog(name="(ROOT)",
                                   id=1,
                                   lvl=0,
                                   description="Real Root(does not display)",
                                   slug="/")
            session.add(Catalogitem1)
            try:
                session.commit()
            except:  # (IntegrityError,InvalidRequestError):
                session.rollback()
        if request.form['name']:
            newname = request.form['name']
        else:
            newname = 'No Name #' + str(newest_catalog.id + 1)
        if request.form['slug']:
            newslug = slugify(request.form['slug'])
        else:
            newslug = str(newest_catalog.id)

        new_item_slug = slugify(newslug)
        parent_node = catalog_all.filter_by(
            id=int(request.form['moveto'])).first()

        createdby = session.query(User).filter_by(
            email=login_session['email']).first()

        newItem = Catalog(name=newname,
                          description=request.form['description'],
                          parent_id=parent_node.id,
                          slug=new_item_slug,
                          lvl=parent_node.lvl + 1,
                          user_id=createdby.id)

        if valid_item(newItem, session, catalog_all.all()):
            session.add(newItem)
            session.commit()
        else:
            response = make_response(
                json.dumps('422 Unprocessable Entity: Duplicated Slug?'), 422)
            response.headers['Content-Type'] = 'application/json'
            return response

        return redirect(url_for('catalogItem', catalog_path=newItem.slug))
    else:
        return render_template('newCatalogItem.html',
                               catalog=catalog,
                               parentid=parentid)
예제 #2
0
def newCatalog():
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        if 'provider' in login_session:
            if login_session['provider'] == 'google':
                try:
                    userExists = session.query(User).filter_by(email=login_session['email']).one()
                except:
                    createUser(login_session)
                    
                newCatalog = Catalog(
                    name=request.form['name'], user_id=login_session['email'])
                session.add(newCatalog)
                flash('New Catalog %s Successfully Created' % newCatalog.name)
                session.commit()
                return redirect(url_for('showCatalogs'))
            elif login_session['provider'] == 'facebook':
                try:
                    userExists = session.query(User).filter_by(email=login_session['email']).one()
                except:
                    createUser(login_session)

                newCatalog = Catalog(
                    name=request.form['name'], user_id=login_session['email'])
                session.add(newCatalog)
                flash('New Catalog %s Successfully Created' % newCatalog.name)
                session.commit()
                return redirect(url_for('showCatalogs'))
    else:
        return render_template('newcatalog.html')
def add_catalog():
   
  if 'username' not in login_session:
    return redirect(url_for('showLogin'))
  
  form = AddCatalogForm()


  if form.validate_on_submit():
      #print "form ok"
      #print form.name.data
      #print form.description.data
#      temp = CatalogItems(name = form.name, description = form.description,
 #        catalog_id = catalog_id)
      temp = Catalog(name = form.name.data, user_id = login_session['user_id'])
      session.add(temp)
      session.commit()
      current_catalog = session.query(Catalog).filter_by(name= form.name.data).all()
      catalog_id = current_catalog[0].id
      # print "item saved"
      return redirect(url_for('catalog_select', catalog_id = catalog_id))
      #return render_template('additemsuccess.html')
  else:
      #print "first time form render"
      return render_template('addcatalog.html', form = form)
   
      #session.close()

  catalogs = session.query(Catalog).all()
  items = session.query(CatalogItems).filter_by(catalog_id=catalog_id).all()
  return render_template('main.html', catalogs=catalogs,items=items,catalog_id = catalog_id, active_catalog=active_catalog)
예제 #4
0
def main():
    """Creats catalog database entries from a JSON file
    """
    current_dir = os.path.dirname(os.path.abspath(__file__))
    engine = create_engine(database_path)
    Base.metadata.create_all(engine)
    DBSession = sessionmaker(bind=engine)
    session = DBSession()

    json_file_path = os.path.join(current_dir, 'initial_catalog_data.json')

    with open(json_file_path, 'r') as f:
        data = json.load(f)

    for catalog_data in data:
        catalog = Catalog(name=catalog_data['name'])
        session.add(catalog)
        session.commit()
        catalog_id = session.query(Catalog)\
            .filter_by(name=catalog_data['name'])\
            .one()\
            .id

        for item_data in catalog_data['items']:
            item = CatalogItem(name=item_data['name'],
                               description=item_data['description'],
                               catalog_id=catalog_id,
                               creation_date=datetime.now(),
                               user_id=item_data['user_id'])
            session.add(item)
            session.commit()

    session.close()
예제 #5
0
def newCatalog():
    """ Logged in users can create a new catalog.
        Only logged in users have access to this page.

        The primary key in the CATALOG table is catalog_id, However, Catalog
        names are unique. There will be a message for users in case
        they added a duplicate catalog name.

        Args:

        Return: A new record  with different catalog name will be added to
        the CATALOG talbe in the database.
    """
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form['name'],
                             user_id=login_session['user_id'])
        session.add(newCatalog)
        try:
            session.commit()
            flash('New Catalog %s Successfully Created' % newCatalog.name)
            return redirect(url_for('showCatalog'))
        except Exception as err:
            session.rollback()
            if "UNIQUE constraint failed" in str(err):
                flash("Oops! Catalog Name Already Exists!")
                return redirect(url_for('newCatalog'))
            else:
                flash("Oops! Something Went Wrong! Try Again!")
            return redirect(url_for('showCatalog'))
    else:
        userid = getUserId(login_session['email'])
        return render_template('newCatalog.html', userid=userid)
예제 #6
0
def newItem():
    """ Adding new idem and catalog (if catalog for user doesnot exist)"""
    if 'username' not in login_session:
        return redirect('/login')

    catalogs = session.query(Catalog).order_by(asc(Catalog.name))

    catalogUnique = session.query(Catalog.name).distinct()

    if request.method == 'POST':

        catalogUser = session.query(Catalog).filter_by(
            user_id=login_session['user_id'], name=request.form['categories'])

        if catalogUser.count() == 0:
            catItem = Catalog(name=request.form['categories'],
                              user_id=login_session['user_id'])
            print("______________")
            session.add(catItem)
            session.commit()
        # print(request.form['categories'])
        catalog = session.query(Catalog).filter_by(
            name=request.form['categories'], user_id=login_session['user_id'])
        newItem = MenuItem(name=request.form['title'],
                           description=request.form['description'],
                           price=request.form['price'],
                           catalog_id=catalog[0].id,
                           user_id=login_session['user_id'])
        session.add(newItem)
        session.commit()
        flash('New Menu %s Item Successfully Created' % (newItem.name))
        return redirect(url_for('showCateg', catalog_name=catalog[0].name))
    else:
        return render_template('newitem.html', catalogs=catalogUnique)
예제 #7
0
def newCatalog():
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form['name'],
                             user_id=login_session['user_id'])
        session.add(newCatalog)
        session.commit()
        return redirect(url_for('showCatalogs'))
    else:
        return render_template('newCatalog.html')
def addCatalog():
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form['catalog'],
                             created_by=current_user)
        db.session.add(newCatalog)
        db.session.commit()
        flash('Catalog Added Succesfully')
        return redirect(url_for('index'))
    else:
        return render_template('add_catalog.html', method="ADD")
예제 #9
0
def newCatalog():
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form.get('name'),
                             user_id=login_session.get('user_id'))
        session.add(newCatalog)
        session.commit()
        return redirect(url_for('showCatalogs'))
    else:
        return render_template('newCatalog.html')
예제 #10
0
def editItem(item_name, catalog_id, item_id):
    """ Editing item details and updating MenuItem and Catalog table"""
    if 'username' not in login_session:
        return redirect('/login')

    editedItem = session.query(MenuItem).filter_by(id=item_id).one()

    catalog = session.query(Catalog).filter_by(id=catalog_id).one()
    catalogUnique = session.query(Catalog.name).distinct()
    if login_session['user_id'] != catalog.user_id:
        return "<script>function myFunction() {alert('You are not " +\
            "authorized to edit this items. Please create your own " +\
            "catalog/item in order to edit items.');}</script><body " +\
            "onload='myFunction()'>"
    if request.method == 'POST':

        catalogUser = session.query(Catalog).filter_by(
            user_id=login_session['user_id'], name=request.form['categories'])

        if catalogUser.count() == 0:
            catItem = Catalog(name=request.form['categories'],
                              user_id=login_session['user_id'])
            print("______________")
            session.add(catItem)
            session.commit()

        catalogs = session.query(Catalog).order_by(asc(Catalog.name))

        if request.form['title']:
            editedItem.name = request.form['title']
        if request.form['description']:
            editedItem.description = request.form['description']
        if request.form['price']:
            editedItem.price = request.form['price']
        if request.form['categories']:
            for cat in catalogs:
                if cat.name == request.form[
                        'categories'] and cat.user_id == login_session[
                            'user_id']:
                    catalog_name = cat.name
                    editedItem.catalog_id = cat.id
                    session.add(editedItem)
                    session.commit()
                    flash('Item Successfully Edited')
                    return redirect(url_for('showCateg',
                                            catalog_name=cat.name))
    else:
        print(catalog.name)
        return render_template('edititem.html',
                               catalog_id=catalog_id,
                               item_id=item_id,
                               item=editedItem,
                               catalog_name=catalog.name,
                               catalogs=catalogUnique)
예제 #11
0
def newCatalog():
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form['name'])
        session.add(newCatalog)
        flash('A new catalog %s was created successfully' % newCatalog.name)
        session.commit()
        return redirect(url_for('showCatalogs'))
    else:
        return render_template('newCatalog.html')
예제 #12
0
def newCatalog():

    if request.method == 'POST':
        addedCatalogs = Catalog(name=request.form['name'],
                                user_id=session['user_id'])
        sessionDB.add(addedCatalogs)
        sessionDB.commit()
        flash("The catalog %s added successfully " % request.form['name'])
        return redirect(url_for('catalogs'))
    else:
        return render_template('newCatalog.html')
예제 #13
0
def newCatalogItem():
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newItem = Catalog(
            name=request.form['name'], user_id=login_session.get('user_id'))
        session.add(newItem)
        flash('New Catalog %s added successfully' % newItem.name)
        session.commit()
        return redirect(url_for('main_page'))
    else:
        return render_template('newcatalog.html')
예제 #14
0
def insert_category():
    category = db_object["category"]
    test_user = populate_user_database()
    for items in category:
        name = category[0].keys()[0]
        id = category[0][name][0]["id"]
        image = category[0][name][1]["image"]
    query = Catalog(id=id, name=name, user=test_user, image=image)
    session.add(query)
    session.commit()
    print "Category created"
    return query
예제 #15
0
def newCategory():
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCategory = Catalog(name=request.form['name'],
                              user_id=login_session['user_id'])
        session.add(newCategory)
        flash('New Category %s Successfully Created' % newCategory.name)
        session.commit()
        return redirect(url_for('showCatalog'))
    else:
        return render_template('newCategory.html')
예제 #16
0
def newCategory():
        if 'username' not in login_session:
            return redirect('/login')
        if request.method == 'POST':
            added = Catalog(name=request.form['name'],
                            user_id=login_session['user_id'])
            session.add(added)
            session.commit()
            flash("successful New category was Added")
            return redirect(url_for('showCatalog'))
        else:
            return render_template('addcategory.html')
예제 #17
0
def editCatalog(catalog_path):
    edited = session.query(Catalog).filter_by(slug=catalog_path).first()
    catalog = session.query(Catalog).filter_by(parent_id=1).all()
    catalog_all = session.query(Catalog)

    createdby = session.query(User).filter_by(
        email=login_session['email']).first()
    if edited.user_id != createdby.id:  # checking for User Authorization
        return "Category 403 - Don't touch things that don't belong to you.", 403
    if edited:
        if request.method == 'POST':
            if request.form:
                if request.form['name']:
                    newname = request.form['name']
                else:
                    newname = 'No Name #' + request.form['id']
                if request.form['slug']:
                    newslug = slugify(request.form['slug'])
                else:
                    newslug = request.form['id']
                parent_node = catalog_all.filter_by(
                    id=int(request.form['moveto'])).first()
                # define a new item to check,
                # avoiding flush() which may cause constraint conflict
                check_item = Catalog(id=int(request.form['id']),
                                     name=newname,
                                     description=request.form['description'],
                                     parent_id=request.form['moveto'],
                                     slug=newslug)

                if valid_item(check_item, session, catalog_all.all()):
                    edited.name = newname
                    edited.description = request.form['description']
                    edited.parent_id = request.form['moveto']
                    edited.slug = newslug
                    edited.lvl = parent_node.lvl + 1
                    session.merge(edited)
                    session.commit()
                    flash('Catalog Successfully Edited %s' % edited.name)
                    return redirect(
                        url_for('catalogItem', catalog_path=edited.slug))
                else:
                    response = make_response(
                        json.dumps(
                            '422 Unprocessable Entity: duplicated slug?'), 422)
                    return response
        else:
            return render_template('editCatalog.html',
                                   edited=edited,
                                   catalog=catalog)
    else:
        return 'Category 404 - Not Found', 404
예제 #18
0
def createCatalog():
    if 'user_id' not in login_session:
        return redirect(url_for('showLogin'))
    if request.method == 'POST':
        session = DBSession()
        catalog = Catalog(name=request.form['name'],
                          description=request.form['description'],
                          user_id=login_session['user_id'])
        session.add(catalog)
        session.commit()
        return redirect(url_for('listCatalog'))
    else:
        return render_template('catalog-new.html', user=login_session['email'])
예제 #19
0
def newcatalog():
    catalogs = session.query(Catalog).order_by(asc(Catalog.name))
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newcatalog = Catalog(name=request.form['name'],
                             user_id=login_session['user_id'])
        session.add(newcatalog)
        flash('New catalog %s Successfully Created' % newcatalog.name)
        session.commit()
        return redirect(url_for('showcatalogs', catalogs=catalogs))
    else:
        return render_template('newCatalog.html', catalogs=catalogs)
예제 #20
0
def createNewCatalog():
    """
    A new route to create a new catalogs
    """
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form['newCatalogName'],
                             user_id=login_session['user_id'])
        session.add(newCatalog)
        session.commit()
        flash("New menu item created!")
        return redirect(url_for('catalog.showAllCatalogs'))
    else:
        return render_template('catalogs_new.html')
예제 #21
0
def newCatalog():
    """This page makes new catalog"""
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form['name'],
                             user_id=login_session['user_id'])
        session.add(newCatalog)
        session.commit()
        flash('New catalog sucessfully created!')
        return redirect(url_for('showCatalogs'))
    else:
        return render_template('newCatalog.html')
예제 #22
0
def addCatalog():
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form['name'],
                             description=request.form['description'],
                             category=request.form['category'],
                             user_id=login_session['user_id'])
        session.add(newCatalog)
        flash('New Game %s Successfully Created' % newCatalog.name)
        session.commit()
        return redirect(url_for('showCatalogs'))
    else:
        return render_template('addcatalog.html')
예제 #23
0
def newCatalog():
    if request.method == 'POST':
        if request.form['name']:
            newCatalog = Catalog(name=request.form['name'],
                                 user_id=login_session['user_id'])
            session.add(newCatalog)
            flash('New Catalog %s Successfully Created' % newCatalog.name)
            session.commit()
            return redirect(url_for('showCatalogs'))
        else:
            flash('Please Complete Name Field')
            return render_template('newCatalog.html')
    else:
        return render_template('newCatalog.html')
예제 #24
0
def newCatalog():
    """
    This function allows user to add new food categories.
    :return:
    """
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form['name'],
                             user_id=login_session['user_id'])
        session.add(newCatalog)
        flash('New Catalog Item %s Successfully Created' % newCatalog.name)
        session.commit()
        return redirect(url_for('showCatalog'))
    else:
        return render_template('newcatalog.html')
예제 #25
0
def newcat():
    # this if statements are found in all the pages where it creates, edits,
    # or deletes an item or a catalog. Checks if the user is logged in.
    if 'username' not in login_session:
        flash('This option requires you to log in!')
        return redirect('/login')
    if request.method == 'POST':
        if request.form['name']:
            newcat = Catalog(name=request.form['name'],
                             user_id=getUserID(login_session['email']))
            session.add(newcat)
            session.commit()
            flash('NEW CAT %s IS IN THE HAUS' % request.form['name'])
            return redirect('/kittycat')
        else:
            return render_template('401.html')
    return render_template('newcat.html', login_session=login_session)
예제 #26
0
def addItem():
  '''This page will add a new item to the catalog'''
  if request.method == 'POST':
    newItem = Catalog(
          name = request.form['name'], 
          description = request.form['description'],
          imageURL =  request.form['imageURL'],
          category = request.form['category'],
          user_id=login_session['user_id'] 
          )
    session.add(newItem)
    session.commit()
    flash('{} was successfully added to the catalog'.format(request.form['name']))
    return redirect(url_for('showCatalog'))
  else:
    auth = 'username' in login_session
    return render_template('addItem.html', categories=categories, auth=auth)
예제 #27
0
def catalog(catalog_id=None, catagory_id=None):
    ''' This route shows the main app page. '''
    if not catalog_id:
        ## Default to catalog 1, since interface does not yet support switching.
        catalog_id = 1
    if session.query(Catalog).count() == 0:
        ## Create the default catalog, since interface does not yet support
        ##   Catalog creation.
        ## Also, create a few default catagories, since interface does not support
        ##  creating these.
        ## Create a test item to drive the demo
        ## Create Anonymous user
        catagoryA = Catagory(description="clothes")
        catagoryB = Catagory(description="sports")
        catagoryC = Catagory(description="electronics")
        new_catalog = Catalog(name="catalogosphere")
        new_user = User(name="Anonymous")
        new_item = Item(title="Shirt",
                        content="its awesome, its made out of synthetics.",
                        user=new_user,
                        catalog=new_catalog,
                        catagory=catagoryA)
        session.add(new_item)
        session.add(catagoryB)
        session.add(catagoryC)
        session.commit()
        print "test catalog content created..."
    catagoriesForId = session.query(Catagory).filter_by(id=catagory_id)
    catagory = None if catagoriesForId.count() < 1 else catagoriesForId.one()
    if catagory:
        searchCriteria = catagory.description
        items = session.query(Item).filter_by(catalog_id=catalog_id,
                                              catagory_id=catagory_id).all()
    else:
        searchCriteria = "Recently added items"
        items = session.query(Item).filter_by(
            catalog_id=catalog_id).order_by("id desc").all()[:5]
    catalog = session.query(Catalog).filter_by(id=catalog_id).one()
    return render_template('catalog.html',
                           catalog_id=catalog_id,
                           catalog=catalog,
                           catagory_id=catagory_id,
                           items=items,
                           searchCriteria=searchCriteria,
                           catagories=allCatagories(catalog),
                           currentUser=currentUser())
예제 #28
0
def newCatalog():
    """
    Requires a user to be logged in. If they are not logged in, they are
    automatically redirected to the login page.
    """
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCatalog = Catalog(name=request.form['name'],
                             description=request.form['description'])
        session.add(newCatalog)
        session.commit()
        catalogs = session.query(Catalog).all()
        flash("New Catalog Created!")
        return render_template('main.html', catalogs=catalogs)
    else:
        return render_template('newcatalog.html')
예제 #29
0
def newItem():
    if 'email' not in login_session:
        flash("Please login to access")
        return redirect('/login/')
    if request.method == 'POST':
        if session.query(Catalog.name).filter_by(
                name=request.form['category']).scalar() is not None:
            if (request.form['category'] and request.form['name'] and
               request.form['description']):
                category = session.query(Catalog).filter_by(
                    name=request.form['category']).one()
                newItem = Item(name=request.form['name'],
                               description=request.form['description'],
                               category_id=category.id,
                               user_id=login_session['id'])
                session.add(newItem)
                session.commit()
                flash('New Item Created')
                return redirect(url_for('showCatalog'))
            else:
                flash('Not all the fields were filled!')
                return redirect(url_for('newItem'))
        else:
            if (request.form['category'] and request.form['name'] and
               request.form['description']):
                newCategory = Catalog(name=request.form['category'],
                                      user_id=login_session['id'])
                session.add(newCategory)
                session.commit()
                category = session.query(Catalog).filter_by(
                    name=request.form['category']).one()
                newItem = Item(name=request.form['name'],
                               description=request.form['description'],
                               category_id=category.id,
                               user_id=login_session['id'])
                session.add(newItem)
                session.commit()
                flash('New Category Created')
                flash('New Item Created')
                return redirect(url_for('showCatalog'))
            else:
                flash('Not all the fields were filled!')
                return redirect(url_for('newItem'))
    else:
        return render_template('newitem.html')
예제 #30
0
def addCatalog():
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        if request.form['name'] == '':
            return redirect(url_for('addCatalog'))
        else:
            newCat = Catalog(name=request.form['name'])
            session.add(newCat)
            try:
                session.commit()
            except:
                session.rollback()
                raise
            return redirect(url_for('showCatalogs'))
    else:
        catalogs = session.query(Catalog).all()
        return render_template('add-catalog.html')