import os from urllib.parse import parse_qs os.environ["DJANGO_SETTINGS_MODULE"] = "whispermaphone.settings" import django from django.template.loader import render_to_string from django.utils import timezone django.setup() from thoughts.models import Thought from thoughts.pagination import get_all_pages, get_page_slug, get_page from jetforce import GeminiServer, JetforceApplication, Response, Status from decouple import config app = JetforceApplication() @app.route("", strict_trailing_slash=False) def index(request): thoughts = Thought.objects.order_by("-posted") pages = get_all_pages() [requested_slug] = parse_qs(request.query).get("page", [""]) requested_page = get_page(requested_slug) thoughts = requested_page.get_all_entries() rendered_text = render_to_string("thoughts/index.gmi", { "thoughts": thoughts, "first_page": requested_page.slug == pages[0].slug, "pages": pages, "current_page_slug": requested_page.slug, }) return Response(Status.SUCCESS, "text/gemini", rendered_text) @app.route("/about", strict_trailing_slash=False) def about(request): return Response(Status.SUCCESS, "text/gemini", render_to_string("thoughts/about.gmi")) if __name__ == "__main__": server = GeminiServer( app=app, host="0.0.0.0", hostname="localhost", certfile=config("CERTFILE", default=None), keyfile=config("KEYFILE", default=None), port=1973 ) server.run()