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 home():
    """Render the home page."""
    jumbotron = render_template("index-jumbo.html")
    abstracts = [render_template("item-abstract.html", item=i)
                 for i in data.get_latest_items()]
    category_links = [render_template("category-link.html",
                                      category=c, active=False)
                      for c in data.get_categories().values()]
    return render_template("view.html",
                           jumbotron = jumbotron,
                           abstracts = abstracts,
                           category_links = category_links)
Ejemplo n.º 3
0
def home():
    """Render the home page."""
    jumbotron = render_template("index-jumbo.html")
    abstracts = [
        render_template("item-abstract.html", item=i)
        for i in data.get_latest_items()
    ]
    category_links = [
        render_template("category-link.html", category=c, active=False)
        for c in data.get_categories().values()
    ]
    return render_template("view.html",
                           jumbotron=jumbotron,
                           abstracts=abstracts,
                           category_links=category_links)
Ejemplo n.º 4
0
def create_category_post():
    """Handle create category request."""
    # Make sure the category name does not already exist.
    name = request.form["name"]
    if name in data.get_categories():
        flash("Error: The category name '{0}' already exists.".format(name))
        return redirect(url_for('create_category'))
    # Create a `Category` object and add into database.
    category = Category(cid = None,
                        name = name,
                        description = request.form["description"],
                        wiki_url = request.form["wiki"],
                        last_modified = datetime.now())
    data.add_category(category)
    flash("The category has been added.")
    return redirect(url_for('read_category', category_name = name))
Ejemplo n.º 5
0
def read_category(category_name):
    """Render read category page."""
    # Get the category.
    categories = data.get_categories()
    if category_name not in categories:
        return "Not Found", 404
    category = categories[category_name]
    # Render the page.
    jumbotron = render_template("category-jumbo.html", category = category)
    abstracts = [render_template("item-abstract.html", item=i)
                 for i in data.get_items(category_name).values()]
    category_links = [render_template("category-link.html",
                                      category=c, active=(c==category))
                      for c in categories.values()]
    return render_template("view.html",
                           jumbotron = jumbotron,
                           abstracts = abstracts,
                           category_links = category_links)
Ejemplo n.º 6
0
def read_category(category_name):
    """Render read category page."""
    # Get the category.
    categories = data.get_categories()
    if category_name not in categories:
        return "Not Found", 404
    category = categories[category_name]
    # Render the page.
    jumbotron = render_template("category-jumbo.html", category=category)
    abstracts = [
        render_template("item-abstract.html", item=i)
        for i in data.get_items(category_name).values()
    ]
    category_links = [
        render_template("category-link.html",
                        category=c,
                        active=(c == category)) for c in categories.values()
    ]
    return render_template("view.html",
                           jumbotron=jumbotron,
                           abstracts=abstracts,
                           category_links=category_links)
Ejemplo n.º 7
0
def read_item(category_name, item_name):
    """Render read item page."""
    # Get the category.
    categories = data.get_categories()
    if category_name not in categories:
        return "Not Found", 404
    category = categories[category_name]
    # Get the item.
    items = data.get_items(category_name)
    if item_name not in items:
        return "Not Found", 404
    item = items[item_name]
    # Render the page.
    jumbotron = render_template("item-jumbo.html", item = item)
    category_links = [render_template("category-link.html",
                                      category=c, active=(c==category))
                      for c in categories.values()]

    return render_template("view.html",
                           jumbotron = jumbotron,
                           abstracts = [],
                           category_links = category_links)
Ejemplo n.º 8
0
def read_item(category_name, item_name):
    """Render read item page."""
    # Get the category.
    categories = data.get_categories()
    if category_name not in categories:
        return "Not Found", 404
    category = categories[category_name]
    # Get the item.
    items = data.get_items(category_name)
    if item_name not in items:
        return "Not Found", 404
    item = items[item_name]
    # Render the page.
    jumbotron = render_template("item-jumbo.html", item=item)
    category_links = [
        render_template("category-link.html",
                        category=c,
                        active=(c == category)) for c in categories.values()
    ]

    return render_template("view.html",
                           jumbotron=jumbotron,
                           abstracts=[],
                           category_links=category_links)
Ejemplo n.º 9
0
def api_json():
    """Return a json object containing all categories."""
    return jsonify(categories = [c.to_json()
                                 for c in data.get_categories().values()])