Skip to content

Commit

Permalink
Merge pull request #15 from rl-institut/feature/prototype
Browse files Browse the repository at this point in the history
Implement prototype from vercel app
  • Loading branch information
henhuy authored Dec 2, 2024
2 parents 800dd8a + 8769755 commit 453d26c
Show file tree
Hide file tree
Showing 47 changed files with 1,874 additions and 212 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -281,3 +281,7 @@ reenact/media/
!.envs/.local/

.idea/

# Tailwind
*/static/css/tailwind.css
package-lock.json
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

tailwind:
npx tailwindcss -i reenact/static/css/tailwind_input.css -o reenact/static/css/tailwind.css
4 changes: 3 additions & 1 deletion config/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"))
Expand Down Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion config/settings/local.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions config/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand All @@ -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),
]
Expand Down
4 changes: 2 additions & 2 deletions docker-compose.local.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ services:
redis:
image: docker.io/redis:6
container_name: reenact_local_redis

volumes:
- reenact_local_redis_data:/data


celeryworker:
<<: *django
Expand Down
8 changes: 4 additions & 4 deletions docker-compose.production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ volumes:
production_postgres_data_backups: {}
production_traefik: {}
production_django_media: {}

production_redis_data: {}



services:
Expand Down Expand Up @@ -52,10 +52,10 @@ services:

redis:
image: docker.io/redis:6

volumes:
- production_redis_data:/data


celeryworker:
<<: *django
Expand Down
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"devDependencies": {
"tailwindcss": "^3.4.13"
}
}
Empty file added reenact/reenact/__init__.py
Empty file.
1 change: 1 addition & 0 deletions reenact/reenact/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Register your models here.
6 changes: 6 additions & 0 deletions reenact/reenact/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class ReenactConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "reenact.reenact"
Empty file.
1 change: 1 addition & 0 deletions reenact/reenact/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Create your models here.
1 change: 1 addition & 0 deletions reenact/reenact/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Create your tests here.
52 changes: 52 additions & 0 deletions reenact/reenact/urls.py
Original file line number Diff line number Diff line change
@@ -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"),
]
209 changes: 209 additions & 0 deletions reenact/reenact/views.py
Original file line number Diff line number Diff line change
@@ -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]})
3 changes: 3 additions & 0 deletions reenact/static/css/tailwind_input.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
Binary file added reenact/static/images/logo-reenact.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion reenact/templates/403.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{% extends "base.html" %}

{% block title %}Forbidden (403){% endblock title %}
{% block title %}
Forbidden (403)
{% endblock title %}
{% block content %}
<h1>Forbidden (403)</h1>
<p>
Expand Down
Loading

0 comments on commit 453d26c

Please sign in to comment.