Esempio n. 1
0
def editMenuItem(coffeeshop_id, menu_id):
    '''Allows user to edit menu items of their restaurant'''
    if 'username' not in login_session:
        return redirect('/login')
    session = connect_database()
    editedItem = session.query(MenuItem).filter_by(id=menu_id).one()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    if login_session['user_id'] != coffeeshop.user_id:
        flash('''You are not authorized to edit menu items to this restaurant.
              Please create your own restaurant in order to edit items.''')
        return redirect(
            url_for('coffeeshopMenu',
                    coffeeshop_id=coffeeshop_id,
                    menu_id=menu_id))
    if request.method == 'POST':
        if request.form['name']:
            editedItem.name = request.form['name']
        if request.form['description']:
            editedItem.description = request.form['description']
        if request.form['price']:
            editedItem.price = request.form['price']
        # Changes menu item in database
        session = connect_database()
        session.add(editedItem)
        session.commit()
        flash("menu item edited!")
        return redirect(
            url_for('coffeeshopMenu',
                    coffeeshop_id=coffeeshop_id,
                    menu_id=menu_id))
    else:
        return render_template('editMenuItem.html',
                               coffeeshop_id=coffeeshop_id,
                               menu_id=menu_id,
                               i=editedItem)
Esempio n. 2
0
def editMenuItem(coffeeshop_id, menu_id):
    '''Allows user to edit menu items of their restaurant'''
    if 'username' not in login_session:
        return redirect('/login')
    session = connect_database()
    editedItem = session.query(MenuItem).filter_by(id=menu_id).one()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    if login_session['user_id'] != coffeeshop.user_id:
        flash('''You are not authorized to edit menu items to this restaurant.
              Please create your own restaurant in order to edit items.''')
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id,
                                menu_id=menu_id))
    if request.method == 'POST':
        if request.form['name']:
            editedItem.name = request.form['name']
        if request.form['description']:
            editedItem.description = request.form['description']
        if request.form['price']:
            editedItem.price = request.form['price']
        # Changes menu item in database
        session = connect_database()
        session.add(editedItem)
        session.commit()
        flash("menu item edited!")
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id,
                        menu_id=menu_id))
    else:
        return render_template('editMenuItem.html',
                               coffeeshop_id=coffeeshop_id, menu_id=menu_id,
                               i=editedItem)
Esempio n. 3
0
def coffeeshopMenuJSON(coffeeshop_id):
    '''Allows API calls of coffeeshop menus'''
    session = connect_database()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    items = session.query(MenuItem).filter_by(
        coffeeshop_id=coffeeshop_id).all()
    return jsonify(MenuItems=[i.serialize for i in items])
Esempio n. 4
0
def getUserID(email):
    session = connect_database()
    try:
        user = session.query(User).filter_by(email=email).one()
        return user.id
    except:
        return None
Esempio n. 5
0
def getUserID(email):
    session = connect_database()
    try:
        user = session.query(User).filter_by(email=email).one()
        return user.id
    except:
        return None
Esempio n. 6
0
def create_item():
    """Allow users to create a new item in the catalog."""
    if 'username' not in login_session:
        return redirect('/login')

    session = connect_database()

    if request.method == 'POST':
        if not request.form['name']:
            flash("New item not created: No name provided.")
            return redirect(url_for('show_homepage'))

        if request.form['name'] == "items":
            # Can't have an item called "items" as this is a route.
            flash("Error: Can't have an item called 'items'.")
            return redirect(url_for('show_homepage'))

        # Enforce rule that item names are unique
        qry = session.query(Item).filter(Item.name == request.form['name'])
        already_exists = (session.query(literal(True)).filter(
            qry.exists()).scalar())
        if already_exists is True:
            flash("Error: There is already an item with the name '%s'" %
                  request.form['name'])
            session.close()
            return redirect(url_for('show_homepage'))

        category = (session.query(Category).filter_by(
            name=request.form['category']).one())
        new_item = Item(category=category,
                        name=request.form['name'],
                        description=request.form['description'],
                        user_id=login_session['user_id'])

        session.add(new_item)
        session.commit()

        flash("New item successfully created!")
        category_name = category.name
        item_name = new_item.name
        session.close()
        return redirect(
            url_for('show_item',
                    category_name=category_name,
                    item_name=item_name))
    else:
        categories = session.query(Category).all()

        # See, if any, which category page new item was click on.
        ref_category = None
        if request.referrer and 'catalog' in request.referrer:
            ref_url_elements = request.referrer.split('/')
            if len(ref_url_elements) > 5:
                ref_category = ref_url_elements[4]

        session.close()
        return render_template('new_item.html',
                               categories=categories,
                               ref_category=ref_category)
