diff --git a/base/static/css/index-style.css b/base/static/css/index-style.css index 21a19ea49..445c05af0 100644 --- a/base/static/css/index-style.css +++ b/base/static/css/index-style.css @@ -174,7 +174,7 @@ .index-tile-container { display: grid; - grid-template-columns: repeat(5, auto); + grid-template-columns: repeat(4, auto); grid-gap: 2em; padding: 2em 0; @@ -204,3 +204,32 @@ grid-template-rows: repeat(2, auto); } } +.index-startpage-info { + width: min(900px, calc(100% - 2rem)); + margin: 0 auto 2rem; + padding: 1.5rem 2rem; + text-align: left; + background-color: var(--white); + border: 2px groove var(--primaryColor1); + border-radius: 5px; +} + +.index-startpage-info h2 { + margin-top: 0; + color: var(--primaryColor2); + text-align: center; +} + +.index-startpage-info h3 { + color: var(--primaryColor4); +} + +.index-startpage-info p, +.index-startpage-info li { + line-height: 1.6; + color: var(--grey1); +} + +.index-startpage-info ul { + padding-left: 1.25rem; +} diff --git a/base/templates/base/index.html b/base/templates/base/index.html index 0972d3fbb..8bcb732fe 100644 --- a/base/templates/base/index.html +++ b/base/templates/base/index.html @@ -2,6 +2,7 @@ {% load django_bootstrap5 %} {% load static %} {% load compress %} +{% load base_tags %} {% block after-head %} {% compress css %} Database
+ alt="Factsheets"> --> Scenario Bundle
@@ -103,44 +104,51 @@

Academy

href="{{ EXTERNAL_URLS.tutorials_index }}">Academy
+
+ {% render_markdown 'release_info_startpage/release_v1.8.0.md' %} +
+ + -
-
-
- - API - - Learn how to download and publish open data on the OEP using the - API. - - Learn more -
-
- - Open Science - - Good scientific practice needs open licenses for software, data and - content. - - Learn more -
-
- - Open Energy Community - - Collaborate and contribute to the development on GitHub. - - Learn - more -
+
+
+
+
+
+ + API + + Learn how to download and publish open data on the OEP using the + API. + + Learn more +
+
+ + Open Science + + Good scientific practice needs open licenses for software, data and + content. + + Learn more +
+
+ + Open Energy Community + + Collaborate and contribute to the development on GitHub. + + Learn + more
+
{% endblock %} diff --git a/base/templatetags/base_tags.py b/base/templatetags/base_tags.py index 4ff288fa8..981b5b743 100644 --- a/base/templatetags/base_tags.py +++ b/base/templatetags/base_tags.py @@ -3,7 +3,12 @@ SPDX-License-Identifier: AGPL-3.0-or-later """ # noqa: 501 +from pathlib import Path, PurePosixPath + +import markdown2 from django import template +from django.contrib.staticfiles import finders +from django.utils.safestring import mark_safe register = template.Library() @@ -11,3 +16,34 @@ @register.filter(name="addclass") def addclass(field, css): return field.as_widget(attrs={"class": css}) + + +def _is_safe_static_path(filename): + path = PurePosixPath(filename) + return not path.is_absolute() and ".." not in path.parts + + +@register.simple_tag +def render_markdown(filename): + """Find a markdown file in staticfiles and render it as HTML. + + The staticfiles lookup allows markdown content to live in any Django app's + static directory. The fallback keeps the old ``base/static/content`` lookup + behaviour for existing callers that pass only a filename. + """ + if not _is_safe_static_path(filename): + return "" + + md_path = finders.find(filename) + if not md_path: + md_path = ( + Path(__file__).resolve().parent.parent / "static" / "content" / filename + ) + + try: + content = Path(md_path).read_text(encoding="utf-8") + except OSError: + return "" + + markdowner = markdown2.Markdown() + return mark_safe(markdowner.convert(content)) diff --git a/dataedit/static/release_info_startpage/release_v1.8.0.md b/dataedit/static/release_info_startpage/release_v1.8.0.md new file mode 100644 index 000000000..650b912e8 --- /dev/null +++ b/dataedit/static/release_info_startpage/release_v1.8.0.md @@ -0,0 +1,28 @@ + + +### ✨ Highlights + +- **Redesigned Tables listings & Search:** Introduced a dedicated search field + for user tables and reworked the table listing UI to display additional + metadata directly on the table cards. +- **Updated OEO Viewer & Entity Pages:** Reorganized the OEO Viewer layout for + better hierarchy and mobile responsiveness. Added a language toggle for + English/German synonyms, automatic entity-type detection, and an updated Graph + View widget that supports graph comparisons. +- **Scenario Comparison App (Prototype) Update:** Refactored the quantitative + scenario comparison prototype to work with the updated OEKG and OEO. The app + now uses E-Charts as its graph library. +- **Automated Metadata Syncing:** The metadata API now synchronizes the + documented data schema in the metadata with the actual table schema available + in the database. +- **Bug Fixes & General Improvements:** Fixed an issue in the oemetaBuilder tool + that removed specific references on save, corrected the Reviewer & Contributor + progress calculations to account for empty fields, and patched an OEO loading + bug related to version 2.12.0. + +👉 **Check out the full changelog and explore what’s new!** +[Full Changelog](https://github.com/OpenEnergyPlatform/oeplatform/blob/master/versions/changelogs/1_8_0.md)