Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • AlekSIS/official/AlekSIS-App-Resint
  • sunweaver/AlekSIS-App-Resint
2 results
Show changes
Commits on Source (10)
......@@ -6,6 +6,19 @@ All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog`_,
and this project adheres to `Semantic Versioning`_.
`2.0b1`_ - 2021-11-07
---------------------
Added
~~~~~
* Provide API view for accessing the current PDF file of a live document (secured with OAuth2).
Changed
~~~~~~~
* German translations were updated.
`2.0b0`_ - 2021-11-03
--------------------
......@@ -22,3 +35,4 @@ Added
.. _Semantic Versioning: https://semver.org/spec/v2.0.0.html
.. _2.0b0: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.0b0
.. _2.0b1: https://edugit.org/AlekSIS/Official/AlekSIS/-/tags/2.0b1
from django.apps import apps
from django.db import models
from django.db.models import functions
from django.utils.translation import gettext_lazy as _
from aleksis.core.util.apps import AppConfig
......@@ -14,3 +19,22 @@ class ResintConfig(AppConfig):
([2020, 2021], "Frank Poetzsch-Heffter", "p-h@katharineum.de"),
([2019], "Julian Leucker", "leuckeju@katharineum.de"),
)
@classmethod
def get_all_scopes(cls) -> dict[str, str]:
"""Return all OAuth scopes and their descriptions for this app."""
LiveDocument = apps.get_model("resint", "LiveDocument")
label_prefix = _("Access PDF file for live document")
scopes = dict(
LiveDocument.objects.annotate(
scope=functions.Concat(
models.Value(f"{LiveDocument.SCOPE_PREFIX}_"),
models.F("slug"),
output_field=models.CharField(),
),
label=functions.Concat(models.Value(f"{label_prefix}: "), models.F("name")),
)
.values_list("scope", "label")
.distinct()
)
return scopes
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-03 15:32+0100\n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -18,6 +18,10 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: aleksis/apps/resint/apps.py:27
msgid "Access PDF file for live document"
msgstr ""
#: aleksis/apps/resint/menus.py:37
msgid "Documents"
msgstr ""
......@@ -32,7 +36,7 @@ msgstr ""
msgid "Poster groups"
msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:212
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219
#: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents"
......@@ -46,7 +50,7 @@ msgstr ""
msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:156
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158
#: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name"
msgstr ""
......@@ -118,23 +122,23 @@ msgstr ""
msgid "Posters"
msgstr ""
#: aleksis/apps/resint/models.py:153
#: aleksis/apps/resint/models.py:155
msgid "Slug"
msgstr ""
#: aleksis/apps/resint/models.py:154
#: aleksis/apps/resint/models.py:156
msgid "This will be used for the name of the current PDF file."
msgstr ""
#: aleksis/apps/resint/models.py:162
#: aleksis/apps/resint/models.py:164
msgid "Current file"
msgstr ""
#: aleksis/apps/resint/models.py:166
#: aleksis/apps/resint/models.py:168
msgid "Was the last update triggered manually?"
msgstr ""
#: aleksis/apps/resint/models.py:211
#: aleksis/apps/resint/models.py:218
msgid "Live document"
msgstr ""
......@@ -262,34 +266,34 @@ msgstr ""
msgid "Upload poster"
msgstr ""
#: aleksis/apps/resint/views.py:48 aleksis/apps/resint/views.py:59
#: aleksis/apps/resint/views.py:50 aleksis/apps/resint/views.py:61
msgid "The poster group has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:69
#: aleksis/apps/resint/views.py:71
msgid "The poster group has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:112
#: aleksis/apps/resint/views.py:114
msgid "The poster has been uploaded."
msgstr ""
#: aleksis/apps/resint/views.py:123
#: aleksis/apps/resint/views.py:125
msgid "The poster has been changed."
msgstr ""
#: aleksis/apps/resint/views.py:133
#: aleksis/apps/resint/views.py:135
msgid "The poster has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:195
#: aleksis/apps/resint/views.py:197
msgid "The live document has been created."
msgstr ""
#: aleksis/apps/resint/views.py:210
#: aleksis/apps/resint/views.py:212
msgid "The live document has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:221
#: aleksis/apps/resint/views.py:223
msgid "The live document has been deleted."
msgstr ""
......@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-03 15:32+0100\n"
"PO-Revision-Date: 2021-11-03 14:45+0000\n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n"
"PO-Revision-Date: 2021-11-07 11:17+0000\n"
"Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
"Language-Team: German <https://translate.edugit.org/projects/aleksis/"
"aleksis-app-resint/de/>\n"
......@@ -19,6 +19,10 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.8\n"
#: aleksis/apps/resint/apps.py:27
msgid "Access PDF file for live document"
msgstr "PDF-Datei für Live-Dokument abrufen"
#: aleksis/apps/resint/menus.py:37
msgid "Documents"
msgstr "Dokumente"
......@@ -33,7 +37,7 @@ msgstr "Dokumente verwalten"
msgid "Poster groups"
msgstr "Dokumentengruppen"
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:212
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219
#: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents"
......@@ -47,7 +51,7 @@ msgstr "Slug für den URL-Namen"
msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr "Wenn Sie 'beispiel' nutzen, wird der Dateiname 'beispiel.pdf' sein."
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:156
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158
#: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name"
msgstr "Name"
......@@ -119,23 +123,23 @@ msgstr "Dokument"
msgid "Posters"
msgstr "Dokumente"
#: aleksis/apps/resint/models.py:153
#: aleksis/apps/resint/models.py:155
msgid "Slug"
msgstr "Slug"
#: aleksis/apps/resint/models.py:154
#: aleksis/apps/resint/models.py:156
msgid "This will be used for the name of the current PDF file."
msgstr "Dies wird für den Namen der aktuellen PDF-Datei benutzt werden."
#: aleksis/apps/resint/models.py:162
#: aleksis/apps/resint/models.py:164
msgid "Current file"
msgstr "Aktuelle Datei"
#: aleksis/apps/resint/models.py:166
#: aleksis/apps/resint/models.py:168
msgid "Was the last update triggered manually?"
msgstr "Wurde die letzte Aktualisierung manuell ausgelöst?"
#: aleksis/apps/resint/models.py:211
#: aleksis/apps/resint/models.py:218
msgid "Live document"
msgstr "Live-Dokument"
......@@ -266,35 +270,35 @@ msgstr "Anzeigen"
msgid "Upload poster"
msgstr "Dokument hochladen"
#: aleksis/apps/resint/views.py:48 aleksis/apps/resint/views.py:59
#: aleksis/apps/resint/views.py:50 aleksis/apps/resint/views.py:61
msgid "The poster group has been saved."
msgstr "Die Dokumentengruppe wurde gespeichert."
#: aleksis/apps/resint/views.py:69
#: aleksis/apps/resint/views.py:71
msgid "The poster group has been deleted."
msgstr "Die Dokumentengruppe wurde gelöscht."
#: aleksis/apps/resint/views.py:112
#: aleksis/apps/resint/views.py:114
msgid "The poster has been uploaded."
msgstr "Das Dokument wurde hochgeladen."
#: aleksis/apps/resint/views.py:123
#: aleksis/apps/resint/views.py:125
msgid "The poster has been changed."
msgstr "Das Dokument wurde verändert."
#: aleksis/apps/resint/views.py:133
#: aleksis/apps/resint/views.py:135
msgid "The poster has been deleted."
msgstr "Das Dokument wurde gelöscht."
#: aleksis/apps/resint/views.py:195
#: aleksis/apps/resint/views.py:197
msgid "The live document has been created."
msgstr "Das Live-Dokument wurde erstellt."
#: aleksis/apps/resint/views.py:210
#: aleksis/apps/resint/views.py:212
msgid "The live document has been saved."
msgstr "Das Live-Dokument wurde gespeichert."
#: aleksis/apps/resint/views.py:221
#: aleksis/apps/resint/views.py:223
msgid "The live document has been deleted."
msgstr "Das Live-Dokument wurde gelöscht."
......
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-03 15:32+0100\n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -18,6 +18,10 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: aleksis/apps/resint/apps.py:27
msgid "Access PDF file for live document"
msgstr ""
#: aleksis/apps/resint/menus.py:37
msgid "Documents"
msgstr ""
......@@ -32,7 +36,7 @@ msgstr ""
msgid "Poster groups"
msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:212
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219
#: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents"
......@@ -46,7 +50,7 @@ msgstr ""
msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:156
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158
#: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name"
msgstr ""
......@@ -118,23 +122,23 @@ msgstr ""
msgid "Posters"
msgstr ""
#: aleksis/apps/resint/models.py:153
#: aleksis/apps/resint/models.py:155
msgid "Slug"
msgstr ""
#: aleksis/apps/resint/models.py:154
#: aleksis/apps/resint/models.py:156
msgid "This will be used for the name of the current PDF file."
msgstr ""
#: aleksis/apps/resint/models.py:162
#: aleksis/apps/resint/models.py:164
msgid "Current file"
msgstr ""
#: aleksis/apps/resint/models.py:166
#: aleksis/apps/resint/models.py:168
msgid "Was the last update triggered manually?"
msgstr ""
#: aleksis/apps/resint/models.py:211
#: aleksis/apps/resint/models.py:218
msgid "Live document"
msgstr ""
......@@ -262,34 +266,34 @@ msgstr ""
msgid "Upload poster"
msgstr ""
#: aleksis/apps/resint/views.py:48 aleksis/apps/resint/views.py:59
#: aleksis/apps/resint/views.py:50 aleksis/apps/resint/views.py:61
msgid "The poster group has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:69
#: aleksis/apps/resint/views.py:71
msgid "The poster group has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:112
#: aleksis/apps/resint/views.py:114
msgid "The poster has been uploaded."
msgstr ""
#: aleksis/apps/resint/views.py:123
#: aleksis/apps/resint/views.py:125
msgid "The poster has been changed."
msgstr ""
#: aleksis/apps/resint/views.py:133
#: aleksis/apps/resint/views.py:135
msgid "The poster has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:195
#: aleksis/apps/resint/views.py:197
msgid "The live document has been created."
msgstr ""
#: aleksis/apps/resint/views.py:210
#: aleksis/apps/resint/views.py:212
msgid "The live document has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:221
#: aleksis/apps/resint/views.py:223
msgid "The live document has been deleted."
msgstr ""
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-03 15:32+0100\n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -17,6 +17,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: aleksis/apps/resint/apps.py:27
msgid "Access PDF file for live document"
msgstr ""
#: aleksis/apps/resint/menus.py:37
msgid "Documents"
msgstr ""
......@@ -31,7 +35,7 @@ msgstr ""
msgid "Poster groups"
msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:212
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219
#: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents"
......@@ -45,7 +49,7 @@ msgstr ""
msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:156
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158
#: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name"
msgstr ""
......@@ -117,23 +121,23 @@ msgstr ""
msgid "Posters"
msgstr ""
#: aleksis/apps/resint/models.py:153
#: aleksis/apps/resint/models.py:155
msgid "Slug"
msgstr ""
#: aleksis/apps/resint/models.py:154
#: aleksis/apps/resint/models.py:156
msgid "This will be used for the name of the current PDF file."
msgstr ""
#: aleksis/apps/resint/models.py:162
#: aleksis/apps/resint/models.py:164
msgid "Current file"
msgstr ""
#: aleksis/apps/resint/models.py:166
#: aleksis/apps/resint/models.py:168
msgid "Was the last update triggered manually?"
msgstr ""
#: aleksis/apps/resint/models.py:211
#: aleksis/apps/resint/models.py:218
msgid "Live document"
msgstr ""
......@@ -261,34 +265,34 @@ msgstr ""
msgid "Upload poster"
msgstr ""
#: aleksis/apps/resint/views.py:48 aleksis/apps/resint/views.py:59
#: aleksis/apps/resint/views.py:50 aleksis/apps/resint/views.py:61
msgid "The poster group has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:69
#: aleksis/apps/resint/views.py:71
msgid "The poster group has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:112
#: aleksis/apps/resint/views.py:114
msgid "The poster has been uploaded."
msgstr ""
#: aleksis/apps/resint/views.py:123
#: aleksis/apps/resint/views.py:125
msgid "The poster has been changed."
msgstr ""
#: aleksis/apps/resint/views.py:133
#: aleksis/apps/resint/views.py:135
msgid "The poster has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:195
#: aleksis/apps/resint/views.py:197
msgid "The live document has been created."
msgstr ""
#: aleksis/apps/resint/views.py:210
#: aleksis/apps/resint/views.py:212
msgid "The live document has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:221
#: aleksis/apps/resint/views.py:223
msgid "The live document has been deleted."
msgstr ""
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-03 15:32+0100\n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -17,6 +17,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: aleksis/apps/resint/apps.py:27
msgid "Access PDF file for live document"
msgstr ""
#: aleksis/apps/resint/menus.py:37
msgid "Documents"
msgstr ""
......@@ -31,7 +35,7 @@ msgstr ""
msgid "Poster groups"
msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:212
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219
#: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents"
......@@ -45,7 +49,7 @@ msgstr ""
msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:156
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158
#: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name"
msgstr ""
......@@ -117,23 +121,23 @@ msgstr ""
msgid "Posters"
msgstr ""
#: aleksis/apps/resint/models.py:153
#: aleksis/apps/resint/models.py:155
msgid "Slug"
msgstr ""
#: aleksis/apps/resint/models.py:154
#: aleksis/apps/resint/models.py:156
msgid "This will be used for the name of the current PDF file."
msgstr ""
#: aleksis/apps/resint/models.py:162
#: aleksis/apps/resint/models.py:164
msgid "Current file"
msgstr ""
#: aleksis/apps/resint/models.py:166
#: aleksis/apps/resint/models.py:168
msgid "Was the last update triggered manually?"
msgstr ""
#: aleksis/apps/resint/models.py:211
#: aleksis/apps/resint/models.py:218
msgid "Live document"
msgstr ""
......@@ -261,34 +265,34 @@ msgstr ""
msgid "Upload poster"
msgstr ""
#: aleksis/apps/resint/views.py:48 aleksis/apps/resint/views.py:59
#: aleksis/apps/resint/views.py:50 aleksis/apps/resint/views.py:61
msgid "The poster group has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:69
#: aleksis/apps/resint/views.py:71
msgid "The poster group has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:112
#: aleksis/apps/resint/views.py:114
msgid "The poster has been uploaded."
msgstr ""
#: aleksis/apps/resint/views.py:123
#: aleksis/apps/resint/views.py:125
msgid "The poster has been changed."
msgstr ""
#: aleksis/apps/resint/views.py:133
#: aleksis/apps/resint/views.py:135
msgid "The poster has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:195
#: aleksis/apps/resint/views.py:197
msgid "The live document has been created."
msgstr ""
#: aleksis/apps/resint/views.py:210
#: aleksis/apps/resint/views.py:212
msgid "The live document has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:221
#: aleksis/apps/resint/views.py:223
msgid "The live document has been deleted."
msgstr ""
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-03 15:32+0100\n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -17,6 +17,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: aleksis/apps/resint/apps.py:27
msgid "Access PDF file for live document"
msgstr ""
#: aleksis/apps/resint/menus.py:37
msgid "Documents"
msgstr ""
......@@ -31,7 +35,7 @@ msgstr ""
msgid "Poster groups"
msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:212
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219
#: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents"
......@@ -45,7 +49,7 @@ msgstr ""
msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:156
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158
#: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name"
msgstr ""
......@@ -117,23 +121,23 @@ msgstr ""
msgid "Posters"
msgstr ""
#: aleksis/apps/resint/models.py:153
#: aleksis/apps/resint/models.py:155
msgid "Slug"
msgstr ""
#: aleksis/apps/resint/models.py:154
#: aleksis/apps/resint/models.py:156
msgid "This will be used for the name of the current PDF file."
msgstr ""
#: aleksis/apps/resint/models.py:162
#: aleksis/apps/resint/models.py:164
msgid "Current file"
msgstr ""
#: aleksis/apps/resint/models.py:166
#: aleksis/apps/resint/models.py:168
msgid "Was the last update triggered manually?"
msgstr ""
#: aleksis/apps/resint/models.py:211
#: aleksis/apps/resint/models.py:218
msgid "Live document"
msgstr ""
......@@ -261,34 +265,34 @@ msgstr ""
msgid "Upload poster"
msgstr ""
#: aleksis/apps/resint/views.py:48 aleksis/apps/resint/views.py:59
#: aleksis/apps/resint/views.py:50 aleksis/apps/resint/views.py:61
msgid "The poster group has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:69
#: aleksis/apps/resint/views.py:71
msgid "The poster group has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:112
#: aleksis/apps/resint/views.py:114
msgid "The poster has been uploaded."
msgstr ""
#: aleksis/apps/resint/views.py:123
#: aleksis/apps/resint/views.py:125
msgid "The poster has been changed."
msgstr ""
#: aleksis/apps/resint/views.py:133
#: aleksis/apps/resint/views.py:135
msgid "The poster has been deleted."
msgstr ""
#: aleksis/apps/resint/views.py:195
#: aleksis/apps/resint/views.py:197
msgid "The live document has been created."
msgstr ""
#: aleksis/apps/resint/views.py:210
#: aleksis/apps/resint/views.py:212
msgid "The live document has been saved."
msgstr ""
#: aleksis/apps/resint/views.py:221
#: aleksis/apps/resint/views.py:223
msgid "The live document has been deleted."
msgstr ""
......@@ -149,6 +149,8 @@ class Poster(ExtensibleModel):
class LiveDocument(ExtensiblePolymorphicModel):
"""Model for periodically/automatically updated files."""
SCOPE_PREFIX = "live_document_pdf"
slug = models.SlugField(
verbose_name=_("Slug"),
help_text=_("This will be used for the name of the current PDF file."),
......@@ -193,6 +195,11 @@ class LiveDocument(ExtensiblePolymorphicModel):
"""Get the filename without path of the PDF file."""
return f"{self.slug}.pdf"
@property
def scope(self) -> str:
"""Return OAuth2 scope name to access PDF file via API."""
return f"{self.SCOPE_PREFIX}_{self.slug}"
def save(self, *args, **kwargs):
with reversion.create_revision():
super().save(*args, **kwargs)
......
......@@ -5,6 +5,7 @@ from .views import (
LiveDocumentDeleteView,
LiveDocumentEditView,
LiveDocumentListView,
LiveDocumentShowAPIView,
LiveDocumentShowView,
PosterCurrentView,
PosterDeleteView,
......@@ -42,4 +43,9 @@ urlpatterns = [
path(
"live_documents/<str:slug>.pdf", LiveDocumentShowView.as_view(), name="show_live_document",
),
path(
"api/live_documents/<str:slug>.pdf",
LiveDocumentShowAPIView.as_view(),
name="api_show_live_document",
),
]
from typing import Any, Dict, Type
from typing import Any, Dict, List, Type
from django.contrib.contenttypes.models import ContentType
from django.db.models import QuerySet
......@@ -15,10 +15,12 @@ from django.views.generic.list import ListView
from django_tables2 import SingleTableView
from guardian.shortcuts import get_objects_for_user
from oauth2_provider.views.mixins import ScopedResourceMixin
from reversion.views import RevisionMixin
from rules.contrib.views import PermissionRequiredMixin
from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
from aleksis.core.util.auth_helpers import ClientProtectedResourceMixin
from .forms import PosterGroupForm, PosterUploadForm
from .models import LiveDocument, Poster, PosterGroup
......@@ -221,15 +223,30 @@ class LiveDocumentDeleteView(PermissionRequiredMixin, RevisionMixin, AdvancedDel
success_message = _("The live document has been deleted.")
class LiveDocumentShowView(PermissionRequiredMixin, SingleObjectMixin, View):
"""Show the current version of the live document."""
class LiveDocumentShowBaseView(SingleObjectMixin, View):
"""Base view for showing live documents."""
model = LiveDocument
permission_required = "resint.view_livedocument_rule"
def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> FileResponse:
live_document = self.get_object()
file = live_document.get_current_file()
if not file:
raise Http404
return FileResponse(file.file, content_type="application/pdf")
return FileResponse(file, content_type="application/pdf")
class LiveDocumentShowView(PermissionRequiredMixin, LiveDocumentShowBaseView):
"""Show the current version of the live document."""
permission_required = "resint.view_livedocument_rule"
class LiveDocumentShowAPIView(
ScopedResourceMixin, ClientProtectedResourceMixin, LiveDocumentShowBaseView
):
"""Show the current version of the live document in API."""
def get_scopes(self, *args, **kwargs) -> List[str]:
"""Return the scope needed to access the PDF file."""
return [self.get_object().scope]
This diff is collapsed.