Added centralized templating system with static asset serving.
CI / Formatting (push) Successful in 13s
CI / Linting (push) Successful in 14s
CI / Tests (Python 3.12) (push) Failing after 29s
CI / Tests (Python 3.13) (push) Failing after 29s
CI / Tests (Python 3.14) (push) Failing after 26s
CI / Type Checking (push) Failing after 25s
CI / Spelling (push) Successful in 13s

This commit is contained in:
2026-02-27 10:05:52 -05:00
parent 4e2c8b4d67
commit 410c0cd791
14 changed files with 238 additions and 152 deletions
+1 -11
View File
@@ -18,9 +18,7 @@ Allows moderators to store quotes and anyone to recall random quotes.
"""
from datetime import UTC, datetime
from pathlib import Path
import jinja2
from aiohttp import web
from owlbot.api import (
@@ -32,12 +30,6 @@ from owlbot.api import (
on_setup,
)
_template_dir = Path(__file__).resolve().parent / "templates"
_jinja_env = jinja2.Environment(
loader=jinja2.FileSystemLoader(_template_dir),
autoescape=True,
)
@on_setup
async def setup(ctx: ModuleContext) -> None:
@@ -84,9 +76,7 @@ async def quotes_list_page(ctx: RouteContext) -> web.Response:
for row in rows
]
template = _jinja_env.get_template("list.html")
page = template.render(quotes=quotes)
page = ctx.templates.render("list.html", quotes=quotes)
return web.Response(text=page, content_type="text/html")
@@ -1,40 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Quotes</title>
<style>
body { font-family: sans-serif; margin: 2rem; }
table { border-collapse: collapse; width: 100%; }
th, td { border: 1px solid #ccc; padding: 0.5rem 0.75rem; text-align: left; }
th { background: #f5f5f5; }
td:first-child, th:first-child { text-align: center; }
</style>
</head>
<body>
<h1>Quotes</h1>
{% extends "base.html" %}
{% block title %}Quotes{% endblock %}
{% block content %}
<h1 class="mb-3">Quotes</h1>
{% if quotes %}
<table>
<thead><tr>
<th>#</th>
<th>Quote</th>
<th>Added By</th>
<th>Date Added</th>
</tr></thead>
<tbody>
{% for quote in quotes %}
<tr>
<td>{{ quote.id }}</td>
<td>{{ quote.text }}</td>
<td>{{ quote.added_by }}</td>
<td>{{ quote.date }}</td>
</tr>
{% endfor %}
</tbody>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th class="text-center">#</th>
<th>Quote</th>
<th>Added By</th>
<th>Date Added</th>
</tr>
</thead>
<tbody>
{% for quote in quotes %}
<tr>
<td class="text-center">{{ quote.id }}</td>
<td>{{ quote.text }}</td>
<td>{{ quote.added_by }}</td>
<td>{{ quote.date }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>No quotes have been added yet.</p>
{% endif %}
</body>
</html>
{% endblock %}