Ejemplo n.º 1
0
def update_category_post(category_name):
    """Handle update category request."""
    # Get the category to be updated.
    category = data.get_category(category_name)
    if not category:
        return "Not Found", 404
    # Check if the category name has changed.
    old_name = category.name
    new_name = request.form["name"]
    if old_name != new_name:
        # Make sure the new name does not already exist.
        categories = data.get_categories()
        if new_name in categories:
            flash("Error: The category name '{0}' already exists.".format(
                new_name))
            return redirect(url_for('update_category',
                                    category_name = old_name))
        # Update the in-memory cache about the category name change.
        data.change_category_name_in_cache(old_name, new_name)
        category.name = new_name
    # Update description and wiki url, and update into database.
    category.description = request.form["description"]
    category.wiki_url = request.form["wiki"]
    category.last_modified = datetime.now()
    data.update_category(category)
    flash("The category has been updated.")
    return redirect(url_for('read_category', category_name = new_name))
Ejemplo n.º 2
0
def create_item_post(category_name):
    """Handle create item request."""
    # Check the `category_name`.
    category = data.get_category(category_name)
    if not category:
        return "Category '%s' not found" % category_name, 404
    # Make sure the item name does not exist in the same category.
    items = data.get_items(category_name)
    name = request.form["name"]
    if name in items:
        flash("Error: The item name '{0}' already exists"
              "in this category.".format(name))
        return redirect(url_for('create_item', category_name=category_name))
    # Create an `Item` object and add into database.
    item = Item(category = category,
                iid = None,
                name = name,
                description = request.form["description"],
                wiki_url = request.form["wiki"],
                last_modified = datetime.now())
    data.add_item(item)
    flash("The item has been added.")
    return redirect(url_for('read_item',
                            category_name = category_name,
                            item_name = name))
Ejemplo n.º 3
0
def update_category(category_name):
    """Render update category page."""
    category = data.get_category(category_name)
    if not category:
        return "Not Found", 404
    cancel_url = url_for('read_category', category_name = category_name)
    return render_template("edit.html",
                           title = "Edit a category.",
                           entity = category,
                           cancel_url = cancel_url)
Ejemplo n.º 4
0
def api_json_category(category_name):
    """Return a json object containing information of the requested category
    together with all items inside this category."""
    category = data.get_category(category_name)
    if not category:
        return "Not Found", 404
    items = data.get_items(category_name).values()
    return jsonify(
        category = category.to_json(),
        items = [i.to_json() for i in items]
    )
Ejemplo n.º 5
0
def create_item(category_name):
    """Render create item page."""
    category = data.get_category(category_name)
    if not category:
        return "Category '%s' not found" % category_name, 404
    item = Item(category = category,
                iid = None,
                name = "Item name",
                description = "Add some description.",
                wiki_url = "http://www.wikipedia.org/xxx",
                last_modified = datetime.now())
    cancel_url = url_for('read_category', category_name = category_name)
    return render_template("edit.html",
                           title = "Create an item.",
                           entity = item,
                           cancel_url = cancel_url)
Ejemplo n.º 6
0
def delete_category(category_name):
    """Handle delete category request."""
    category = data.get_category(category_name)
    data.delete_category(category)
    flash("The category '{0}' has been deleted.".format(category_name))
    return redirect('/')
Ejemplo n.º 7
0
def delete_category(category_name):
    """Handle delete category request."""
    category = data.get_category(category_name)
    data.delete_category(category)
    flash("The category '{0}' has been deleted.".format(category_name))
    return redirect('/')