Version 1.1 impressum

This commit is contained in:
Bernhard Kolb 2026-04-09 14:52:49 +02:00
parent 3446ab11a0
commit d5e57e4df2
8 changed files with 259 additions and 40 deletions

4
app.py
View File

@ -565,5 +565,9 @@ def admin_user_delete(user_id):
flash("Benutzer wurde gelöscht.", "success")
return redirect(url_for("admin_users"))
@app.route("/impressum")
def impressum():
return render_template("impressum.html")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)

View File

@ -16,4 +16,4 @@ class Config:
MAIL_SENDER = os.getenv('MAIL_SENDER', 'admin@kolb.cc')
MAIL_USE_TLS = os.getenv('MAIL_USE_TLS', 'false').lower() == 'true'
APP_BASE_URL = os.getenv('APP_BASE_URL', 'http://localhost:8086')
APP_BASE_URL = os.getenv('APP_BASE_URL', 'https://test.dasunternehmen.com')

View File

@ -315,3 +315,10 @@ textarea {
align-items: flex-start;
}
}
.btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
/* contacts verbergen bei self assessment */

View File

@ -1,17 +1,21 @@
{% extends 'base.html' %}
{% block title %}Themen{% endblock %}
{% extends "base.html" %}
{% block content %}
<section class="card">
<h1>Themen</h1>
<div class="topic-grid">
{% for item in themen %}
<article class="topic-box">
<h2>{{ item.kurztitel }}</h2>
<h3>{{ item.titel }}</h3>
<p>{{ item.infotext }}</p>
<a class="btn" href="{{ url_for('topic', thema_id=item.id) }}">Thema öffnen</a>
</article>
{% endfor %}
<div class="content-card">
<h1>Self Assessment</h1>
<p>
Wir helfen Ihnen mit einer kurzen Selbsteinschätzung sich einen Überblick über ihre Unternehmenssituation zu verschaffen.
</p>
{% if themen and themen|length > 0 %}
<div class="form-actions" style="margin-top: 24px;">
<a class="btn" href="{{ url_for('topic', thema_id=themen[0].id) }}">
Self Assessment starten
</a>
</div>
</section>
{% else %}
<p class="muted">Aktuell sind keine Themen verfügbar.</p>
{% endif %}
</div>
{% endblock %}

154
templates/impressum.html Normal file
View File