Esempio n. 7
0
def show_homepage():
    session = connect_database()
    categories = session.query(Category).all()
    latest_items = session.query(Item).order_by(desc(Item.id)).limit(6)
    session.close()
    return render_template('index.html',
                           categories=categories,
                           latest_items=latest_items)
Esempio n. 8
0
def showCoffeeshops():
    '''Establish homepage, check if logged in or not'''
    session = connect_database()
    coffeeshops = session.query(CoffeeShop).order_by(asc(CoffeeShop.name))
    if 'username' not in login_session:
        return render_template('publicCoffeeshops.html',
                               coffeeshops=coffeeshops)
    else:
        return render_template('coffeeshops.html', coffeeshops=coffeeshops)
Esempio n. 9
0
def create_user():
    new_user = User(name=login_session['username'],
                    email=login_session['email'])
    session = connect_database()
    session.add(new_user)
    session.commit()
    user = session.query(User).filter_by(email=login_session['email']).one()
    session.close()
    return user.id
Esempio n. 10
0
def get_user_id(email):
    session = connect_database()
    try:
        user = session.query(User).filter_by(email=email).one()
        session.close()
        return user.id
    except NoResultFound:
        session.close()
        return None
def generate_json():
    conn = connect_database()
    with conn.cursor() as cursor:
        cursor.execute('SELECT * FROM articles')
        result = cursor.fetchall()
    with open('data.json', 'w') as outfile:
        json.dump(result, outfile)
    logging.info(str(Article.get_n_articles(conn)) + 'articles crawled')
    conn.close()
Esempio n. 12
0
def showCoffeeshops():
    '''Establish homepage, check if logged in or not'''
    session = connect_database()
    coffeeshops = session.query(CoffeeShop).order_by(asc(CoffeeShop.name))
    if 'username' not in login_session:
        return render_template('publicCoffeeshops.html',
                               coffeeshops=coffeeshops)
    else:
        return render_template('coffeeshops.html', coffeeshops=coffeeshops)
Esempio n. 13
0
def createUser(login_session):
    '''Allows us to create new users'''
    newUser = User(name=login_session['username'], email=login_session[
                   'email'], picture=login_session['picture'])
    session = connect_database()
    session.add(newUser)
    session.commit()
    user = session.query(User).filter_by(email=login_session['email']).one()
    return user.id
Esempio n. 14
0
def show_login():
    state = ''.join(
        random.choice(string.ascii_uppercase + string.digits)
        for x in xrange(32))
    login_session['state'] = state
    session = connect_database()
    categories = session.query(Category).all()
    session.close()

    return render_template('login.html', STATE=state, categories=categories)
Esempio n. 15
0
def createUser(login_session):
    '''Allows us to create new users'''
    newUser = User(name=login_session['username'],
                   email=login_session['email'],
                   picture=login_session['picture'])
    session = connect_database()
    session.add(newUser)
    session.commit()
    user = session.query(User).filter_by(email=login_session['email']).one()
    return user.id
