generated from hjess/PythonTemplateProject
Loads of boiler plating
Some checks failed
Build, Push, and Deploy to Nomad / docker-nomad (push) Has been cancelled
Some checks failed
Build, Push, and Deploy to Nomad / docker-nomad (push) Has been cancelled
This commit is contained in:
30
app.py
30
app.py
@@ -20,17 +20,29 @@ with open("mock_data.json") as file:
|
||||
# Index route
|
||||
@app.get("/", response_class=HTMLResponse)
|
||||
async def get_index(request: Request):
|
||||
return templates.TemplateResponse("index.html", {"request": request, "data": data})
|
||||
return templates.TemplateResponse(
|
||||
"index.html",
|
||||
{"request": request, "data": data, "page_title": "Forside", "author": "Henrik"}
|
||||
)
|
||||
|
||||
# Category route
|
||||
@app.get("/category/{category_name}", response_class=HTMLResponse)
|
||||
async def get_category(request: Request, category_name: str):
|
||||
category_file = f"data/{category_name}/index.html"
|
||||
if os.path.exists(category_file):
|
||||
with open(category_file) as file:
|
||||
category_content = file.read()
|
||||
return templates.TemplateResponse(
|
||||
"category.html",
|
||||
{"request": request, "category_name": category_name, "content": category_content}
|
||||
)
|
||||
# Find den korrekte kategori
|
||||
category = next((cat for cat in data["categories"] if cat["path"] == category_name), None)
|
||||
if category:
|
||||
category_file = f"data/{category_name}/index.html"
|
||||
if os.path.exists(category_file):
|
||||
with open(category_file) as file:
|
||||
category_content = file.read()
|
||||
return templates.TemplateResponse(
|
||||
"category.html",
|
||||
{
|
||||
"request": request,
|
||||
"data": data,
|
||||
"page_title": category["name"],
|
||||
"author": category["author"],
|
||||
"content": category_content
|
||||
},
|
||||
)
|
||||
return HTMLResponse("Kategori ikke fundet", status_code=404)
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"categories": [
|
||||
{"name": "SKAT", "path": "skat"},
|
||||
{"name": "Skole", "path": "skole"},
|
||||
{"name": "Bolig", "path": "bolig"},
|
||||
{"name": "Job", "path": "job"}
|
||||
{"name": "SKAT", "path": "skat", "author": "Henrik"},
|
||||
{"name": "Skole", "path": "skole", "author": "Erika"},
|
||||
{"name": "Bolig", "path": "bolig", "author": "Henrik"},
|
||||
{"name": "Job", "path": "job", "author": "Henrik"}
|
||||
],
|
||||
"favorites": [
|
||||
{"name": "SKAT", "image": "images/pic07.jpg", "description": "Farvorit Kategori"},
|
||||
{"name": "Skole", "image": "images/pic08.jpg", "description": "Skole info"},
|
||||
{"name": "SKAT", "image": "images/pic07.jpg", "description": "Favorit Kategori"},
|
||||
{"name": "Skole", "image": "images/pic08.jpg", "description": "Skole information"},
|
||||
{"name": "Bolig", "image": "images/pic09.jpg", "description": "Bolig detaljer"}
|
||||
]
|
||||
}
|
||||
48
templates/base_template.html
Normal file
48
templates/base_template.html
Normal file
@@ -0,0 +1,48 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>{% block title %}PortugalFAQ{% endblock %}</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', path='css/main.css') }}" />
|
||||
</head>
|
||||
<body class="is-preload">
|
||||
<!-- Wrapper -->
|
||||
<div id="wrapper">
|
||||
<!-- Main -->
|
||||
<div id="main">
|
||||
<div class="inner">
|
||||
<!-- Header -->
|
||||
<header id="header">
|
||||
<a href="/" class="logo">
|
||||
<strong>{{ page_title }}</strong> af {{ author }}
|
||||
</a>
|
||||
</header>
|
||||
|
||||
<!-- Content -->
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div id="sidebar">
|
||||
<div class="inner">
|
||||
{% include 'navigation.html' %}
|
||||
<!-- Footer -->
|
||||
<footer id="footer">
|
||||
<p class="copyright">
|
||||
© Henriks lille hjørne: <a href="https://lifefaq.i80.dk">LifeFAQ</a>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="{{ url_for('static', path='js/jquery.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', path='js/browser.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', path='js/breakpoints.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', path='js/util.js') }}"></script>
|
||||
<script src="{{ url_for('static', path='js/main.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +1,12 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>{{ category_name }} - PortugalFAQ</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', path='css/main.css') }}" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="main">
|
||||
{% extends "base_template.html" %}
|
||||
|
||||
{% block title %}{{ category_name }} - PortugalFAQ{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<header class="main">
|
||||
<h1>{{ category_name }}</h1>
|
||||
<div>{{ content | safe }}</div>
|
||||
<a href="/">Tilbage til forsiden</a>
|
||||
</header>
|
||||
<div>
|
||||
{{ content | safe }}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{% endblock %}
|
||||
@@ -1,135 +1,44 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>PortugalFAQ - Henriks og Erikas lille side</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', path='css/main.css') }}" />
|
||||
</head>
|
||||
<body class="is-preload">
|
||||
<!-- Wrapper -->
|
||||
<div id="wrapper">
|
||||
<!-- Main -->
|
||||
<div id="main">
|
||||
<div class="inner">
|
||||
<!-- Header -->
|
||||
<header id="header">
|
||||
<a href="/" class="logo"><strong>Forside</strong> af Henrik</a>
|
||||
<ul class="icons">
|
||||
<li><a href="#" class="icon brands fa-facebook-f"><span class="label">Facebook</span></a></li>
|
||||
</ul>
|
||||
</header>
|
||||
{% extends "base_template.html" %}
|
||||
|
||||
<!-- Content -->
|
||||
<section>
|
||||
<header class="main">
|
||||
<h1>Min Drøm om Portugal</h1>
|
||||
<h2>En Frisk Start for Henrik og Erika</h2>
|
||||
</header>
|
||||
{% block title %}PortugalFAQ - Henriks og Erikas lille side{% endblock %}
|
||||
|
||||
<span class="image main">
|
||||
<img src="{{ url_for('static', path='images/pic11.jpg') }}" alt="Portugal" />
|
||||
</span>
|
||||
{% block content %}
|
||||
<section>
|
||||
<header class="main">
|
||||
<h1>Min Drøm om Portugal</h1>
|
||||
<h2>En Frisk Start for Henrik og Erika</h2>
|
||||
</header>
|
||||
|
||||
<hr class="major" />
|
||||
<p>
|
||||
Portugal er blevet symbolet på den nye begyndelse, jeg drømmer om – en mulighed for at skabe et liv
|
||||
med mere ro, plads og mening. Som Henrik, far til min 16-årige datter Erika, har tanken om at flytte
|
||||
fra Danmark til Portugal vokset sig stærkere de seneste år. Det er ikke bare et ønske om sol og varme,
|
||||
men om en hverdag, hvor livskvalitet betyder mere end stress og travlhed.
|
||||
</p>
|
||||
<p>
|
||||
Drømmen er konkret: en hverdag med tid til både arbejde og familieliv, omgivet af Portugals smukke
|
||||
landskaber og venlige kultur. Med Lissabon som udgangspunkt forestiller jeg mig et liv, hvor jeg
|
||||
arbejder struktureret, pendler til Danmark i de lige uger og tilbringer de øvrige uger i vores nye
|
||||
hjem. Det handler ikke om at efterlade alt bag sig, men om at finde en bedre balance mellem mine
|
||||
forpligtelser i Danmark og en ny tilværelse, hvor solen skinner lidt længere.
|
||||
</p>
|
||||
<p>
|
||||
For Erika er det også en chance for at opleve en ny kultur, møde nye mennesker og måske starte på
|
||||
en ungdomsuddannelse i Portugal. Vi ved begge, at det ikke bliver uden udfordringer – med praktiske
|
||||
overvejelser som bolig, skat, pendling og skolegang – men fordelene vejer tungere. Leveomkostningerne
|
||||
er lavere, menneskerne er imødekommende, og tempoet giver plads til at trække vejret.
|
||||
</p>
|
||||
<p>
|
||||
Denne hjemmeside er en samling af mine tanker, forberedelser og erfaringer på vejen mod at gøre
|
||||
drømmen til virkelighed. Måske overvejer du selv en lignende rejse, eller måske er du bare nysgerrig
|
||||
på, hvordan det er at tage springet. Her deler jeg min rejse – fra de første spæde idéer til de
|
||||
praktiske skridt mod et nyt liv i Portugal. For mig og for Erika.
|
||||
</p>
|
||||
<hr class="major" />
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<span class="image main">
|
||||
<img src="{{ url_for('static', path='images/pic11.jpg') }}" alt="Portugal" />
|
||||
</span>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div id="sidebar">
|
||||
<div class="inner">
|
||||
<!-- Menu -->
|
||||
<nav id="menu">
|
||||
<header class="major">
|
||||
<h2>Menu</h2>
|
||||
</header>
|
||||
<ul>
|
||||
<li><a href="/">Forside</a></li>
|
||||
<li>
|
||||
<span class="opener">Kategorier</span>
|
||||
<ul>
|
||||
{% for category in data.categories %}
|
||||
<li>
|
||||
<a href="/category/{{ category.path }}">{{ category.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#">Fotobog</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!-- Highlights (favoritter) -->
|
||||
<section>
|
||||
<header class="major">
|
||||
<h2>Highlights</h2>
|
||||
</header>
|
||||
<div class="mini-posts">
|
||||
{% for favorite in data.favorites %}
|
||||
<article>
|
||||
<a href="#" class="image">
|
||||
<img src="{{ url_for('static', path=favorite.image) }}" alt="{{ favorite.name }}" />
|
||||
</a>
|
||||
<p>{{ favorite.description }}</p>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Kontakt -->
|
||||
<section>
|
||||
<header class="major">
|
||||
<h2>Kontakt os</h2>
|
||||
</header>
|
||||
<ul class="contact">
|
||||
<li class="icon solid fa-envelope"><a href="#">henrik@i80.dk</a></li>
|
||||
<li class="icon solid fa-phone">(+45) 60214417</li>
|
||||
<li class="icon solid fa-home">Skovstræde 3<br />Stensved, 4773</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer id="footer">
|
||||
<p class="copyright">
|
||||
© Henriks lille hjørne: <a href="https://lifefaq.i80.dk">LifeFAQ</a>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="{{ url_for('static', path='js/jquery.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', path='js/browser.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', path='js/breakpoints.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', path='js/util.js') }}"></script>
|
||||
<script src="{{ url_for('static', path='js/main.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
<hr class="major" />
|
||||
<p>
|
||||
Portugal er blevet symbolet på den nye begyndelse, jeg drømmer om – en mulighed for at skabe et liv
|
||||
med mere ro, plads og mening. Som Henrik, far til min 16-årige datter Erika, har tanken om at flytte
|
||||
fra Danmark til Portugal vokset sig stærkere de seneste år. Det er ikke bare et ønske om sol og varme,
|
||||
men om en hverdag, hvor livskvalitet betyder mere end stress og travlhed.
|
||||
</p>
|
||||
<p>
|
||||
Drømmen er konkret: en hverdag med tid til både arbejde og familieliv, omgivet af Portugals smukke
|
||||
landskaber og venlige kultur. Med Lissabon som udgangspunkt forestiller jeg mig et liv, hvor jeg
|
||||
arbejder struktureret, pendler til Danmark i de lige uger og tilbringer de øvrige uger i vores nye
|
||||
hjem. Det handler ikke om at efterlade alt bag sig, men om at finde en bedre balance mellem mine
|
||||
forpligtelser i Danmark og en ny tilværelse, hvor solen skinner lidt længere.
|
||||
</p>
|
||||
<p>
|
||||
For Erika er det også en chance for at opleve en ny kultur, møde nye mennesker og måske starte på
|
||||
en ungdomsuddannelse i Portugal. Vi ved begge, at det ikke bliver uden udfordringer – med praktiske
|
||||
overvejelser som bolig, skat, pendling og skolegang – men fordelene vejer tungere. Leveomkostningerne
|
||||
er lavere, menneskerne er imødekommende, og tempoet giver plads til at trække vejret.
|
||||
</p>
|
||||
<p>
|
||||
Denne hjemmeside er en samling af mine tanker, forberedelser og erfaringer på vejen mod at gøre
|
||||
drømmen til virkelighed. Måske overvejer du selv en lignende rejse, eller måske er du bare nysgerrig
|
||||
på, hvordan det er at tage springet. Her deler jeg min rejse – fra de første spæde idéer til de
|
||||
praktiske skridt mod et nyt liv i Portugal. For mig og for Erika.
|
||||
</p>
|
||||
<hr class="major" />
|
||||
</section>
|
||||
{% endblock %}
|
||||
47
templates/navigation.html
Normal file
47
templates/navigation.html
Normal file
@@ -0,0 +1,47 @@
|
||||
<!-- Navigation -->
|
||||
<nav id="menu">
|
||||
<header class="major">
|
||||
<h2>Menu</h2>
|
||||
</header>
|
||||
<ul>
|
||||
<li><a href="/">Forside</a></li>
|
||||
<li>
|
||||
<span class="opener">Kategorier</span>
|
||||
<ul>
|
||||
{% for category in data.categories %}
|
||||
<li><a href="/category/{{ category.path }}">{{ category.name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#">Fotobog</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!-- Highlights -->
|
||||
<section>
|
||||
<header class="major">
|
||||
<h2>Highlights</h2>
|
||||
</header>
|
||||
<div class="mini-posts">
|
||||
{% for favorite in data.favorites %}
|
||||
<article>
|
||||
<a href="#" class="image">
|
||||
<img src="{{ url_for('static', path=favorite.image) }}" alt="{{ favorite.name }}" />
|
||||
</a>
|
||||
<p>{{ favorite.description }}</p>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Kontakt -->
|
||||
<section>
|
||||
<header class="major">
|
||||
<h2>Kontakt os</h2>
|
||||
</header>
|
||||
<ul class="contact">
|
||||
<li class="icon solid fa-envelope"><a href="#">henrik@i80.dk</a></li>
|
||||
<li class="icon solid fa-phone">(+45) 60214417</li>
|
||||
<li class="icon solid fa-home">Skovstræde 3<br />Stensved, 4773</li>
|
||||
</ul>
|
||||
</section>
|
||||
Reference in New Issue
Block a user