@ -0,0 +1,154 @@
{% extends "base.html" %}
{% block title %}Impressum - dasunternehmen{% endblock %}
{% block content %}
<div class="content-card">
<h1>Impressum</h1>
<p class="muted">Information nach dem ECG</p>
<div class="topic-grid" style="margin-top: 24px;">
<div class="topic-box">
<h2>Angaben zum Unternehmen</h2>
<p>
<strong>Brigitta Trsek</strong><br>
Dorfstrasse 30<br>
2471 Pachfurth, Austria<br>
Tel | Phone: +43 676 6590088<br>
E-Mail: <a href="mailto:office@dasunternehmen.com">office@dasunternehmen.com</a>
</p>
<h3>VAT | UID</h3>
<p>AT57347758</p>
</div>
<div class="topic-box">
<h2>Gewerbeberechtigungen</h2>
<p>Berechtigungen:</p>
<ul>
<li>Schriftsteller/Journalist (freies Gewerbe)</li>
</ul>
<h3>Spezielle Aufsichtsbehörde</h3>
<p>keine</p>
<h3>Kammerzugehörigkeit</h3>
<p>Mitglied der Wirtschaftskammer Niederösterreich</p>
</div>
</div>
<div class="card" style="margin-top: 24px;">
<h2>Rechtliche Hinweise</h2>
<p>
Datenschutzrichtlinie<br>
<a href="https://www.dasunternehmen.com/datenschutzerklaerung/" target="_blank" rel="noopener noreferrer">
https://www.dasunternehmen.com/datenschutzerklaerung/
</a>
</p>
<p>
Nutzungsbedingungen<br>
<a href="https://www.dasunternehmen.com/nutzungsbedingungen/" target="_blank" rel="noopener noreferrer">
https://www.dasunternehmen.com/nutzungsbedingungen/
</a>
</p>
<p>
Cookierichtlinie<br>
<a href="https://www.dasunternehmen.com/cookierichtlinie/" target="_blank" rel="noopener noreferrer">
https://www.dasunternehmen.com/cookierichtlinie/
</a>
</p>
<p>
Allgemeine Geschäfts- und Lieferbedingungen<br>
Download unter:<br>
<a href="https://www.dasunternehmen.com/agb/" target="_blank" rel="noopener noreferrer">
https://www.dasunternehmen.com/agb/
</a>
</p>
</div>
<div class="card">
<h2>Zentrale Kontaktstelle DSA</h2>
<p>
Unsere zentrale Kontaktstelle nach dem Digital Services Act DSA
(Verordnung (EU) 2022/265) für Nutzer und Behörden nach Art. 11, 12 DSA
erreichen Sie wie folgt:
</p>
<p>
<strong>Brigitta Trsek</strong><br>
Dorfstrasse 30<br>
2471 Pachfurth, Austria<br>
Tel | Phone: +43 676 6590088<br>
E-Mail: <a href="mailto:office@dasunternehmen.com">office@dasunternehmen.com</a>
</p>
</div>
<div class="card">
<h2>§ 25 Mediengesetz</h2>
<p>
Inhaber sowie Medieninhaber der Website und deren Dienste ist Brigitta Trsek
in Vertretung von <b>dasunternehmen.com</b>. Die Website dient der Information über
die Aktivitäten und das Produktportfolio des Unternehmens. Alle Inhalte dienen
der persönlichen Information. Eine Weiterverwendung und Reproduktion über den
persönlichen Gebrauch hinaus ist nicht gestattet. Bilder, Logos und Grafiken
dürfen nicht ohne vorherige ausdrückliche schriftliche Genehmigung des jeweiligen
Copyrightinhabers veröffentlicht oder weiterverbreitet werden, sei dies zu
gewerblichen oder anderen Zwecken.
</p>
</div>
<div class="card">
<h2>Information gemäß § 19 Abs 3 AStG</h2>
<p>
Gemäß § 19 Abs 3 AStG haben wir den Verbraucher, wenn wir mit diesem in einer
eventuellen Streitigkeit keine Einigung erzielen können, auf Papier oder einem
anderen dauerhaften Datenträger (z. B. E-Mail) auf die zuständige Stelle zur
alternativen Streitbeilegung hinzuweisen.
</p>
<p>
Verbraucher haben auch die Möglichkeit, sich an die Online-Streitbeilegungsplattform
der EU zu wenden:
<a href="https://ec.europa.eu/odr" target="_blank" rel="noopener noreferrer">
https://ec.europa.eu/odr
</a>
</p>
<p>
Wir sind gesetzlich zu dieser Information verpflichtet, jedoch nicht gesetzlich
dazu verpflichtet, an diesem Verfahren teilzunehmen. Sie können Ihre Beschwerde
auch direkt bei uns unter folgender E-Mail-Adresse einbringen:
<a href="mailto:office@dasunternehmen.com">office@dasunternehmen.com</a>
</p>
</div>
<div class="card">
<h2>Information gemäß § 4 Abs 1 Z 19 FAGG</h2>
<p>
Grundsätzlich unterwerfen wir uns Verbrauchern gegenüber keinem alternativen
Streitbeilegungsverfahren. Sollte eine gesetzliche Verpflichtung bestehen,
sind die vorgesehenen AS-Stellen hier anzugeben:
</p>
<p>
Internet Ombudsmann<br>
<a href="https://www.ombudsmann.at" target="_blank" rel="noopener noreferrer">
https://www.ombudsmann.at
</a>
</p>
<p>
Schlichtung für Verbrauchergeschäfte<br>
<a href="https://verbraucherschlichtung.or.at" target="_blank" rel="noopener noreferrer">
https://verbraucherschlichtung.or.at
</a>
</p>
</div>
<div class="card">
<h2>Newsletter</h2>
<p>
Der Versand von E-Mail-Nachrichten, Aktionen und Newslettern erfolgt unter
Berücksichtigung der Bestimmungen des österreichischen E-Commerce-Gesetzes
sowie des Telekommunikationsgesetzes. Wenn Sie künftig keine Informationen
mehr erhalten möchten, können Sie sich über den jeweiligen Abmeldelink aus
zukünftigen Mailings austragen.
</p>
</div>
</div>
{% endblock %}

