diff --git a/.gitignore b/.gitignore index 7476255..c0fb221 100644 --- a/.gitignore +++ b/.gitignore @@ -281,3 +281,7 @@ reenact/media/ !.envs/.local/ .idea/ + +# Tailwind +*/static/css/tailwind.css +package-lock.json diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c4ef51e --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ + +tailwind: + npx tailwindcss -i reenact/static/css/tailwind_input.css -o reenact/static/css/tailwind.css diff --git a/config/settings/base.py b/config/settings/base.py index 132e9d1..11b0597 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -10,7 +10,7 @@ APPS_DIR = BASE_DIR / "reenact" env = environ.Env() -READ_DOT_ENV_FILE = env.bool("DJANGO_READ_DOT_ENV_FILE", default=False) +READ_DOT_ENV_FILE = env.bool("DJANGO_READ_DOT_ENV_FILE", default=True) if READ_DOT_ENV_FILE: # OS environment variables take precedence over variables from .env env.read_env(str(BASE_DIR / ".env")) @@ -78,10 +78,12 @@ "allauth.mfa", "allauth.socialaccount", "django_celery_beat", + "django_cotton", ] LOCAL_APPS = [ "reenact.users", + "reenact.reenact", # Your stuff: custom apps go here ] # https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps diff --git a/config/settings/local.py b/config/settings/local.py index 6746951..abae71a 100644 --- a/config/settings/local.py +++ b/config/settings/local.py @@ -30,7 +30,8 @@ # ------------------------------------------------------------------------------ # https://docs.djangoproject.com/en/dev/ref/settings/#email-backend EMAIL_BACKEND = env( - "DJANGO_EMAIL_BACKEND", default="django.core.mail.backends.console.EmailBackend", + "DJANGO_EMAIL_BACKEND", + default="django.core.mail.backends.console.EmailBackend", ) # WhiteNoise diff --git a/config/urls.py b/config/urls.py index 67711dc..af42b2c 100644 --- a/config/urls.py +++ b/config/urls.py @@ -8,7 +8,7 @@ from django.views.generic import TemplateView urlpatterns = [ - path("", TemplateView.as_view(template_name="pages/home.html"), name="home"), + # path("", TemplateView.as_view(template_name="pages/home.html"), name="home"), path( "about/", TemplateView.as_view(template_name="pages/about.html"), @@ -19,8 +19,7 @@ # User management path("users/", include("reenact.users.urls", namespace="users")), path("accounts/", include("allauth.urls")), - # Your stuff: custom urls includes go here - # ... + path("", include("reenact.reenact.urls")), # Media files *static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT), ] diff --git a/docker-compose.local.yml b/docker-compose.local.yml index 52b3e37..a4ca564 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -37,10 +37,10 @@ services: redis: image: docker.io/redis:6 container_name: reenact_local_redis - + volumes: - reenact_local_redis_data:/data - + celeryworker: <<: *django diff --git a/docker-compose.production.yml b/docker-compose.production.yml index 1ff72a3..294cfe0 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -3,9 +3,9 @@ volumes: production_postgres_data_backups: {} production_traefik: {} production_django_media: {} - + production_redis_data: {} - + services: @@ -52,10 +52,10 @@ services: redis: image: docker.io/redis:6 - + volumes: - production_redis_data:/data - + celeryworker: <<: *django diff --git a/package.json b/package.json new file mode 100644 index 0000000..986ec7d --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "tailwindcss": "^3.4.13" + } +} diff --git a/reenact/reenact/__init__.py b/reenact/reenact/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/reenact/reenact/admin.py b/reenact/reenact/admin.py new file mode 100644 index 0000000..846f6b4 --- /dev/null +++ b/reenact/reenact/admin.py @@ -0,0 +1 @@ +# Register your models here. diff --git a/reenact/reenact/apps.py b/reenact/reenact/apps.py new file mode 100644 index 0000000..d50f508 --- /dev/null +++ b/reenact/reenact/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ReenactConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "reenact.reenact" diff --git a/reenact/reenact/migrations/__init__.py b/reenact/reenact/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/reenact/reenact/models.py b/reenact/reenact/models.py new file mode 100644 index 0000000..6b20219 --- /dev/null +++ b/reenact/reenact/models.py @@ -0,0 +1 @@ +# Create your models here. diff --git a/reenact/reenact/tests.py b/reenact/reenact/tests.py new file mode 100644 index 0000000..a39b155 --- /dev/null +++ b/reenact/reenact/tests.py @@ -0,0 +1 @@ +# Create your tests here. diff --git a/reenact/reenact/urls.py b/reenact/reenact/urls.py new file mode 100644 index 0000000..64d73d0 --- /dev/null +++ b/reenact/reenact/urls.py @@ -0,0 +1,52 @@ +from django.urls import path +from django.views.generic.base import TemplateView + +from . import views + +app_name = "reenact" + +urlpatterns = [ + path("", TemplateView.as_view(template_name="reenact/index.html"), name="index"), + path( + "infos", + TemplateView.as_view(template_name="reenact/infos.html"), + name="infos", + ), + path( + "questionsDefault/regionToday", + TemplateView.as_view(template_name="reenact/regionToday.html"), + name="region_today", + ), + path("pages/scenario", views.scenario, name="scenario"), + path( + "questionsDefault/scenariosOverview", + TemplateView.as_view(template_name="reenact/scenariosOverview.html"), + name="scenarios_overview", + ), + path( + "questionsDefault/createScenario", + TemplateView.as_view(template_name="reenact/createScenario.html"), + name="create_scenario", + ), + path( + "questionsDefault/scenarioDetail", + TemplateView.as_view(template_name="reenact/scenarioDetail.html"), + name="scenario_detail", + ), + path( + "questionsDefault/challenges", + TemplateView.as_view(template_name="reenact/challenges.html"), + name="challenges", + ), + path( + "pages/comparison", + TemplateView.as_view(template_name="reenact/comparison.html"), + name="comparison", + ), + path( + "source", + TemplateView.as_view(template_name="reenact/source.html"), + name="sources", + ), + path("help", TemplateView.as_view(template_name="reenact/help.html"), name="help"), +] diff --git a/reenact/reenact/views.py b/reenact/reenact/views.py new file mode 100644 index 0000000..1d69a71 --- /dev/null +++ b/reenact/reenact/views.py @@ -0,0 +1,209 @@ +from django.shortcuts import render + + +def scenario(request): + id = request.GET.get("id") + # get scenario texts according to ID + infos = { + "1": { + "name": "Wind-Repowering", + "kpi": { + "total_production": [234, 8.3], + "landuse": [8.8, 150], + "wind": [100, 200], + "pv": [111, 200], + "biomass": [3, 50], + "h2": [4.8, 125], + }, + "description": [ + "Dieses Szenario setzt auf eine ausgewogene Mischung aus erneuerbaren Energiequellen, um die Klimaziele 2040 zu erreichen. Durch die Kombination von Photovoltaikanlagen, Windparks, Biomasse und Bioenergie wird der Energiebedarf nachhaltig gedeckt und die Abhängigkeit von einer einzelnen Energieart reduziert.", + "Der Einsatz von PV-Anlagen auf Dächern und Freiflächen ergänzt die Windenergie und nutzt vorhandene Ressourcen optimal. Moderater Flächenverbrauch schützt natürliche Gebiete und berücksichtigt den Naturschutz.", + "Einwohner und lokale Wirtschaft sind eingeladen, aktiv teilzunehmen. Die Maßnahmen sind nicht nur umweltschonend, sondern auch neu wirtschaftlich.", + ], + "pro": [ + "Ausgewogener Energiemix erhöht Resilienz und Zuverlässigkeit.", + "Nutzung mehrerer erneuerbarer Quellen reduziert die Abhängigkeit von einer einzigen Energieart.", + "Moderater Flächenverbrauch, wodurch natürliche Gebiete besser erhalten bleiben.", + ], + "contra": [ + "Komplexere Infrastruktur und Verwaltung aufgrund der Vielfalt der Energiequellen.", + "Höhere Anfangskosten und logistische Herausforderungen beim Aufbau diverser erneuerbarer Projekte.", + ], + }, + "2": { + "name": "Zubau Wind und PV", + "kpi": { + "total_production": [300, 25], + "landuse": [12, 180], + "wind": [180, 220], + "pv": [120, 210], + "biomass": [2.5, 30], + "h2": [6, 140], + }, + "description": { + "In diesem Szenario wird der Ausbau von Windkraftanlagen und Photovoltaikanlagen stark vorangetrieben, um den wachsenden Energiebedarf zu decken und die Klimaziele 2040 zu erreichen.", + "Durch den großflächigen Einsatz von Freiflächen-Photovoltaik und neuen Windparks steigt die Energieproduktion erheblich. Der Fokus liegt dabei auf der optimalen Nutzung vorhandener Flächen.", + "Die lokale Bevölkerung wird in die Entscheidungsprozesse eingebunden, um die Akzeptanz der Maßnahmen zu erhöhen.", + }, + "pro": [ + "Hohe Energieerträge durch den starken Ausbau von Wind- und PV-Anlagen.", + "Geringere Abhängigkeit von fossilen Energieträgern durch die verstärkte Nutzung erneuerbarer Energien.", + "Neue Arbeitsplätze in der erneuerbaren Energiebranche.", + ], + "contra": [ + "Hoher Flächenverbrauch für Photovoltaikanlagen könnte zu Konflikten mit Naturschutzbelangen führen.", + "Erhöhte Investitionskosten aufgrund der umfangreichen Infrastrukturmaßnahmen.", + ], + }, + "3": { + "name": "Zubau PV", + "kpi": { + "total_production": [220, 15], + "landuse": [14, 200], + "wind": [80, 150], + "pv": [140, 250], + "biomass": [1.8, 10], + "h2": [2, 80], + }, + "description": [ + "In diesem Szenario liegt der Schwerpunkt auf einem massiven Ausbau von Photovoltaikanlagen auf Dächern und Freiflächen. Ziel ist es, die Energieproduktion durch PV deutlich zu steigern.", + "Durch den starken Zubau von PV-Anlagen wird ein großer Teil des Energiebedarfs gedeckt, insbesondere in sonnenreichen Regionen. Die Flächennutzung steigt entsprechend, was jedoch mit geringen Eingriffen in natürliche Gebiete kombiniert wird.", + "Die lokale Bevölkerung profitiert von Einsparungen bei den Energiekosten, da die Nutzung von Solarenergie lokal verfügbar ist.", + ], + "pro": [ + "Deutliche Steigerung der Energieproduktion durch Photovoltaik.", + "Geringe Betriebskosten nach der Installation.", + "Wenig Emissionen bei der Energieproduktion.", + ], + "contra": [ + "Hoher Flächenverbrauch für PV-Anlagen auf Freiflächen.", + "Saisonale Schwankungen bei der Energieproduktion, abhängig von Sonneneinstrahlung.", + ], + }, + "4": { + "name": "Moorbewirtschaftung", + "kpi": { + "total_production": [150, 5], + "landuse": [6, 50], + "wind": [60, 100], + "pv": [70, 120], + "biomass": [20, 200], + "h2": [0.5, 10], + }, + "description": [ + "Dieses Szenario konzentriert sich auf die nachhaltige Bewirtschaftung von Mooren, um CO2-Emissionen zu verringern und die Biodiversität zu fördern.", + "Durch die Renaturierung und nachhaltige Nutzung von Moorflächen kann nicht nur CO2 gebunden werden, sondern auch Energie aus Biomasse gewonnen werden. Die Energieproduktion steigt moderat, aber der Umweltnutzen ist signifikant.", + "Die Maßnahmen zur Moorbewirtschaftung werden mit erneuerbaren Energiequellen wie Windkraft und Photovoltaik kombiniert, um die Energieproduktion zu ergänzen.", + ], + "pro": [ + "Erheblicher Beitrag zum Klimaschutz durch CO2-Bindung.", + "Förderung der Biodiversität durch Renaturierung von Mooren.", + "Zusätzliche Energiegewinnung aus Biomasse.", + ], + "contra": [ + "Geringere Gesamtenergieproduktion im Vergleich zu anderen Szenarien.", + "Hohe Investitionskosten für Renaturierungsmaßnahmen.", + ], + }, + "5": { + "name": "Wasserstoff", + "kpi": { + "total_production": [180, 10], + "landuse": [7, 70], + "wind": [100, 150], + "pv": [60, 100], + "biomass": [15, 80], + "h2": [30, 300], + }, + "description": [ + "In diesem Szenario wird der Fokus auf die Erzeugung und Nutzung von grünem Wasserstoff gelegt. Dieser wird als zentraler Energieträger für Industrie und Verkehr eingesetzt.", + "Die Produktion von Wasserstoff erfolgt durch Elektrolyse, die durch erneuerbare Energien betrieben wird. Dies reduziert die Abhängigkeit von fossilen Brennstoffen und ermöglicht eine emissionsfreie Energieversorgung in verschiedenen Sektoren.", + "Wasserstoff kann als Speichermedium genutzt werden, um Energieüberschüsse aus Wind- und Sonnenenergie auszugleichen.", + ], + "pro": [ + "Hohe Flexibilität bei der Nutzung von Wasserstoff als Energieträger.", + "Speicherung und Nutzung von Energieüberschüssen.", + "Reduzierung der CO2-Emissionen in der Industrie und im Verkehr.", + ], + "contra": [ + "Hohe Kosten für die Infrastruktur zur Wasserstofferzeugung und -verteilung.", + "Geringe Effizienz bei der Umwandlung von Strom in Wasserstoff und zurück.", + ], + }, + "6": { + "name": "Kostenoptimierung", + "kpi": { + "total_production": [210, 12], + "landuse": [9, 100], + "wind": [110, 170], + "pv": [90, 180], + "biomass": [7.5, 40], + "h2": [5, 90], + }, + "description": [ + "Das Szenario der Kostenoptimierung konzentriert sich darauf, die Energiewende kosteneffizient zu gestalten, ohne die langfristigen Klimaziele zu gefährden.", + "Durch den Einsatz der kostengünstigsten Technologien und die Optimierung bestehender Infrastruktur wird die Energieproduktion gesteigert, während die Kosten im Vergleich zu anderen Szenarien geringer ausfallen.", + "Die Nutzung von Wind- und Solarenergie wird gezielt ausgebaut, wobei der Fokus auf niedrigeren Investitions- und Betriebskosten liegt.", + ], + "pro": [ + "Geringere Investitionskosten im Vergleich zu anderen Szenarien.", + "Effiziente Nutzung bestehender Infrastruktur und Technologien.", + "Kosteneinsparungen für Verbraucher durch niedrigere Energiekosten.", + ], + "contra": [ + "Möglicherweise geringere Innovationskraft bei der Einführung neuer Technologien.", + "Längere Amortisationszeiten bei bestimmten Investitionen.", + ], + }, + "7": { + "name": "Hohe CO2-Preise", + "kpi": { + "total_production": [250, 18], + "landuse": [10, 120], + "wind": [120, 180], + "pv": [100, 190], + "biomass": [5, 70], + "h2": [7, 150], + }, + "description": [ + "Dieses Szenario basiert auf einem hohen CO2-Preis, der als wirtschaftlicher Anreiz dient, den Ausbau erneuerbarer Energien voranzutreiben und fossile Energieträger zu reduzieren.", + "Durch hohe CO2-Kosten wird die Nutzung von Wind- und Solarenergie erheblich attraktiver, während die Nutzung von Kohle und Gas deutlich abnimmt. Unternehmen und Privatpersonen sind gezwungen, in klimafreundliche Technologien zu investieren.", + "Die Energieproduktion wird durch verstärkte Nutzung erneuerbarer Energien gesteigert, während gleichzeitig der CO2-Ausstoß drastisch gesenkt wird.", + ], + "pro": [ + "Starker Anreiz zur Reduktion von CO2-Emissionen.", + "Förderung von Investitionen in erneuerbare Energien.", + "Langfristig wirtschaftliche Vorteile durch verringerte Abhängigkeit von fossilen Brennstoffen.", + ], + "contra": [ + "Erhebliche Kostensteigerungen für Verbraucher und Unternehmen durch hohe CO2-Preise.", + "Mögliche soziale Ungleichheiten durch ungleiche Belastung.", + ], + }, + "8": { + "name": "Suffizienz", + "kpi": { + "total_production": [180, 10], + "landuse": [5, 50], + "wind": [90, 130], + "pv": [70, 100], + "biomass": [10, 60], + "h2": [2, 30], + }, + "description": [ + "Das Szenario der Suffizienz zielt darauf ab, den Energieverbrauch durch Verhaltensänderungen und Effizienzsteigerungen zu reduzieren. Es setzt weniger auf den Ausbau erneuerbarer Energien und mehr auf den bewussten Umgang mit Ressourcen.", + "Durch sparsamen Energieeinsatz und Reduktion des Konsums wird der Bedarf an neuer Energieinfrastruktur verringert. Die gesellschaftliche Akzeptanz für Einsparungen und bewussten Konsum ist dabei von zentraler Bedeutung.", + "Energieeinsparungen werden durch Maßnahmen wie Energiesparprogramme, smarte Technologien und Förderung von Konsumverzicht erzielt.", + ], + "pro": [ + "Reduzierter Energieverbrauch und geringerer Bedarf an neuer Infrastruktur.", + "Stärkung des Umweltbewusstseins und nachhaltiger Lebensstile.", + "Weniger Eingriffe in natürliche Flächen durch geringere Energieproduktion.", + ], + "contra": [ + "Möglicherweise geringere Energieproduktion im Vergleich zu Szenarien mit starkem Ausbau erneuerbarer Energien.", + "Hohe Abhängigkeit von Verhaltensänderungen der Bevölkerung, die schwer umsetzbar sind.", + ], + }, + } + return render(request, "reenact/scenario.html", {"info": infos[id]}) diff --git a/reenact/static/css/tailwind_input.css b/reenact/static/css/tailwind_input.css new file mode 100644 index 0000000..b5c61c9 --- /dev/null +++ b/reenact/static/css/tailwind_input.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/reenact/static/images/logo-reenact.jpg b/reenact/static/images/logo-reenact.jpg new file mode 100644 index 0000000..fb6c766 Binary files /dev/null and b/reenact/static/images/logo-reenact.jpg differ diff --git a/reenact/templates/403.html b/reenact/templates/403.html index 5795603..40954bb 100644 --- a/reenact/templates/403.html +++ b/reenact/templates/403.html @@ -1,6 +1,8 @@ {% extends "base.html" %} -{% block title %}Forbidden (403){% endblock title %} +{% block title %} + Forbidden (403) +{% endblock title %} {% block content %}

