diff --git a/senju/main.py b/senju/main.py index 306a532..6a79c18 100644 --- a/senju/main.py +++ b/senju/main.py @@ -44,6 +44,7 @@ for the complete web interface are defined within this module. from __future__ import annotations import os +import random from pathlib import Path from flask import (Flask, redirect, render_template, request, @@ -65,7 +66,15 @@ def index_view(): :return: The index.html template with title "Senju". :rtype: flask.Response """ - return render_template("index.html", title="Senju") + random_number = random.randint(0, store.count_entries()) + haiku: Haiku | None = store.load_haiku(random_number) + if haiku is None: + raise KeyError("haiku not found") + context: dict = { + "haiku": haiku, + } + + return render_template("index.html", context=context, title="Senju") @app.route("/haiku/") diff --git a/senju/store_manager.py b/senju/store_manager.py index e94295b..aeb86a5 100644 --- a/senju/store_manager.py +++ b/senju/store_manager.py @@ -175,6 +175,15 @@ class StoreManager: """ return self._save(data.__dict__) + def count_entries(self) -> int: + """ + Query the store how many Haikus are stored. + + :return: Number of stored haikus. + :rtype: int + """ + return len(self._db.all()) + def get_id_of_latest_haiku(self) -> Optional[int]: """ Get the ID of the most recently added haiku. diff --git a/senju/templates/index.html b/senju/templates/index.html index 67a7d27..8b3103a 100644 --- a/senju/templates/index.html +++ b/senju/templates/index.html @@ -1,4 +1,24 @@ {% extends "base.html" %} {% block content %} -

+
+
+
+

{{ title }}

+

+ {% for line in context.haiku.lines %} + {{ line }}
+ {% endfor %} +

+
+ {% if context.is_default %} +
+ Note: No haikus have been found in the haiku store. +
+ {% endif %} + + Back to Home + +
+
{% endblock %}