Esempio n. 16
0
def coffeeshopMenu(coffeeshop_id):
    '''Allows access to coffeeshops depending if user is logged in or not'''
    session = connect_database()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    creator = getUserInfo(coffeeshop.user_id)
    items = session.query(MenuItem).filter_by(coffeeshop_id=coffeeshop_id).all()
    if 'username' not in login_session or creator.id != login_session['user_id']:
        return render_template('publicmenu.html', items=items,
                               coffeeshop=coffeeshop, creator=creator)
    return render_template('menu.html', coffeeshop=coffeeshop, items=items)
Esempio n. 17
0
def crawl_machine_learning(start_index: int, sort_order: str):
    conn = connect_database()

    machine_learning_categories = [
        'cs.CV', 'cs.CL', 'cs.LG', 'cs.AI', 'cs.NE', 'stat.ML'
    ]

    STEP = 100
    articles_per_minute = STEP * 2

    article_len = articles_per_minute

    if start_index == -1:
        start_index = Article.get_n_articles(conn) - STEP

    logging.info('crawling start')
    logging.info('start index : ' + str(start_index))
    logging.info('sort_order : ' + sort_order)

    while article_len == articles_per_minute:
        # query 100 results per iteration
        # wait 30 seconds per query
        try:
            articles = arxivpy.query(search_query=machine_learning_categories,
                                     start_index=start_index,
                                     max_index=start_index +
                                     articles_per_minute,
                                     results_per_iteration=STEP,
                                     wait_time=30,
                                     sort_by='lastUpdatedDate',
                                     sort_order=sort_order)

            # crawling log
            logging.info('last: ' + articles[-1]['published'])
            logging.info(str(start_index + STEP * 2) + ' articles crawled')

            # save articles
            for article in articles:
                Article(article, conn).save()

            # compute start_index
            start_index += STEP * 2

            # compute article_len
            article_len = len(articles)

            # sleep 5 minute
            time.sleep(MINUTE * 5)
        except Exception as e:
            logging.error(e)
            time.sleep(60 * 30)

    conn.close()
Esempio n. 18
0
def catalog_json():
    """Returns all the items in the catalog as a JSON file.

    The for loop in the call to jsonify() goes through each category and,
    because the Category class has a reference to the items in it, for each
    item a call to its serialise function is made. So we end up with a JSON
    array of items for each category.
    """
    session = connect_database()
    categories = session.query(Category).all()
    serialised_catergories = [i.serialise for i in categories]
    session.close()
    return jsonify(CategoryList=serialised_catergories)
Esempio n. 19
0
def coffeeshopMenu(coffeeshop_id):
    '''Allows access to coffeeshops depending if user is logged in or not'''
    session = connect_database()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    creator = getUserInfo(coffeeshop.user_id)
    items = session.query(MenuItem).filter_by(
        coffeeshop_id=coffeeshop_id).all()
    if 'username' not in login_session or creator.id != login_session[
            'user_id']:
        return render_template('publicmenu.html',
                               items=items,
                               coffeeshop=coffeeshop,
                               creator=creator)
    return render_template('menu.html', coffeeshop=coffeeshop, items=items)
Esempio n. 20
0
def proc_cctv_dobong(bot, update):
    session = connect_database()
    dobong = session.query(Cctv).filter_by(city_id=1).all()
    if dobong:
        map_1 = folium.Map(location=[dobong[1].latitude, dobong[1].longitude], zoom_start=14)
        for i in range(len(dobong)):
            if dobong[i].road_address != '':
                folium.Marker([dobong[i].latitude, dobong[i].longitude], popup=dobong[i].road_address).add_to(map_1)
            else:
                folium.Marker([dobong[i].latitude, dobong[i].longitude], popup=dobong[i].address).add_to(map_1)
        map_1.save('templates/map1.html')
        chii.sendMessage("<a href='http://13.124.61.113:5000/map1'>MAP Link</a>", parse_mode="HTML")
    else:
        chii.sendMessage("해당되는 데이터가 없습니다. 다른 명령어를 입력 해 주세요!!")
