From 6dfb69007fd137a02c17d484248a83f25e1df4c4 Mon Sep 17 00:00:00 2001 From: Sebastian Gutzeit Date: Mon, 2 Oct 2023 10:20:16 +0200 Subject: [PATCH] App Toolbox: Integration LaTeX-Projekt (#26) --- .eslintrc.json | 1 + .gitignore | 1 - .stylelintrc.json | 2 +- LICENSE | 1 - README.md | 9 +- .../static/datenmanagement/js/list.js | 28 ++ .../templates/datenmanagement/list.html | 53 ++- datenmanagement/views/views_list_map.py | 5 + datenwerft/settings.py | 17 + datenwerft/templates/error.html | 17 + datenwerft/templates/index.html | 28 +- .../templates/modal-confirm-export.html | 19 ++ datenwerft/templates/modal-error.html | 2 +- datenwerft/templates/modal-loading.html | 2 +- datenwerft/urls.py | 13 +- datenwerft/views.py | 96 +++++- docker-compose.yml | 2 + linting/pycodestyle | 2 +- requirements.txt | 1 + setup.cfg | 3 +- toolbox/405.html | 9 + toolbox/README.md | 78 +++++ toolbox/admin.py | 51 +++ toolbox/management/__init__.py | 0 toolbox/management/commands/__init__.py | 0 toolbox/management/commands/cleanpdfdir.py | 28 ++ ...plate_suitablefor_pdftemplate_suitedfor.py | 49 +++ toolbox/mkpdf/rostock.png | Bin 0 -> 741592 bytes toolbox/mkpdf/rostock.svg | 241 ++++++++++++++ toolbox/models.py | 74 ++++- toolbox/pdfs.py | 303 ++++++++++++++++++ toolbox/urls.py | 8 +- toolbox/views.py | 43 ++- 33 files changed, 1154 insertions(+), 32 deletions(-) create mode 100644 datenwerft/templates/error.html create mode 100644 datenwerft/templates/modal-confirm-export.html create mode 100644 toolbox/405.html create mode 100644 toolbox/README.md create mode 100644 toolbox/admin.py create mode 100644 toolbox/management/__init__.py create mode 100644 toolbox/management/commands/__init__.py create mode 100644 toolbox/management/commands/cleanpdfdir.py create mode 100644 toolbox/migrations/0002_pdftemplate_suitablefor_pdftemplate_suitedfor.py create mode 100644 toolbox/mkpdf/rostock.png create mode 100644 toolbox/mkpdf/rostock.svg create mode 100644 toolbox/pdfs.py diff --git a/.eslintrc.json b/.eslintrc.json index a5bc36c2..15b7e14a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -19,6 +19,7 @@ "enableMapLocate": true, "featureGeometry": true, "fetchGeoJsonFeatureCollection": true, + "fetchPdf": true, "filterApplication": true, "filterReset": true, "getFeatureCenter": true, diff --git a/.gitignore b/.gitignore index c16bbe76..eee61ca1 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ db.sqlite3 # Datenwerft.HRO datenwerft/secrets.py -datenmanagement/migrations hilfe/build /static /uploads diff --git a/.stylelintrc.json b/.stylelintrc.json index 36335e6c..42c7f22f 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -3,4 +3,4 @@ "rules": { "property-no-vendor-prefix": null } -} \ No newline at end of file +} diff --git a/LICENSE b/LICENSE index 2c4afabd..670154e3 100644 --- a/LICENSE +++ b/LICENSE @@ -114,4 +114,3 @@ Affirmer's express Statement of Purpose. For more information, please see - diff --git a/README.md b/README.md index c67caf2a..f98bcc73 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Web-Anwendung zur einfachen Erfassung von Geodaten, die auf [*Django*](https://w * [*GDAL*](https://gdal.org/) * [*PostgreSQL*](https://www.postgresql.org/) mit der Erweiterung [*PostGIS*](https://postgis.net/) * [*npm*](https://www.npmjs.com/) +* für App _Toolbox_ siehe [hier](toolbox/README.md) ## Installation @@ -30,7 +31,7 @@ Web-Anwendung zur einfachen Erfassung von Geodaten, die auf [*Django*](https://w 5. leere *PostgreSQL*-Datenbank für die Anwendungsadministration anlegen 6. leere *PostgreSQL*-Datenbank mit der Erweiterung *PostGIS* für die App *BEMAS* anlegen -6. leere *PostgreSQL*-Datenbank mit der Erweiterung *PostGIS* für die App *Datenmanagement* anlegen +7. leere *PostgreSQL*-Datenbank mit der Erweiterung *PostGIS* für die App *Datenmanagement* anlegen ## Konfiguration @@ -118,6 +119,10 @@ Für die App *BEMAS* kann optional ein Cronjob eingerichtet werden, der folgende Dieser Befehl führt dazu, dass alle Personen gelöscht werden, die nicht als Ansprechpartner:innen mit Organisationen verknüpft sind, nicht als Betreiber:innen mit Verursachern verknüpft sind und die als Beschwerdeführer:innen nur noch mit Beschwerden verknüpft sind, die seit `BEMAS_STATUS_CHANGE_DEADLINE_DAYS` (siehe `secrets.template`) abgeschlossen sind. +## PDF-Export mit eigenen Templates + +Für den Export von PDF-Dateien mit eigenen Templates aus der App *Datenmanagement* mittels der App *Toolbox* siehe [hier](toolbox/README.md). + ## Entwicklung ### Grundsätzliches @@ -228,4 +233,4 @@ Bei Commits und Pull-Requests in der Branch `master` werden folgende *GitHub*-Ac 1. *CodeQL:* CodeQL-Analyse gemäß `.github/workflows/codeql.yml` 2. *Linting:* Linting gemäß `.github/workflows/linting.yml` -3. *Tests:* Tests gemäß `.github/workflows/tests.yml` \ No newline at end of file +3. *Tests:* Tests gemäß `.github/workflows/tests.yml` diff --git a/datenmanagement/static/datenmanagement/js/list.js b/datenmanagement/static/datenmanagement/js/list.js index c491d303..e92b47b6 100644 --- a/datenmanagement/static/datenmanagement/js/list.js +++ b/datenmanagement/static/datenmanagement/js/list.js @@ -21,6 +21,34 @@ function formatData(data, brReplacement) { return data.trim(); // remove any remaining whitespaces from both sides } +/** + * @function + * @name fetchPdf + * + * fetches PDF file + * + * @param {string} url - URL + * @param {string} csrfToken - CSRF token + * @param {string} host - host + */ +function fetchPdf(url, csrfToken, host){ + const response = fetch( + url, { + method: 'POST', + headers: { + contentType: 'application/json', + 'X-CSRFToken': csrfToken + }, + redirect: 'follow', + origin: host, + referrerPolicy: 'no-referrer', + body: JSON.stringify(window.renderParams) + } + ); + response.then(response => response.blob()) + .then(myblob => window.open(URL.createObjectURL(myblob))); +} + /** * @function * @name initDataTable diff --git a/datenmanagement/templates/datenmanagement/list.html b/datenmanagement/templates/datenmanagement/list.html index c753f727..2d18668c 100644 --- a/datenmanagement/templates/datenmanagement/list.html +++ b/datenmanagement/templates/datenmanagement/list.html @@ -41,6 +41,18 @@

zurück {% if objects_count > 0 %} + {% if suitables|length > 0 %} +
+ + + + +
+ {% endif %}
{% if subset_id %}