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))
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))
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)
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] )
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)
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('/')