Esempio n. 21
0
def newCoffeeshop():
    '''Allows user to create a new coffeeshop if they log in'''
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCoffeeshop = CoffeeShop(name=request.form['name'],
                                   user_id=login_session['user_id'])
        # Adds coffeeshop to database
        session = connect_database()
        session.add(newCoffeeshop)
        session.commit()
        flash("new coffee shop created!")
        return redirect(url_for('showCoffeeshops'))
    else:
        return render_template('newCoffeeShop.html')
Esempio n. 22
0
def newCoffeeshop():
    '''Allows user to create a new coffeeshop if they log in'''
    if 'username' not in login_session:
        return redirect('/login')
    if request.method == 'POST':
        newCoffeeshop = CoffeeShop(name=request.form['name'],
                                   user_id=login_session['user_id'])
        # Adds coffeeshop to database
        session = connect_database()
        session.add(newCoffeeshop)
        session.commit()
        flash("new coffee shop created!")
        return redirect(url_for('showCoffeeshops'))
    else:
        return render_template('newCoffeeShop.html')
Esempio n. 23
0
def show_my_items():
    if 'username' not in login_session:
        return redirect('/login')

    user_id = get_user_id(login_session['email'])
    session = connect_database()
    categories = session.query(Category).all()
    items = session.query(Item).filter_by(user_id=user_id).all()
    session.close()

    if not items:
        flash("You haven't add any items yet.")
        redirect(url_for('show_homepage'))

    return render_template('user_items.html',
                           categories=categories,
                           items=items)
Esempio n. 24
0
def show_items(category_name):
    session = connect_database()
    try:
        category = session.query(Category).filter_by(name=category_name).one()
    except NoResultFound:
        flash("The category '%s' does not exist." % category_name)
        return redirect(url_for('show_homepage'))

    categories = session.query(Category).all()
    items = (session.query(Item).filter_by(category=category).order_by(
        Item.name).all())
    session.close()
    if not items:
        flash("There are no items in this category.")
    return render_template('items.html',
                           categories=categories,
                           category=category,
                           items=items)
Esempio n. 25
0
def deleteMenuItem(coffeeshop_id, menu_id):
    '''Allows user to delete items of their coffeeshop'''
    if 'username' not in login_session:
        return redirect('/login')
    session = connect_database()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    itemToDelete = session.query(MenuItem).filter_by(id=menu_id).one()
    if login_session['user_id'] != coffeeshop.user_id:
        flash('''You are not authorized to delete menu items to this restaurant.
              Please create your own restaurant in order to delete items.''')
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id))
    if request.method == 'POST':
        session.delete(itemToDelete)
        session.commit()
        flash("menu item deleted!")
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id))
    else:
        return render_template('deleteMenuItem.html', i=itemToDelete)
Esempio n. 26
0
def delete_item(item_name):
    """Delete a specified item from the database.

    Args:
        item_name (str): Name of the item to be deleted.
    """
    if 'username' not in login_session:
        return redirect('/login')

    session = connect_database()

    try:
        item = session.query(Item).filter_by(name=item_name).one()
    except NoResultFound:
        flash("Error: The item '%s' does not exist." % item_name)
        session.close()
        return redirect(url_for('show_homepage'))

    if login_session['user_id'] != item.user_id:
        flash("You cannot delete other user's items")
        category = session.query(Category).filter_by(id=item.category_id).one()
        category_name = category.name
        item_name = item.name
        session.close()
        return redirect(
            url_for('show_item',
                    category_name=category_name,
                    item_name=item_name))

    if request.method == 'POST':
        session.delete(item)
        session.commit()
        category = session.query(Category).filter_by(id=item.category_id).one()

        flash("Item successfully deleted!")
        category_name = category.name
        session.close()
        return redirect(url_for('show_items', category_name=category_name))
    else:
        categories = session.query(Category).all()
        session.close()
        return render_template('delete_item.html',
                               categories=categories,
                               item=item)