Forbidden (403)

diff --git a/reenact/templates/403_csrf.html b/reenact/templates/403_csrf.html index 5795603..40954bb 100644 --- a/reenact/templates/403_csrf.html +++ b/reenact/templates/403_csrf.html @@ -1,6 +1,8 @@ {% extends "base.html" %} -{% block title %}Forbidden (403){% endblock title %} +{% block title %} + Forbidden (403) +{% endblock title %} {% block content %}

Forbidden (403)

diff --git a/reenact/templates/404.html b/reenact/templates/404.html index 5111d3a..2399b79 100644 --- a/reenact/templates/404.html +++ b/reenact/templates/404.html @@ -1,6 +1,8 @@ {% extends "base.html" %} -{% block title %}Page not found{% endblock title %} +{% block title %} + Page not found +{% endblock title %} {% block content %}

Page not found

diff --git a/reenact/templates/500.html b/reenact/templates/500.html index 1add004..c4e2fa3 100644 --- a/reenact/templates/500.html +++ b/reenact/templates/500.html @@ -1,6 +1,8 @@ {% extends "base.html" %} -{% block title %}Server Error{% endblock title %} +{% block title %} + Server Error +{% endblock title %} {% block content %}

Ooops!!! 500

Looks like something went wrong!

diff --git a/reenact/templates/account/base_manage_password.html b/reenact/templates/account/base_manage_password.html index 1e1dbdb..20c44f7 100644 --- a/reenact/templates/account/base_manage_password.html +++ b/reenact/templates/account/base_manage_password.html @@ -8,4 +8,3 @@ {% endblock main %} - diff --git a/reenact/templates/allauth/layouts/entrance.html b/reenact/templates/allauth/layouts/entrance.html index d3eb631..99df151 100644 --- a/reenact/templates/allauth/layouts/entrance.html +++ b/reenact/templates/allauth/layouts/entrance.html @@ -1,8 +1,13 @@ {% extends "base.html" %} + {% load i18n %} -{% block bodyclass %}bg-light{% endblock bodyclass %} -{% block css %}{{ block.super }}{% endblock css %} +{% block bodyclass %} + bg-light +{% endblock bodyclass %} +{% block css %} + {{ block.super }} +{% endblock css %} {% block title %} {% block head_title %} {% trans "Sign In" %} diff --git a/reenact/templates/base.html b/reenact/templates/base.html index 2b7ec12..4c7d594 100644 --- a/reenact/templates/base.html +++ b/reenact/templates/base.html @@ -1,145 +1,56 @@ +{% load static i18n compress %} -{% load static i18n compress%} + {% get_current_language as LANGUAGE_CODE %} - + + + + + {% block title %} - ReEnAct - {% endblock title %} - - - - - - {% block css %} - - - - - - -{% compress css %} - -{% endcompress %} - - -{% endblock css %} - -{# Placed at the top of the document so pages load faster with defer #} -{% block javascript %} - - - - - - - - - - -{% compress js %} - -{% endcompress %} - - -{% endblock javascript %} - - - {% block body %} -
- -
-
- {% if messages %} - {% for message in messages %} -
- {{ message }} - + ReEnAct + {% endblock title %} + + + {% block sources %} + {% endblock sources %} + {% block css %} + + {% endblock css %} + {% block javascript %} + {% endblock javascript %} + + +
+ {% if messages %} +
+ {% for message in messages %} +
+ {{ message }} + +
+ {% endfor %}
- {% endfor %} - {% endif %} - {% block main %} - {% block content %} -

Use this document as a way to quick start any new project.

- {% endblock content %} - {% endblock main %} - -
- {% endblock body %} - - {% block modal %} - {% endblock modal %} - {% block inline_javascript %} - {% comment %} - Script tags with only code, no src (defer by default). To run - with a "defer" so that you run inline code: - - {% endcomment %} - {% endblock inline_javascript %} - + {% endif %} + {% block navigation %} + {% include "navigation.html" %} + {% endblock navigation %} + {% block main %} + {% block content %} + {% endblock content %} + {% endblock main %} + {% block footer %} + {% include "footer.html" %} + {% endblock footer %} +
+ diff --git a/reenact/templates/cotton/scenario_box.html b/reenact/templates/cotton/scenario_box.html new file mode 100644 index 0000000..ce6484b --- /dev/null +++ b/reenact/templates/cotton/scenario_box.html @@ -0,0 +1,15 @@ + +
+
+ + + +

{{ title }}

+
+
{{ text }}
+
+
diff --git a/reenact/templates/cotton/scenario_kpi.html b/reenact/templates/cotton/scenario_kpi.html new file mode 100644 index 0000000..b97a58c --- /dev/null +++ b/reenact/templates/cotton/scenario_kpi.html @@ -0,0 +1,7 @@ +
+
+

{{ title }}

+

{{ kpi }}

+

{{ percent }}%

+
+
diff --git a/reenact/templates/footer.html b/reenact/templates/footer.html new file mode 100644 index 0000000..a58f613 --- /dev/null +++ b/reenact/templates/footer.html @@ -0,0 +1,7 @@ +{% load i18n %} + + diff --git a/reenact/templates/navigation.html b/reenact/templates/navigation.html new file mode 100644 index 0000000..f3610a6 --- /dev/null +++ b/reenact/templates/navigation.html @@ -0,0 +1,60 @@ +{% load i18n %} + + diff --git a/reenact/templates/pages/about.html b/reenact/templates/pages/about.html index 3070348..94d9808 100644 --- a/reenact/templates/pages/about.html +++ b/reenact/templates/pages/about.html @@ -1,3 +1 @@ {% extends "base.html" %} - - diff --git a/reenact/templates/pages/home.html b/reenact/templates/pages/home.html index 3070348..94d9808 100644 --- a/reenact/templates/pages/home.html +++ b/reenact/templates/pages/home.html @@ -1,3 +1 @@ {% extends "base.html" %} - - diff --git a/reenact/templates/reenact/challenges.html b/reenact/templates/reenact/challenges.html new file mode 100644 index 0000000..efda932 --- /dev/null +++ b/reenact/templates/reenact/challenges.html @@ -0,0 +1,63 @@ +{% extends "base.html" %} + +{% block main %} + +
+
+
+
+

+ Die Energiewende bringt Herausforderungen mit sich. Veränderungen in der Infrastruktur, wirtschaftliche Auswirkungen und Anpassungen im Lebensstil können Unsicherheiten auslösen. Eine nachhaltige und gerechte Lösung stellt sicher, dass der Übergang zu sauberer Energie der gesamten Gemeinschaft zugutekommt. +

+

+ Hauptziel ist es, bis 2040 eine CO2-Emission von 0% zu erreichen. Gemeinsam können wir unsere Region zu einem Vorreiter der Energiezukunft machen und damit auch einen wichtigen Beitrag zu den nationalen Energiezielen leisten. +

+

+ Es gibt mehrere Wege, das Hauptziel zu erreichen. Diese Wege werden durch verschiedene Zukunftsszenarien dargestellt. Mithilfe einiger Fragen können Sie das beste Zukunftsszenario und damit die optimale Lösung für die Region finden. +

+
+
+
+
+ +{% endblock main %} diff --git a/reenact/templates/reenact/comparison.html b/reenact/templates/reenact/comparison.html new file mode 100644 index 0000000..4a9121b --- /dev/null +++ b/reenact/templates/reenact/comparison.html @@ -0,0 +1,74 @@ +{% extends "base.html" %} + +{% block main %} + +
+
+ vergleich_top +
+
+ vergleich_middle +
+
+ vergleich_bottom +
+
+{% endblock main %} diff --git a/reenact/templates/reenact/createScenario.html b/reenact/templates/reenact/createScenario.html new file mode 100644 index 0000000..4147d58 --- /dev/null +++ b/reenact/templates/reenact/createScenario.html @@ -0,0 +1,402 @@ +{% extends "base.html" %} + +{% block main %} + +
+
+
+ Bitte nutzen Sie die Einstellungen und Schieberegler, um Ihr zukünftiges Szenario zu erstellen. +
+ Ziel 2040 + +
+
+
+
+
+
+

Erzeugung

+
+ + + + + + + + + + + + + +

Windkraft

+
+ +
+
+
+ +
+
+ + + + + +

Photovoltaik

+
+ +
+
+
+

Freiflächen

+ +

Dachanlagen

+ +

Agri-Photovoltaik

+ +

Moor-Photovoltaik

+ +
+
+ + + + + + + + + + + + + +

Moorbewirtschaftung

+
+ +
+
+
+ +
+
+ + + + + +

Batteriespeicher

+
+ +
+
+
+ +
+
+ + + + + + + + + +

Wärmespeicher

+
+ +
+
+
+ +
+
+ + + + + +

Wasserstofferzeugung

+
+ +
+
+
+ +
+
+
+
+
+

Verbrauch

+
+ + + + + +

Strom

+
+ +
+
+
+ +
+
+ + + + + + + + + +

Wärme

+
+ +
+
+
+ +
+
+
+
+ Ergebnisse +
+
+
+
+ +{% endblock main %} diff --git a/reenact/templates/reenact/help.html b/reenact/templates/reenact/help.html new file mode 100644 index 0000000..522e045 --- /dev/null +++ b/reenact/templates/reenact/help.html @@ -0,0 +1,5 @@ +{% extends "base.html" %} + +{% block main %} +
Hilfe
+{% endblock main %} diff --git a/reenact/templates/reenact/index.html b/reenact/templates/reenact/index.html new file mode 100644 index 0000000..0d447e2 --- /dev/null +++ b/reenact/templates/reenact/index.html @@ -0,0 +1,341 @@ +{% extends "base.html" %} + +{% block main %} +
+
+
+

Welches Zukunftsszenario passt zu Peenetal/Loitz?

+

+ Diese App hilft der Region, die Energiewende voranzutreiben und die Klimaziele Deutschlands zu erreichen. +

+

+ Visualisieren und vergleichen Sie vorgefertigte Szenarien oder erstellen Sie Ihr eigenes, um die nachhaltige Zukunft der Region mitzugestalten. +

+
+
+ +
+ +
+
+
+
+
+
+
+

Peenetal/Loitz heute

+
+
+ Diese Region zeichnet sich durch ihren wachsenden Einsatz erneuerbarer Energien aus und leistet einen wichtigen Beitrag zur Energiewende. Trotz der überschaubaren Größe entwickelt sich die Region dynamisch, indem sie innovative Lösungen zur nachhaltigen Energiegewinnung umsetzt. Besonders der Energiesektor bietet neue Investitionsmöglichkeiten, während die Landschaft durch Windkraft und Solaranlagen zunehmend für die Energieerzeugung genutzt wird. Die Region zeigt eindrucksvoll, wie ländliche Gebiete zur Erreichung der Klimaziele beitragen können, und bietet gleichzeitig Chancen für lokale Unternehmen und Gemeinden. +
+
+
+ + Überblick +
+ + + + + + + + + + + + + + + +
Bevölkerung5.998
Fläche + 170,46 km2 +
Fläche Erneuerbare Energien + 20,85 km2 +
+
+ +
+
+
+
+ Map +
+
+
+
+
+
+
+
+
+

+ Hauptziel ist es, bis 2040 eine CO2-Emission von 0% zu erreichen. Gemeinsam können wir unsere Region zu einem Vorreiter der Energiezukunft machen und damit auch einen wichtigen Beitrag zu den nationalen Energiezielen leisten. +

+
+
+

Chancen der Energiewende

+

+ Die Energiewende bringt Herausforderungen mit sich. Veränderungen in der Infrastruktur, wirtschaftliche Auswirkungen und Anpassungen im Lebensstil können Unsicherheiten auslösen. Eine nachhaltige und gerechte Lösung stellt sicher, dass der Übergang zu sauberer Energie der gesamten Gemeinschaft zugutekommt. +

+

+ Es gibt mehrere Wege, das Hauptziel zu erreichen. Diese Wege werden durch verschiedene Zukunftsszenarien dargestellt. Mithilfe einiger Fragen können Sie das beste Zukunftsszenario und damit die optimale Lösung für die Region finden. +

+ +
+
+
+
+
+
+
+

Häufige Fragen & Ressourcen

+
+
+

+ +

+ +
+
+

+ +

+ +
+
+
+
+

+ +

+ +
+
+

+ +

+ +
+
+
+
+

+ +

+ +
+
+

+ +

+ +
+
+ +
+
+
+
+{% endblock main %} diff --git a/reenact/templates/reenact/regionToday.html b/reenact/templates/reenact/regionToday.html new file mode 100644 index 0000000..0612f55 --- /dev/null +++ b/reenact/templates/reenact/regionToday.html @@ -0,0 +1,76 @@ +{% extends "base.html" %} + +{% block main %} + +
+ region heute +
+ +{% endblock main %} diff --git a/reenact/templates/reenact/scenario.html b/reenact/templates/reenact/scenario.html new file mode 100644 index 0000000..3936e77 --- /dev/null +++ b/reenact/templates/reenact/scenario.html @@ -0,0 +1,134 @@ +{% extends "base.html" %} + +{% block main %} + +
+
+

{{ info.name }}

+
+
+ + + + +
+
+
+ {% for paragraph in info.description %}

{{ paragraph }}

{% endfor %} +
+
+
+
+

Vorteile

+
    + {% for pro in info.pro %}
  • {{ pro }}
  • {% endfor %} +
+
+
+

Nachteile

+
    + {% for contra in info.contra %}{{ contra }}{% endfor %} +
+
+
+
+
+
+ details +
+
+ +{% endblock main %} diff --git a/reenact/templates/reenact/scenarioDetail.html b/reenact/templates/reenact/scenarioDetail.html new file mode 100644 index 0000000..9e9a0cd --- /dev/null +++ b/reenact/templates/reenact/scenarioDetail.html @@ -0,0 +1,170 @@ +{% extends "base.html" %} + +{% block main %} + +
+
+
+

Mein Zukunftszenario

+
+
+
+
+

Gesamtenergie -produktion

+

234 GWh

+

+8,3%

+
+
+
+
+

Anteil Flächennutzung

+

8,8%

+

+150%

+
+
+
+
+

Windkraft

+

100 GWh

+

+200%

+
+
+
+
+

Photovoltaik

+

111 GWh

+

+200%

+
+
+
+
+

Biomasse

+

3,0 GWh

+

+50%

+
+
+
+
+

Wasserstoff

+

4,8 GWh

+

+125%

+
+
+
+
+
+

+ Dieses Szenario setzt auf eine ausgewogene Mischung aus erneuerbaren Energiequellen, um die Klimaziele 2040 zu erreichen. Durch die Kombination von Photovoltaikanlagen, Windparks, Biomasse und Bioenergie wird der Energiebedarf nachhaltig gedeckt und die Abhängigkeit von einer einzelnen Energieart reduziert. +

+

+ Der Einsatz von PV-Anlagen auf Dächern und Freiflächen ergänzt die Windenergie und nutzt vorhandene Ressourcen optimal. Moderater Flächenverbrauch schützt natürliche Gebiete und berücksichtigt den Naturschutz. +

+

+ Einwohner und lokale Wirtschaft sind eingeladen, aktiv teilzunehmen. Die Maßnahmen sind nicht nur umweltschonend, sondern auch neu wirtschaftlich. +

+
+
+
+
+

Vorteile

+
    +
  • Ausgewogener Energiemix erhöht Resilienz und Zuverlässigkeit.
  • +
  • Nutzung mehrerer erneuerbarer Quellen reduziert die Abhängigkeit von einer einzigen Energieart.
  • +
  • Moderater Flächenverbrauch, wodurch natürliche Gebiete besser erhalten bleiben.
  • +
+
+
+

Nachteile

+
    +
  • Komplexere Infrastruktur und Verwaltung aufgrund der Vielfalt der Energiequellen.
  • +
  • Höhere Anfangskosten und logistische Herausforderungen beim Aufbau diverser erneuerbarer Projekte.
  • +
+
+
+
+
+
+ details +
+
+
+ +{% endblock main %} diff --git a/reenact/templates/reenact/scenariosOverview.html b/reenact/templates/reenact/scenariosOverview.html new file mode 100644 index 0000000..23eb03a --- /dev/null +++ b/reenact/templates/reenact/scenariosOverview.html @@ -0,0 +1,110 @@ +{% extends "base.html" %} + +{% block main %} + +
+
+
+

Wählen Sie ein vorgefertigtes Szenario aus oder erstellen Sie Ihr eigenes Szenario

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +{% endblock main %} diff --git a/reenact/templates/reenact/source.html b/reenact/templates/reenact/source.html new file mode 100644 index 0000000..4f41a1d --- /dev/null +++ b/reenact/templates/reenact/source.html @@ -0,0 +1,5 @@ +{% extends "base.html" %} + +{% block content %} +
Quellen
+{% endblock content %} diff --git a/reenact/templates/users/user_detail.html b/reenact/templates/users/user_detail.html index 36e932c..6aba5ff 100644 --- a/reenact/templates/users/user_detail.html +++ b/reenact/templates/users/user_detail.html @@ -3,42 +3,30 @@ {% load static %} {% block title %} - User: - - {{ object.username }} - - + User: + {{ object.username }} {% endblock title %} {% block content %}
-

- - - {{ object.username }} - -

- {% if object.name %} -

{{ object.name }}

- {% endif %} -
-
- {% if object == request.user %} - -
-
- My Info - E-Mail - MFA - +

{{ object.username }}

+ {% if object.name %}

{{ object.name }}

{% endif %}
- - {% endif %} -
+ {% if object == request.user %} + +
+
+ My Info + E-Mail + MFA + +
+
+ + {% endif %} +
{% endblock content %} diff --git a/reenact/templates/users/user_form.html b/reenact/templates/users/user_form.html index 95bc2d9..491b79e 100644 --- a/reenact/templates/users/user_form.html +++ b/reenact/templates/users/user_form.html @@ -3,29 +3,19 @@ {% load crispy_forms_tags %} {% block title %} - - {{ user.username }} - - {% endblock title %} {% block content %} -

- - - {{ user.username }} - - -

-
- {% csrf_token %} - {{ form|crispy }} -
-
- +

{{ user.username }}

+ + {% csrf_token %} + {{ form|crispy }} +
+
+ +
-
- + {% endblock content %} diff --git a/reenact/users/views.py b/reenact/users/views.py index 54b87e6..d61e50e 100644 --- a/reenact/users/views.py +++ b/reenact/users/views.py @@ -28,7 +28,7 @@ def get_success_url(self) -> str: assert self.request.user.is_authenticated # type guard return self.request.user.get_absolute_url() - def get_object(self, queryset: QuerySet | None=None) -> User: + def get_object(self, queryset: QuerySet | None = None) -> User: assert self.request.user.is_authenticated # type guard return self.request.user diff --git a/requirements/base.txt b/requirements/base.txt index 28151af..4defee5 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -19,3 +19,4 @@ django-crispy-forms==2.3 # https://github.com/django-crispy-forms/django-crispy crispy-bootstrap5==2024.10 # https://github.com/django-crispy-forms/crispy-bootstrap5 django-compressor==4.5.1 # https://github.com/django-compressor/django-compressor django-redis==5.4.0 # https://github.com/jazzband/django-redis +django-cotton==1.3.0 # https://github.com/wrabit/django-cotton diff --git a/requirements/local.txt b/requirements/local.txt index 3f0db8a..1fba160 100644 --- a/requirements/local.txt +++ b/requirements/local.txt @@ -3,7 +3,7 @@ watchdog==4.0.2 # https://github.com/gorakhargosh/watchdog Werkzeug[watchdog]==3.0.4 # https://github.com/pallets/werkzeug ipdb==0.13.13 # https://github.com/gotcha/ipdb -psycopg[c]==3.2.3 # https://github.com/psycopg/psycopg +psycopg[binary]==3.2.3 # https://github.com/psycopg/psycopg watchfiles==0.24.0 # https://github.com/samuelcolvin/watchfiles # Testing diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..46e1654 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./reenact/templates/**/*.html'], + theme: { + extend: {}, + }, + plugins: [], +}