View File

@ -1,5 +1,6 @@
<footer class="site-footer">
<div class="container">
<p>&copy; dasunternehmen Flask Projektgrundlage</p>
<p>&copy; dasunternehmen <a href="{{ url_for('impressum') }}">Impressum</a></p>
</div>
</footer>

View File

@ -1,18 +1,34 @@
{% extends 'base.html' %}
{% block title %}Ergebnis{% endblock %}
{% extends "base.html" %}
{% block content %}
<section class="card">
<h1>Assessment Ergebnis</h1>
<img class="result-chart" src="{{ url_for('generated_chart', filename=chart_file) }}" alt="Assessment Grafik">
<div class="content-card">
<p><strong>Das Ergebnis mit Anmerkungen zur Verbesserung erhalten Sie via email.</strong></p>
<h1>Ihr Ergebnis</h1>
<div style="margin: 24px 0;">
<img
src="{{ url_for('generated_chart', filename=chart_file) }}"
alt="Assessment Ergebnis"
class="result-chart"
>
</div>
<table class="result-table">
<thead>
<tr><th>Thema</th><th>JA Antworten</th></tr>
<tr>
<th>Thema</th>
<th>JA-Antworten</th>
</tr>
</thead>
<tbody>
{% for row in rows %}
<tr><td>{{ row.kurztitel }}</td><td>{{ row.ja_anzahl }}</td></tr>
<tr>
<td>{{ row.kurztitel }}</td>
<td>{{ row.ja_anzahl }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</section>
</div>
{% endblock %}

View File

@ -8,22 +8,55 @@
</section>
<section class="card">
<form method="post">
<form method="post" id="topic-form">
<input type="hidden" name="assessment_id" value="{{ assessment_id }}">
{% for frage in fragen %}
<div class="question-box">
<p>{{ loop.index }}. {{ frage.text }}</p>
<p><strong>{{ frage.text }}</strong></p>
<div class="radio-row">
<label><input type="radio" name="frage_{{ frage.id }}" value="ja" required> Ja</label>
<label><input type="radio" name="frage_{{ frage.id }}" value="nein"> Nein</label>
<label>
<input type="radio" name="frage_{{ frage.id }}" value="ja">
Ja
</label>
<label>
<input type="radio" name="frage_{{ frage.id }}" value="nein">
Nein
</label>
</div>
</div>
{% endfor %}
<button class="btn" type="submit">Speichern und weiter</button>
</form>
<div class="form-actions">
<button type="submit" class="btn" id="next-button" disabled>Weiter</button>
</div>
</form>
<script>
document.addEventListener("DOMContentLoaded", function () {
const form = document.getElementById("topic-form");
const nextButton = document.getElementById("next-button");
const questionNames = [
{% for frage in fragen %}
"frage_{{ frage.id }}"{% if not loop.last %},{% endif %}
{% endfor %}
];
function updateButtonState() {
const allAnswered = questionNames.every((name) => {
return form.querySelector(`input[name="${name}"]:checked`) !== null;
});
nextButton.disabled = !allAnswered;
}
form.addEventListener("change", updateButtonState);
updateButtonState();
});
</script>
</section>
<section class="card">
<section class="card" style="display:none">
<h2>Ansprechpartner</h2>
{% for person in ansprechpartner %}
<div class="contact-box">