Esempio n. 27
0
def deleteCoffeeShop(coffeeshop_id):
    '''Allows user to delete their coffeeshop'''
    coffeeshopToDelete = session.query(CoffeeShop).filter_by(
        id=coffeeshop_id).one()
    if 'username' not in login_session:
        return redirect('login')
    if coffeeshopToDelete.user_id != login_session['user_id']:
        flash('''You are not authorized to delete this restaurant.
            Please create your own restaurant in order to delete.''')
        return redirect(url_for('showCoffeeshops'))
    if request.method == 'POST':
        session = connect_database()
        session.delete(coffeeshopToDelete)
        session.commit()
        flash("coffee shop deleted!")
        return redirect(url_for('showCoffeeshops'))
    else:
        return render_template('deleteCoffeeShop.html',
                               coffeeshop=coffeeshopToDelete)
Esempio n. 28
0
def editCoffeeShop(coffeeshop_id):
    '''Allows user to edit coffeeshop name'''
    editedShop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    if 'username' not in login_session:
        return redirect('/login')
    if editedShop.user_id != login_session['user_id']:
        flash('''You are not authorized to edit this restaurant.
              Please create your own restaurant in order to edit.''')
        return redirect(url_for('showCoffeeshops'))
    if request.method == 'POST':
        if request.form['name']:
            editedShop.name = request.form['name']
        session = connect_database()
        session.add(editedShop)
        session.commit()
        flash("Coffee shop edited!")
        return redirect(url_for('showCoffeeshops'))
    else:
        return render_template('editCoffeeShop.html', coffeeshop=editedShop)
Esempio n. 29
0
def deleteMenuItem(coffeeshop_id, menu_id):
    '''Allows user to delete items of their coffeeshop'''
    if 'username' not in login_session:
        return redirect('/login')
    session = connect_database()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    itemToDelete = session.query(MenuItem).filter_by(id=menu_id).one()
    if login_session['user_id'] != coffeeshop.user_id:
        flash(
            '''You are not authorized to delete menu items to this restaurant.
              Please create your own restaurant in order to delete items.''')
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id))
    if request.method == 'POST':
        session.delete(itemToDelete)
        session.commit()
        flash("menu item deleted!")
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id))
    else:
        return render_template('deleteMenuItem.html', i=itemToDelete)
Esempio n. 30
0
def item_json(item_name, category_name=None):
    """Returns a single item for a specific category in a JSON file.

    Args:
        item_name (str): The name of the item to return in JSON format.
        category_name (str): A dummy variable used so that the path can
            optionally include the category name.
    """
    session = connect_database()
    try:
        category = session.query(Category).filter_by(name=category_name).one()
        items = session.query(Item).filter_by(name=item_name).one()
    except NoResultFound:
        session.close()
        flash("JSON error: The item '%s' does not exist." % item_name)
        return redirect(url_for('show_homepage'))

    session.close()
    return jsonify(ItemDetails=items.serialise)
Esempio n. 31
0
def deleteCoffeeShop(coffeeshop_id):
    '''Allows user to delete their coffeeshop'''
    coffeeshopToDelete = session.query(CoffeeShop).filter_by(
        id=coffeeshop_id).one()
    if 'username' not in login_session:
        return redirect('login')
    if coffeeshopToDelete.user_id != login_session['user_id']:
        flash('''You are not authorized to delete this restaurant.
            Please create your own restaurant in order to delete.''')
        return redirect(url_for('showCoffeeshops'))
    if request.method == 'POST':
        session = connect_database()
        session.delete(coffeeshopToDelete)
        session.commit()
        flash("coffee shop deleted!")
        return redirect(url_for('showCoffeeshops'))
    else:
        return render_template('deleteCoffeeShop.html',
                               coffeeshop=coffeeshopToDelete)
