diff --git a/mywebdav/legal.py b/mywebdav/legal.py
index ea7afad..1eda6cb 100644
--- a/mywebdav/legal.py
+++ b/mywebdav/legal.py
@@ -53,48 +53,122 @@ class LegalDocument(ABC):
return self.get_header() + self.get_content() + self.get_footer()
def to_html(self) -> str:
- """Generate the complete document in HTML format."""
- # Content is already HTML, just wrap in basic HTML structure
+ """Generate the complete document as Jinja2 template extending base.html."""
html_content = self.get_content()
- html_content = f"""
-
-
+
{self.title}
+
Last Updated: {self.last_updated}
+
{html_content}
-
-
Contact Information
-
If you have any questions about this {self.title.lower()}, please contact us:
-
-
MyWebdav Technologies
-
-"""
- return html_content
+
+
+
+{{% endblock %}}
+"""
+ return template_content
class PrivacyPolicy(LegalDocument):
@@ -867,28 +941,21 @@ def get_all_legal_documents() -> Dict[str, LegalDocument]:
}
-def generate_legal_documents(output_dir: str = "static/legal"):
- """Generate all legal documents as Markdown and HTML files."""
+def generate_legal_documents(template_dir: str = "templates/legal"):
+ """Generate all legal documents as Jinja2 templates."""
import os
- os.makedirs(output_dir, exist_ok=True)
+ os.makedirs(template_dir, exist_ok=True)
documents = get_all_legal_documents()
for doc_name, doc in documents.items():
- # Generate Markdown
- md_filename = f"{doc_name}.md"
- md_path = os.path.join(output_dir, md_filename)
- with open(md_path, "w") as f:
- f.write(doc.to_markdown())
-
- # Generate HTML
html_filename = f"{doc_name}.html"
- html_path = os.path.join(output_dir, html_filename)
+ html_path = os.path.join(template_dir, html_filename)
with open(html_path, "w") as f:
f.write(doc.to_html())
- print(f"Generated {md_filename} and {html_filename}")
+ print(f"Generated {html_filename}")
if __name__ == "__main__":
diff --git a/mywebdav/main.py b/mywebdav/main.py
index c2648fc..fda3e17 100644
--- a/mywebdav/main.py
+++ b/mywebdav/main.py
@@ -4,7 +4,8 @@ import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI, Request, HTTPException, status
from fastapi.staticfiles import StaticFiles
-from fastapi.responses import HTMLResponse, JSONResponse, Response
+from fastapi.responses import HTMLResponse, JSONResponse, Response, RedirectResponse
+from fastapi.templating import Jinja2Templates
from tortoise.contrib.fastapi import register_tortoise
from .settings import settings
from .routers import (
@@ -101,6 +102,8 @@ app = FastAPI(
lifespan=lifespan,
)
+templates = Jinja2Templates(directory="templates")
+
app.include_router(auth.router)
app.include_router(users.router)
app.include_router(folders.router)
@@ -150,8 +153,41 @@ async def http_exception_handler(request: Request, exc: HTTPException):
)
-@app.get("/", response_class=HTMLResponse) # Change response_class to HTMLResponse
-async def read_root():
+@app.get("/", response_class=HTMLResponse)
+async def splash_page(request: Request):
+ return templates.TemplateResponse("splash.html", {"request": request})
+
+
+@app.get("/features", response_class=HTMLResponse)
+async def features_page(request: Request):
+ return templates.TemplateResponse("features.html", {"request": request})
+
+
+@app.get("/pricing", response_class=HTMLResponse)
+async def pricing_page(request: Request):
+ return templates.TemplateResponse("pricing.html", {"request": request})
+
+
+@app.get("/support", response_class=HTMLResponse)
+async def support_page(request: Request):
+ return templates.TemplateResponse("support.html", {"request": request})
+
+
+@app.get("/legal/{document_name}", response_class=HTMLResponse)
+async def legal_document(request: Request, document_name: str):
+ try:
+ return templates.TemplateResponse(f"legal/{document_name}.html", {"request": request})
+ except Exception:
+ raise HTTPException(status_code=404, detail="Legal document not found")
+
+
+@app.get("/login")
+async def login_redirect():
+ return RedirectResponse(url="/app", status_code=302)
+
+
+@app.get("/app", response_class=HTMLResponse)
+async def web_app():
with open("static/index.html", "r") as f:
return f.read()
diff --git a/pyproject.toml b/pyproject.toml
index 4e25a27..868022b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -32,6 +32,7 @@ ffmpeg-python = "*"
gunicorn = "*"
aiosmtplib = "*"
stripe = "*"
+jinja2 = "*"
[tool.poetry.group.dev.dependencies]
black = "*"
diff --git a/requirements.txt b/requirements.txt
index 7235046..bd8d625 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -118,3 +118,4 @@ websockets==15.0.1
yarl==1.22.0
zstandard==0.25.0
aiosmtplib==5.0.0
+jinja2