Esempio n. 32
0
def editCoffeeShop(coffeeshop_id):
    '''Allows user to edit coffeeshop name'''
    editedShop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    if 'username' not in login_session:
        return redirect('/login')
    if editedShop.user_id != login_session['user_id']:
        flash('''You are not authorized to edit this restaurant.
              Please create your own restaurant in order to edit.''')
        return redirect(url_for('showCoffeeshops'))
    if request.method == 'POST':
        if request.form['name']:
            editedShop.name = request.form['name']
        session = connect_database()
        session.add(editedShop)
        session.commit()
        flash("Coffee shop edited!")
        return redirect(url_for('showCoffeeshops'))
    else:
        return render_template('editCoffeeShop.html', coffeeshop=editedShop)
Esempio n. 33
0
def category_items_json(category_name=None):
    """Returns all items for a specific category in a JSON file.

    Args:
        category_name (str): A dummy variable used so that the path can
            optionally include the category name.
    """
    session = connect_database()
    try:
        category = session.query(Category).filter_by(name=category_name).one()
        items = session.query(Item).filter_by(category=category)
        serialise_items = [i.serialise for i in items]
        print serialise_items

    except NoResultFound:
        session.close()
        flash("JSON error: The items for category '%s' do not exist." %
              category_name)
        return redirect(url_for('show_homepage'))

    session.close()
    return jsonify(Item=serialise_items)
Esempio n. 34
0
def newMenuItem(coffeeshop_id):
    '''Create new menu item if owner of the coffeshop'''
    if 'username' not in login_session:
        return redirect('/login')
    session = connect_database()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    if login_session['user_id'] != coffeeshop.user_id:
        flash('''You are not authorized to add menu items to this restaurant.
        Please create your own restaurant in order to add items.''')
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id))
    # Accesses what is inside the form at newMenuItem.html
    if request.method == 'POST':
        newItem = MenuItem(name=request.form['name'],
                           description=request.form['description'],
                           price=request.form['price'],
                           coffeeshop_id=coffeeshop_id,
                           user_id=coffeeshop.user_id)
        session.add(newItem)
        session.commit()
        flash("New menu item created!")
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id))
    else:
        return render_template('newMenuItem.html', coffeeshop_id=coffeeshop_id)
Esempio n. 35
0
def newMenuItem(coffeeshop_id):
    '''Create new menu item if owner of the coffeshop'''
    if 'username' not in login_session:
        return redirect('/login')
    session = connect_database()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    if login_session['user_id'] != coffeeshop.user_id:
        flash('''You are not authorized to add menu items to this restaurant.
        Please create your own restaurant in order to add items.''')
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id))
    # Accesses what is inside the form at newMenuItem.html
    if request.method == 'POST':
        newItem = MenuItem(name=request.form['name'],
                           description=request.form['description'],
                           price=request.form['price'],
                           coffeeshop_id=coffeeshop_id,
                           user_id=coffeeshop.user_id)
        session.add(newItem)
        session.commit()
        flash("New menu item created!")
        return redirect(url_for('coffeeshopMenu', coffeeshop_id=coffeeshop_id))
    else:
        return render_template('newMenuItem.html', coffeeshop_id=coffeeshop_id)
Esempio n. 36
0
def show_item(category_name, item_name):
    """Show details of a particular item belonging to a specified category.

    Args:
        category_name (str): The name of the category to which the item
            belongs.
        item_name (str): The name of the item.

    Returns:
        A web page showing information of the requested item.
    """
    session = connect_database()
    try:
        category = session.query(Category).filter_by(name=category_name).one()
    except NoResultFound:
        flash("The category '%s' does not exist." % category_name)
        session.close()
        return redirect(url_for('show_homepage'))

    try:
        item = session.query(Item).filter_by(name=item_name).one()
    except NoResultFound:
        flash("The item '%s' does not exist." % item_name)
        session.close()
        return redirect(url_for('show_items', category_name=category_name))

    user = session.query(User).filter_by(id=item.user_id).one()
    ower_name = user.name

    categories = session.query(Category).all()
    session.close()
    return render_template('item.html',
                           categories=categories,
                           category=category,
                           item=item,
                           ower_name=ower_name)
Esempio n. 37
0
def getUserInfo(user_id):
    session = connect_database()
    user = session.query(User).filter_by(id=user_id).one()
    return user
Esempio n. 38
0
def edit_item(item_name, category_name=None):
    """Edit the details of the specified item.

    Args:
        item_name (str): Name of item to be edited.
        category_name (str): Optionally, can also specify the category to
            which the item belongs to.
    """
    if 'username' not in login_session:
        flash("Please login inorder to edit an item.")
        return redirect('/login')

    session = connect_database()

    try:
        item = session.query(Item).filter_by(name=item_name).one()
    except NoResultFound:
        flash("Error: The item '%s' does not exist." % item_name)
        return redirect(url_for('show_homepage'))

    if login_session['user_id'] != item.user_id:
        flash("You cannot edit other user's items.")
        category = session.query(Category).filter_by(id=item.category_id).one()
        category_name = category.name
        item_name = item.name
        session.close()
        return redirect(
            url_for('show_item',
                    category_name=category_name,
                    item_name=item_name))

    if request.method == 'POST':
        if request.form['name'] != item.name:
            # Enforce rule that item names are unique
            qry = session.query(Item).filter(Item.name == request.form['name'])
            already_exists = (session.query(literal(True)).filter(
                qry.exists()).scalar())
            if already_exists is True:
                original_category = (session.query(Category).filter_by(
                    id=item.category_id).one())
                flash("Error: There is already an item with the name '%s'" %
                      request.form['name'])
                session.close()
                return redirect(
                    url_for('show_items',
                            category_name=original_category.name))
            item.name = request.form['name']

        form_category = (session.query(Category).filter_by(
            name=request.form['category']).one())
        if form_category != item.category:
            item.category = form_category

        item.description = request.form['description']
        session.add(item)
        session.commit()

        flash("Item successfully edited!")
        category_name = form_category.name
        item_name = item.name
        session.close()
        return redirect(
            url_for('show_item',
                    category_name=category_name,
                    item_name=item_name))
    else:
        categories = session.query(Category).all()
        session.close()
        return render_template('edit_item.html',
                               categories=categories,
                               item=item)
Esempio n. 39
0
def coffeeshopsJSON():
    '''Allows API calls of all coffeeshops'''
    session = connect_database()
    coffeeshops = session.query(CoffeeShop).order_by(CoffeeShop.id).all()
    return jsonify(CoffeeShops=[i.serialize for i in coffeeshops])
Esempio n. 40
0
def menuItemJSON(coffeeshop_id, menu_id):
    '''Allows API calls of coffeeshop menu items'''
    session = connect_database()
    menuItem = session.query(MenuItem).filter_by(id=menu_id).one()
    return jsonify(MenuItem=menuItem.serialize)
Esempio n. 41
0
def menuItemJSON(coffeeshop_id, menu_id):
    '''Allows API calls of coffeeshop menu items'''
    session = connect_database()
    menuItem = session.query(MenuItem).filter_by(id=menu_id).one()
    return jsonify(MenuItem=menuItem.serialize)
Esempio n. 42
0
def coffeeshopMenuJSON(coffeeshop_id):
    '''Allows API calls of coffeeshop menus'''
    session = connect_database()
    coffeeshop = session.query(CoffeeShop).filter_by(id=coffeeshop_id).one()
    items = session.query(MenuItem).filter_by(coffeeshop_id=coffeeshop_id).all()
    return jsonify(MenuItems=[i.serialize for i in items])
Esempio n. 43
0
def coffeeshopsJSON():
    '''Allows API calls of all coffeeshops'''
    session = connect_database()
    coffeeshops = session.query(CoffeeShop).order_by(CoffeeShop.id).all()
    return jsonify(CoffeeShops=[i.serialize for i in coffeeshops])
Esempio n. 44
0
def getUserInfo(user_id):
    session = connect_database()
    user = session.query(User).filter_by(id=user_id).one()
    return user