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
Showing
with 1136 additions and 374 deletions
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n" "POT-Creation-Date: 2022-01-12 16:31+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -26,135 +26,129 @@ msgstr "" ...@@ -26,135 +26,129 @@ msgstr ""
msgid "Documents" msgid "Documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:46 #: aleksis/apps/resint/menus.py:49
msgid "Manage posters" msgid "Manage posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:57 aleksis/apps/resint/models.py:42 #: aleksis/apps/resint/menus.py:60 aleksis/apps/resint/models.py:45
#: aleksis/apps/resint/templates/resint/group/list.html:4 #: aleksis/apps/resint/templates/resint/group/list.html:4
#: aleksis/apps/resint/templates/resint/group/list.html:14 #: aleksis/apps/resint/templates/resint/group/list.html:14
msgid "Poster groups" msgid "Poster groups"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219 #: aleksis/apps/resint/menus.py:71 aleksis/apps/resint/models.py:237
#: aleksis/apps/resint/templates/resint/live_document/list.html:8 #: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9 #: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents" msgid "Live documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:22 #: aleksis/apps/resint/models.py:25
msgid "Slug used in URL name" msgid "Slug used in URL name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:23 #: aleksis/apps/resint/models.py:26
msgid "If you use 'example', the filename will be 'example.pdf'." msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158 #: aleksis/apps/resint/models.py:28 aleksis/apps/resint/models.py:163
#: aleksis/apps/resint/templates/resint/group/list.html:19 #: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:27 #: aleksis/apps/resint/models.py:30
msgid "Publishing weekday" msgid "Publishing weekday"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:29 #: aleksis/apps/resint/models.py:32
#: aleksis/apps/resint/templates/resint/group/list.html:22 #: aleksis/apps/resint/templates/resint/group/list.html:22
msgid "Publishing time" msgid "Publishing time"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:32 #: aleksis/apps/resint/models.py:35
msgid "Default PDF" msgid "Default PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:33 #: aleksis/apps/resint/models.py:36
msgid "This PDF file will be shown if there is no current PDF." msgid "This PDF file will be shown if there is no current PDF."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:37 #: aleksis/apps/resint/models.py:40
msgid "Show in menu" msgid "Show in menu"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:38 #: aleksis/apps/resint/models.py:41
msgid "Show for not logged-in users" msgid "Show for not logged-in users"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:41 aleksis/apps/resint/models.py:107 #: aleksis/apps/resint/models.py:44 aleksis/apps/resint/models.py:110
msgid "Poster group" msgid "Poster group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:48 #: aleksis/apps/resint/models.py:51
msgid "Can view all posters of this group" msgid "Can view all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:49 #: aleksis/apps/resint/models.py:52
msgid "Can upload new posters to this group" msgid "Can upload new posters to this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:50 #: aleksis/apps/resint/models.py:53
msgid "Can change all posters of this group" msgid "Can change all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:51 #: aleksis/apps/resint/models.py:54
msgid "Can delete all posters of this group" msgid "Can delete all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:110 #: aleksis/apps/resint/models.py:113
msgid "Calendar week" msgid "Calendar week"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:115 #: aleksis/apps/resint/models.py:118
msgid "Year" msgid "Year"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:118 #: aleksis/apps/resint/models.py:121
msgid "PDF" msgid "PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:128 #: aleksis/apps/resint/models.py:131
msgid "Poster" msgid "Poster"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:129 #: aleksis/apps/resint/models.py:132
#: aleksis/apps/resint/templates/resint/poster/list.html:5 #: aleksis/apps/resint/templates/resint/poster/list.html:5
#: aleksis/apps/resint/templates/resint/poster/list.html:8 #: aleksis/apps/resint/templates/resint/poster/list.html:8
msgid "Posters" msgid "Posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:155 #: aleksis/apps/resint/models.py:160
msgid "Slug" msgid "Slug"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:156 #: aleksis/apps/resint/models.py:161
msgid "This will be used for the name of the current PDF file." msgid "This will be used for the name of the current PDF file."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:164 #: aleksis/apps/resint/models.py:168
msgid "Current file" msgid "Current file"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:168 #: aleksis/apps/resint/models.py:172
msgid "Was the last update triggered manually?" msgid "Was the last update triggered manually?"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:218 #: aleksis/apps/resint/models.py:236
msgid "Live document" msgid "Live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:20 #: aleksis/apps/resint/tables.py:20 aleksis/apps/resint/tables.py:22
#: aleksis/apps/resint/templates/resint/group/list.html:49 #: aleksis/apps/resint/templates/resint/group/list.html:49
#: aleksis/apps/resint/templates/resint/poster/list.html:81 #: aleksis/apps/resint/templates/resint/poster/list.html:81
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:22 aleksis/apps/resint/tables.py:29 #: aleksis/apps/resint/tables.py:27 aleksis/apps/resint/tables.py:29
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/tables.py:27
#: aleksis/apps/resint/templates/resint/group/list.html:58 #: aleksis/apps/resint/templates/resint/group/list.html:58
#: aleksis/apps/resint/templates/resint/poster/list.html:87 #: aleksis/apps/resint/templates/resint/poster/list.html:87
msgid "Delete" msgid "Delete"
...@@ -186,6 +180,11 @@ msgstr "" ...@@ -186,6 +180,11 @@ msgstr ""
msgid "Default PDF file" msgid "Default PDF file"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:40 #: aleksis/apps/resint/templates/resint/group/list.html:40
msgid "Open" msgid "Open"
msgstr "" msgstr ""
...@@ -206,15 +205,19 @@ msgstr "" ...@@ -206,15 +205,19 @@ msgstr ""
msgid "Edit %(document)s" msgid "Edit %(document)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:14 #: aleksis/apps/resint/templates/resint/live_document/list.html:15
msgid "Create live document" msgid "Create live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:22 #: aleksis/apps/resint/templates/resint/live_document/list.html:23
#, python-format #, python-format
msgid "Create %(name)s" msgid "Create %(name)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:31
msgid "There is no app installed which registers any live document types."
msgstr ""
#: aleksis/apps/resint/templates/resint/poster/edit.html:5 #: aleksis/apps/resint/templates/resint/poster/edit.html:5
#: aleksis/apps/resint/templates/resint/poster/edit.html:8 #: aleksis/apps/resint/templates/resint/poster/edit.html:8
msgid "Edit poster" msgid "Edit poster"
......
...@@ -7,17 +7,16 @@ msgid "" ...@@ -7,17 +7,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n" "POT-Creation-Date: 2022-01-12 16:31+0100\n"
"PO-Revision-Date: 2021-11-07 11:17+0000\n" "PO-Revision-Date: 2024-08-19 20:28+0000\n"
"Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n" "Last-Translator: Jonathan Weth <teckids@jonathanweth.de>\n"
"Language-Team: German <https://translate.edugit.org/projects/aleksis/" "Language-Team: German <https://translate.edugit.org/projects/aleksis/aleksis-app-resint/de/>\n"
"aleksis-app-resint/de/>\n"
"Language: de_DE\n" "Language: de_DE\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.8\n" "X-Generator: Weblate 5.0.2\n"
#: aleksis/apps/resint/apps.py:27 #: aleksis/apps/resint/apps.py:27
msgid "Access PDF file for live document" msgid "Access PDF file for live document"
...@@ -27,135 +26,129 @@ msgstr "PDF-Datei für Live-Dokument abrufen" ...@@ -27,135 +26,129 @@ msgstr "PDF-Datei für Live-Dokument abrufen"
msgid "Documents" msgid "Documents"
msgstr "Dokumente" msgstr "Dokumente"
#: aleksis/apps/resint/menus.py:46 #: aleksis/apps/resint/menus.py:49
msgid "Manage posters" msgid "Manage posters"
msgstr "Dokumente verwalten" msgstr "Dokumente verwalten"
#: aleksis/apps/resint/menus.py:57 aleksis/apps/resint/models.py:42 #: aleksis/apps/resint/menus.py:60 aleksis/apps/resint/models.py:45
#: aleksis/apps/resint/templates/resint/group/list.html:4 #: aleksis/apps/resint/templates/resint/group/list.html:4
#: aleksis/apps/resint/templates/resint/group/list.html:14 #: aleksis/apps/resint/templates/resint/group/list.html:14
msgid "Poster groups" msgid "Poster groups"
msgstr "Dokumentengruppen" msgstr "Dokumentengruppen"
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219 #: aleksis/apps/resint/menus.py:71 aleksis/apps/resint/models.py:237
#: aleksis/apps/resint/templates/resint/live_document/list.html:8 #: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9 #: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents" msgid "Live documents"
msgstr "Live-Dokumente" msgstr "Live-Dokumente"
#: aleksis/apps/resint/models.py:22 #: aleksis/apps/resint/models.py:25
msgid "Slug used in URL name" msgid "Slug used in URL name"
msgstr "Slug für den URL-Namen" msgstr "Slug für den URL-Namen"
#: aleksis/apps/resint/models.py:23 #: aleksis/apps/resint/models.py:26
msgid "If you use 'example', the filename will be 'example.pdf'." msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr "Wenn Sie 'beispiel' nutzen, wird der Dateiname 'beispiel.pdf' sein." msgstr "Wenn Sie 'beispiel' nutzen, wird der Dateiname 'beispiel.pdf' sein."
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158 #: aleksis/apps/resint/models.py:28 aleksis/apps/resint/models.py:163
#: aleksis/apps/resint/templates/resint/group/list.html:19 #: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name" msgid "Name"
msgstr "Name" msgstr "Name"
#: aleksis/apps/resint/models.py:27 #: aleksis/apps/resint/models.py:30
msgid "Publishing weekday" msgid "Publishing weekday"
msgstr "Wochentag der Veröffentlichung" msgstr "Wochentag der Veröffentlichung"
#: aleksis/apps/resint/models.py:29 #: aleksis/apps/resint/models.py:32
#: aleksis/apps/resint/templates/resint/group/list.html:22 #: aleksis/apps/resint/templates/resint/group/list.html:22
msgid "Publishing time" msgid "Publishing time"
msgstr "Zeitpunkt der Veröffentlichung" msgstr "Zeitpunkt der Veröffentlichung"
#: aleksis/apps/resint/models.py:32 #: aleksis/apps/resint/models.py:35
msgid "Default PDF" msgid "Default PDF"
msgstr "Standard-PDF" msgstr "Standard-PDF"
#: aleksis/apps/resint/models.py:33 #: aleksis/apps/resint/models.py:36
msgid "This PDF file will be shown if there is no current PDF." msgid "This PDF file will be shown if there is no current PDF."
msgstr "Diese PDF-Datei wird angezeigt, wenn es kein aktuelles PDF gibt." msgstr "Diese PDF-Datei wird angezeigt, wenn es kein aktuelles PDF gibt."
#: aleksis/apps/resint/models.py:37 #: aleksis/apps/resint/models.py:40
msgid "Show in menu" msgid "Show in menu"
msgstr "Im Menü anzeigen" msgstr "Im Menü anzeigen"
#: aleksis/apps/resint/models.py:38 #: aleksis/apps/resint/models.py:41
msgid "Show for not logged-in users" msgid "Show for not logged-in users"
msgstr "Für nicht angemeldete Nutzer anzeigen" msgstr "Für nicht angemeldete Nutzer anzeigen"
#: aleksis/apps/resint/models.py:41 aleksis/apps/resint/models.py:107 #: aleksis/apps/resint/models.py:44 aleksis/apps/resint/models.py:110
msgid "Poster group" msgid "Poster group"
msgstr "Dokumentengruppe" msgstr "Dokumentengruppe"
#: aleksis/apps/resint/models.py:48 #: aleksis/apps/resint/models.py:51
msgid "Can view all posters of this group" msgid "Can view all posters of this group"
msgstr "Kann alle Dokumente dieser Gruppe sehen" msgstr "Kann alle Dokumente dieser Gruppe sehen"
#: aleksis/apps/resint/models.py:49 #: aleksis/apps/resint/models.py:52
msgid "Can upload new posters to this group" msgid "Can upload new posters to this group"
msgstr "Kann neue Dokumente zu dieser Gruppe hochladen" msgstr "Kann neue Dokumente zu dieser Gruppe hochladen"
#: aleksis/apps/resint/models.py:50 #: aleksis/apps/resint/models.py:53
msgid "Can change all posters of this group" msgid "Can change all posters of this group"
msgstr "Kann alle Dokumente dieser Gruppe verändern" msgstr "Kann alle Dokumente dieser Gruppe verändern"
#: aleksis/apps/resint/models.py:51 #: aleksis/apps/resint/models.py:54
msgid "Can delete all posters of this group" msgid "Can delete all posters of this group"
msgstr "Kann alle Dokumente dieser Gruppe löschen" msgstr "Kann alle Dokumente dieser Gruppe löschen"
#: aleksis/apps/resint/models.py:110 #: aleksis/apps/resint/models.py:113
msgid "Calendar week" msgid "Calendar week"
msgstr "Kalenderwoche" msgstr "Kalenderwoche"
#: aleksis/apps/resint/models.py:115 #: aleksis/apps/resint/models.py:118
msgid "Year" msgid "Year"
msgstr "Jahr" msgstr "Jahr"
#: aleksis/apps/resint/models.py:118 #: aleksis/apps/resint/models.py:121
msgid "PDF" msgid "PDF"
msgstr "PDF" msgstr "PDF"
#: aleksis/apps/resint/models.py:128 #: aleksis/apps/resint/models.py:131
msgid "Poster" msgid "Poster"
msgstr "Dokument" msgstr "Dokument"
#: aleksis/apps/resint/models.py:129 #: aleksis/apps/resint/models.py:132
#: aleksis/apps/resint/templates/resint/poster/list.html:5 #: aleksis/apps/resint/templates/resint/poster/list.html:5
#: aleksis/apps/resint/templates/resint/poster/list.html:8 #: aleksis/apps/resint/templates/resint/poster/list.html:8
msgid "Posters" msgid "Posters"
msgstr "Dokumente" msgstr "Dokumente"
#: aleksis/apps/resint/models.py:155 #: aleksis/apps/resint/models.py:160
msgid "Slug" msgid "Slug"
msgstr "Slug" msgstr "Slug"
#: aleksis/apps/resint/models.py:156 #: aleksis/apps/resint/models.py:161
msgid "This will be used for the name of the current PDF file." 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." msgstr "Dies wird für den Namen der aktuellen PDF-Datei benutzt werden."
#: aleksis/apps/resint/models.py:164 #: aleksis/apps/resint/models.py:168
msgid "Current file" msgid "Current file"
msgstr "Aktuelle Datei" msgstr "Aktuelle Datei"
#: aleksis/apps/resint/models.py:168 #: aleksis/apps/resint/models.py:172
msgid "Was the last update triggered manually?" msgid "Was the last update triggered manually?"
msgstr "Wurde die letzte Aktualisierung manuell ausgelöst?" msgstr "Wurde die letzte Aktualisierung manuell ausgelöst?"
#: aleksis/apps/resint/models.py:218 #: aleksis/apps/resint/models.py:236
msgid "Live document" msgid "Live document"
msgstr "Live-Dokument" msgstr "Live-Dokument"
#: aleksis/apps/resint/tables.py:20 #: aleksis/apps/resint/tables.py:20 aleksis/apps/resint/tables.py:22
#: aleksis/apps/resint/templates/resint/group/list.html:49 #: aleksis/apps/resint/templates/resint/group/list.html:49
#: aleksis/apps/resint/templates/resint/poster/list.html:81 #: aleksis/apps/resint/templates/resint/poster/list.html:81
msgid "Edit" msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
#: aleksis/apps/resint/tables.py:22 aleksis/apps/resint/tables.py:29 #: aleksis/apps/resint/tables.py:27 aleksis/apps/resint/tables.py:29
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr "Aktionen"
#: aleksis/apps/resint/tables.py:27
#: aleksis/apps/resint/templates/resint/group/list.html:58 #: aleksis/apps/resint/templates/resint/group/list.html:58
#: aleksis/apps/resint/templates/resint/poster/list.html:87 #: aleksis/apps/resint/templates/resint/poster/list.html:87
msgid "Delete" msgid "Delete"
...@@ -187,6 +180,11 @@ msgstr "Tag der Veröffentlichung" ...@@ -187,6 +180,11 @@ msgstr "Tag der Veröffentlichung"
msgid "Default PDF file" msgid "Default PDF file"
msgstr "Standard-PDF-Datei" msgstr "Standard-PDF-Datei"
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr "Aktionen"
#: aleksis/apps/resint/templates/resint/group/list.html:40 #: aleksis/apps/resint/templates/resint/group/list.html:40
msgid "Open" msgid "Open"
msgstr "Öffnen" msgstr "Öffnen"
...@@ -207,15 +205,20 @@ msgstr "%(document)s erstellen" ...@@ -207,15 +205,20 @@ msgstr "%(document)s erstellen"
msgid "Edit %(document)s" msgid "Edit %(document)s"
msgstr "%(document)s bearbeiten" msgstr "%(document)s bearbeiten"
#: aleksis/apps/resint/templates/resint/live_document/list.html:14 #: aleksis/apps/resint/templates/resint/live_document/list.html:15
msgid "Create live document" msgid "Create live document"
msgstr "Live-Dokument erstellen" msgstr "Live-Dokument erstellen"
#: aleksis/apps/resint/templates/resint/live_document/list.html:22 #: aleksis/apps/resint/templates/resint/live_document/list.html:23
#, python-format #, python-format
msgid "Create %(name)s" msgid "Create %(name)s"
msgstr "%(name)s erstellen" msgstr "%(name)s erstellen"
#: aleksis/apps/resint/templates/resint/live_document/list.html:31
msgid "There is no app installed which registers any live document types."
msgstr ""
"Es ist keine App installiert, die irgendeinen Live-Dokument-Typ registriert."
#: aleksis/apps/resint/templates/resint/poster/edit.html:5 #: aleksis/apps/resint/templates/resint/poster/edit.html:5
#: aleksis/apps/resint/templates/resint/poster/edit.html:8 #: aleksis/apps/resint/templates/resint/poster/edit.html:8
msgid "Edit poster" msgid "Edit poster"
......
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n" "POT-Creation-Date: 2022-01-12 16:31+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -26,135 +26,129 @@ msgstr "" ...@@ -26,135 +26,129 @@ msgstr ""
msgid "Documents" msgid "Documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:46 #: aleksis/apps/resint/menus.py:49
msgid "Manage posters" msgid "Manage posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:57 aleksis/apps/resint/models.py:42 #: aleksis/apps/resint/menus.py:60 aleksis/apps/resint/models.py:45
#: aleksis/apps/resint/templates/resint/group/list.html:4 #: aleksis/apps/resint/templates/resint/group/list.html:4
#: aleksis/apps/resint/templates/resint/group/list.html:14 #: aleksis/apps/resint/templates/resint/group/list.html:14
msgid "Poster groups" msgid "Poster groups"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219 #: aleksis/apps/resint/menus.py:71 aleksis/apps/resint/models.py:237
#: aleksis/apps/resint/templates/resint/live_document/list.html:8 #: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9 #: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents" msgid "Live documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:22 #: aleksis/apps/resint/models.py:25
msgid "Slug used in URL name" msgid "Slug used in URL name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:23 #: aleksis/apps/resint/models.py:26
msgid "If you use 'example', the filename will be 'example.pdf'." msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158 #: aleksis/apps/resint/models.py:28 aleksis/apps/resint/models.py:163
#: aleksis/apps/resint/templates/resint/group/list.html:19 #: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:27 #: aleksis/apps/resint/models.py:30
msgid "Publishing weekday" msgid "Publishing weekday"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:29 #: aleksis/apps/resint/models.py:32
#: aleksis/apps/resint/templates/resint/group/list.html:22 #: aleksis/apps/resint/templates/resint/group/list.html:22
msgid "Publishing time" msgid "Publishing time"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:32 #: aleksis/apps/resint/models.py:35
msgid "Default PDF" msgid "Default PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:33 #: aleksis/apps/resint/models.py:36
msgid "This PDF file will be shown if there is no current PDF." msgid "This PDF file will be shown if there is no current PDF."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:37 #: aleksis/apps/resint/models.py:40
msgid "Show in menu" msgid "Show in menu"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:38 #: aleksis/apps/resint/models.py:41
msgid "Show for not logged-in users" msgid "Show for not logged-in users"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:41 aleksis/apps/resint/models.py:107 #: aleksis/apps/resint/models.py:44 aleksis/apps/resint/models.py:110
msgid "Poster group" msgid "Poster group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:48 #: aleksis/apps/resint/models.py:51
msgid "Can view all posters of this group" msgid "Can view all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:49 #: aleksis/apps/resint/models.py:52
msgid "Can upload new posters to this group" msgid "Can upload new posters to this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:50 #: aleksis/apps/resint/models.py:53
msgid "Can change all posters of this group" msgid "Can change all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:51 #: aleksis/apps/resint/models.py:54
msgid "Can delete all posters of this group" msgid "Can delete all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:110 #: aleksis/apps/resint/models.py:113
msgid "Calendar week" msgid "Calendar week"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:115 #: aleksis/apps/resint/models.py:118
msgid "Year" msgid "Year"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:118 #: aleksis/apps/resint/models.py:121
msgid "PDF" msgid "PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:128 #: aleksis/apps/resint/models.py:131
msgid "Poster" msgid "Poster"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:129 #: aleksis/apps/resint/models.py:132
#: aleksis/apps/resint/templates/resint/poster/list.html:5 #: aleksis/apps/resint/templates/resint/poster/list.html:5
#: aleksis/apps/resint/templates/resint/poster/list.html:8 #: aleksis/apps/resint/templates/resint/poster/list.html:8
msgid "Posters" msgid "Posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:155 #: aleksis/apps/resint/models.py:160
msgid "Slug" msgid "Slug"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:156 #: aleksis/apps/resint/models.py:161
msgid "This will be used for the name of the current PDF file." msgid "This will be used for the name of the current PDF file."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:164 #: aleksis/apps/resint/models.py:168
msgid "Current file" msgid "Current file"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:168 #: aleksis/apps/resint/models.py:172
msgid "Was the last update triggered manually?" msgid "Was the last update triggered manually?"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:218 #: aleksis/apps/resint/models.py:236
msgid "Live document" msgid "Live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:20 #: aleksis/apps/resint/tables.py:20 aleksis/apps/resint/tables.py:22
#: aleksis/apps/resint/templates/resint/group/list.html:49 #: aleksis/apps/resint/templates/resint/group/list.html:49
#: aleksis/apps/resint/templates/resint/poster/list.html:81 #: aleksis/apps/resint/templates/resint/poster/list.html:81
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:22 aleksis/apps/resint/tables.py:29 #: aleksis/apps/resint/tables.py:27 aleksis/apps/resint/tables.py:29
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/tables.py:27
#: aleksis/apps/resint/templates/resint/group/list.html:58 #: aleksis/apps/resint/templates/resint/group/list.html:58
#: aleksis/apps/resint/templates/resint/poster/list.html:87 #: aleksis/apps/resint/templates/resint/poster/list.html:87
msgid "Delete" msgid "Delete"
...@@ -186,6 +180,11 @@ msgstr "" ...@@ -186,6 +180,11 @@ msgstr ""
msgid "Default PDF file" msgid "Default PDF file"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:40 #: aleksis/apps/resint/templates/resint/group/list.html:40
msgid "Open" msgid "Open"
msgstr "" msgstr ""
...@@ -206,15 +205,19 @@ msgstr "" ...@@ -206,15 +205,19 @@ msgstr ""
msgid "Edit %(document)s" msgid "Edit %(document)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:14 #: aleksis/apps/resint/templates/resint/live_document/list.html:15
msgid "Create live document" msgid "Create live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:22 #: aleksis/apps/resint/templates/resint/live_document/list.html:23
#, python-format #, python-format
msgid "Create %(name)s" msgid "Create %(name)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:31
msgid "There is no app installed which registers any live document types."
msgstr ""
#: aleksis/apps/resint/templates/resint/poster/edit.html:5 #: aleksis/apps/resint/templates/resint/poster/edit.html:5
#: aleksis/apps/resint/templates/resint/poster/edit.html:8 #: aleksis/apps/resint/templates/resint/poster/edit.html:8
msgid "Edit poster" msgid "Edit poster"
......
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n" "POT-Creation-Date: 2022-01-12 16:31+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -25,135 +25,129 @@ msgstr "" ...@@ -25,135 +25,129 @@ msgstr ""
msgid "Documents" msgid "Documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:46 #: aleksis/apps/resint/menus.py:49
msgid "Manage posters" msgid "Manage posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:57 aleksis/apps/resint/models.py:42 #: aleksis/apps/resint/menus.py:60 aleksis/apps/resint/models.py:45
#: aleksis/apps/resint/templates/resint/group/list.html:4 #: aleksis/apps/resint/templates/resint/group/list.html:4
#: aleksis/apps/resint/templates/resint/group/list.html:14 #: aleksis/apps/resint/templates/resint/group/list.html:14
msgid "Poster groups" msgid "Poster groups"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219 #: aleksis/apps/resint/menus.py:71 aleksis/apps/resint/models.py:237
#: aleksis/apps/resint/templates/resint/live_document/list.html:8 #: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9 #: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents" msgid "Live documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:22 #: aleksis/apps/resint/models.py:25
msgid "Slug used in URL name" msgid "Slug used in URL name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:23 #: aleksis/apps/resint/models.py:26
msgid "If you use 'example', the filename will be 'example.pdf'." msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158 #: aleksis/apps/resint/models.py:28 aleksis/apps/resint/models.py:163
#: aleksis/apps/resint/templates/resint/group/list.html:19 #: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:27 #: aleksis/apps/resint/models.py:30
msgid "Publishing weekday" msgid "Publishing weekday"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:29 #: aleksis/apps/resint/models.py:32
#: aleksis/apps/resint/templates/resint/group/list.html:22 #: aleksis/apps/resint/templates/resint/group/list.html:22
msgid "Publishing time" msgid "Publishing time"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:32 #: aleksis/apps/resint/models.py:35
msgid "Default PDF" msgid "Default PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:33 #: aleksis/apps/resint/models.py:36
msgid "This PDF file will be shown if there is no current PDF." msgid "This PDF file will be shown if there is no current PDF."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:37 #: aleksis/apps/resint/models.py:40
msgid "Show in menu" msgid "Show in menu"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:38 #: aleksis/apps/resint/models.py:41
msgid "Show for not logged-in users" msgid "Show for not logged-in users"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:41 aleksis/apps/resint/models.py:107 #: aleksis/apps/resint/models.py:44 aleksis/apps/resint/models.py:110
msgid "Poster group" msgid "Poster group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:48 #: aleksis/apps/resint/models.py:51
msgid "Can view all posters of this group" msgid "Can view all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:49 #: aleksis/apps/resint/models.py:52
msgid "Can upload new posters to this group" msgid "Can upload new posters to this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:50 #: aleksis/apps/resint/models.py:53
msgid "Can change all posters of this group" msgid "Can change all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:51 #: aleksis/apps/resint/models.py:54
msgid "Can delete all posters of this group" msgid "Can delete all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:110 #: aleksis/apps/resint/models.py:113
msgid "Calendar week" msgid "Calendar week"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:115 #: aleksis/apps/resint/models.py:118
msgid "Year" msgid "Year"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:118 #: aleksis/apps/resint/models.py:121
msgid "PDF" msgid "PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:128 #: aleksis/apps/resint/models.py:131
msgid "Poster" msgid "Poster"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:129 #: aleksis/apps/resint/models.py:132
#: aleksis/apps/resint/templates/resint/poster/list.html:5 #: aleksis/apps/resint/templates/resint/poster/list.html:5
#: aleksis/apps/resint/templates/resint/poster/list.html:8 #: aleksis/apps/resint/templates/resint/poster/list.html:8
msgid "Posters" msgid "Posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:155 #: aleksis/apps/resint/models.py:160
msgid "Slug" msgid "Slug"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:156 #: aleksis/apps/resint/models.py:161
msgid "This will be used for the name of the current PDF file." msgid "This will be used for the name of the current PDF file."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:164 #: aleksis/apps/resint/models.py:168
msgid "Current file" msgid "Current file"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:168 #: aleksis/apps/resint/models.py:172
msgid "Was the last update triggered manually?" msgid "Was the last update triggered manually?"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:218 #: aleksis/apps/resint/models.py:236
msgid "Live document" msgid "Live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:20 #: aleksis/apps/resint/tables.py:20 aleksis/apps/resint/tables.py:22
#: aleksis/apps/resint/templates/resint/group/list.html:49 #: aleksis/apps/resint/templates/resint/group/list.html:49
#: aleksis/apps/resint/templates/resint/poster/list.html:81 #: aleksis/apps/resint/templates/resint/poster/list.html:81
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:22 aleksis/apps/resint/tables.py:29 #: aleksis/apps/resint/tables.py:27 aleksis/apps/resint/tables.py:29
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/tables.py:27
#: aleksis/apps/resint/templates/resint/group/list.html:58 #: aleksis/apps/resint/templates/resint/group/list.html:58
#: aleksis/apps/resint/templates/resint/poster/list.html:87 #: aleksis/apps/resint/templates/resint/poster/list.html:87
msgid "Delete" msgid "Delete"
...@@ -185,6 +179,11 @@ msgstr "" ...@@ -185,6 +179,11 @@ msgstr ""
msgid "Default PDF file" msgid "Default PDF file"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:40 #: aleksis/apps/resint/templates/resint/group/list.html:40
msgid "Open" msgid "Open"
msgstr "" msgstr ""
...@@ -205,15 +204,19 @@ msgstr "" ...@@ -205,15 +204,19 @@ msgstr ""
msgid "Edit %(document)s" msgid "Edit %(document)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:14 #: aleksis/apps/resint/templates/resint/live_document/list.html:15
msgid "Create live document" msgid "Create live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:22 #: aleksis/apps/resint/templates/resint/live_document/list.html:23
#, python-format #, python-format
msgid "Create %(name)s" msgid "Create %(name)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:31
msgid "There is no app installed which registers any live document types."
msgstr ""
#: aleksis/apps/resint/templates/resint/poster/edit.html:5 #: aleksis/apps/resint/templates/resint/poster/edit.html:5
#: aleksis/apps/resint/templates/resint/poster/edit.html:8 #: aleksis/apps/resint/templates/resint/poster/edit.html:8
msgid "Edit poster" msgid "Edit poster"
......
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n" "POT-Creation-Date: 2022-01-12 16:31+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -25,135 +25,129 @@ msgstr "" ...@@ -25,135 +25,129 @@ msgstr ""
msgid "Documents" msgid "Documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:46 #: aleksis/apps/resint/menus.py:49
msgid "Manage posters" msgid "Manage posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:57 aleksis/apps/resint/models.py:42 #: aleksis/apps/resint/menus.py:60 aleksis/apps/resint/models.py:45
#: aleksis/apps/resint/templates/resint/group/list.html:4 #: aleksis/apps/resint/templates/resint/group/list.html:4
#: aleksis/apps/resint/templates/resint/group/list.html:14 #: aleksis/apps/resint/templates/resint/group/list.html:14
msgid "Poster groups" msgid "Poster groups"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219 #: aleksis/apps/resint/menus.py:71 aleksis/apps/resint/models.py:237
#: aleksis/apps/resint/templates/resint/live_document/list.html:8 #: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9 #: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents" msgid "Live documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:22 #: aleksis/apps/resint/models.py:25
msgid "Slug used in URL name" msgid "Slug used in URL name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:23 #: aleksis/apps/resint/models.py:26
msgid "If you use 'example', the filename will be 'example.pdf'." msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158 #: aleksis/apps/resint/models.py:28 aleksis/apps/resint/models.py:163
#: aleksis/apps/resint/templates/resint/group/list.html:19 #: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:27 #: aleksis/apps/resint/models.py:30
msgid "Publishing weekday" msgid "Publishing weekday"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:29 #: aleksis/apps/resint/models.py:32
#: aleksis/apps/resint/templates/resint/group/list.html:22 #: aleksis/apps/resint/templates/resint/group/list.html:22
msgid "Publishing time" msgid "Publishing time"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:32 #: aleksis/apps/resint/models.py:35
msgid "Default PDF" msgid "Default PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:33 #: aleksis/apps/resint/models.py:36
msgid "This PDF file will be shown if there is no current PDF." msgid "This PDF file will be shown if there is no current PDF."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:37 #: aleksis/apps/resint/models.py:40
msgid "Show in menu" msgid "Show in menu"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:38 #: aleksis/apps/resint/models.py:41
msgid "Show for not logged-in users" msgid "Show for not logged-in users"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:41 aleksis/apps/resint/models.py:107 #: aleksis/apps/resint/models.py:44 aleksis/apps/resint/models.py:110
msgid "Poster group" msgid "Poster group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:48 #: aleksis/apps/resint/models.py:51
msgid "Can view all posters of this group" msgid "Can view all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:49 #: aleksis/apps/resint/models.py:52
msgid "Can upload new posters to this group" msgid "Can upload new posters to this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:50 #: aleksis/apps/resint/models.py:53
msgid "Can change all posters of this group" msgid "Can change all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:51 #: aleksis/apps/resint/models.py:54
msgid "Can delete all posters of this group" msgid "Can delete all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:110 #: aleksis/apps/resint/models.py:113
msgid "Calendar week" msgid "Calendar week"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:115 #: aleksis/apps/resint/models.py:118
msgid "Year" msgid "Year"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:118 #: aleksis/apps/resint/models.py:121
msgid "PDF" msgid "PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:128 #: aleksis/apps/resint/models.py:131
msgid "Poster" msgid "Poster"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:129 #: aleksis/apps/resint/models.py:132
#: aleksis/apps/resint/templates/resint/poster/list.html:5 #: aleksis/apps/resint/templates/resint/poster/list.html:5
#: aleksis/apps/resint/templates/resint/poster/list.html:8 #: aleksis/apps/resint/templates/resint/poster/list.html:8
msgid "Posters" msgid "Posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:155 #: aleksis/apps/resint/models.py:160
msgid "Slug" msgid "Slug"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:156 #: aleksis/apps/resint/models.py:161
msgid "This will be used for the name of the current PDF file." msgid "This will be used for the name of the current PDF file."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:164 #: aleksis/apps/resint/models.py:168
msgid "Current file" msgid "Current file"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:168 #: aleksis/apps/resint/models.py:172
msgid "Was the last update triggered manually?" msgid "Was the last update triggered manually?"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:218 #: aleksis/apps/resint/models.py:236
msgid "Live document" msgid "Live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:20 #: aleksis/apps/resint/tables.py:20 aleksis/apps/resint/tables.py:22
#: aleksis/apps/resint/templates/resint/group/list.html:49 #: aleksis/apps/resint/templates/resint/group/list.html:49
#: aleksis/apps/resint/templates/resint/poster/list.html:81 #: aleksis/apps/resint/templates/resint/poster/list.html:81
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:22 aleksis/apps/resint/tables.py:29 #: aleksis/apps/resint/tables.py:27 aleksis/apps/resint/tables.py:29
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/tables.py:27
#: aleksis/apps/resint/templates/resint/group/list.html:58 #: aleksis/apps/resint/templates/resint/group/list.html:58
#: aleksis/apps/resint/templates/resint/poster/list.html:87 #: aleksis/apps/resint/templates/resint/poster/list.html:87
msgid "Delete" msgid "Delete"
...@@ -185,6 +179,11 @@ msgstr "" ...@@ -185,6 +179,11 @@ msgstr ""
msgid "Default PDF file" msgid "Default PDF file"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:40 #: aleksis/apps/resint/templates/resint/group/list.html:40
msgid "Open" msgid "Open"
msgstr "" msgstr ""
...@@ -205,15 +204,19 @@ msgstr "" ...@@ -205,15 +204,19 @@ msgstr ""
msgid "Edit %(document)s" msgid "Edit %(document)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:14 #: aleksis/apps/resint/templates/resint/live_document/list.html:15
msgid "Create live document" msgid "Create live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:22 #: aleksis/apps/resint/templates/resint/live_document/list.html:23
#, python-format #, python-format
msgid "Create %(name)s" msgid "Create %(name)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:31
msgid "There is no app installed which registers any live document types."
msgstr ""
#: aleksis/apps/resint/templates/resint/poster/edit.html:5 #: aleksis/apps/resint/templates/resint/poster/edit.html:5
#: aleksis/apps/resint/templates/resint/poster/edit.html:8 #: aleksis/apps/resint/templates/resint/poster/edit.html:8
msgid "Edit poster" msgid "Edit poster"
......
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-23 12:52+0000\n"
"PO-Revision-Date: 2023-05-26 04:38+0000\n"
"Last-Translator: Serhii Horichenko <m@sgg.im>\n"
"Language-Team: Russian <https://translate.edugit.org/projects/aleksis/aleksis-app-resint/ru/>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
"X-Generator: Weblate 4.12.1\n"
#: aleksis/apps/resint/apps.py:27
msgid "Access PDF file for live document"
msgstr "Доступ PDF файла для онлайн-документа"
#: aleksis/apps/resint/menus.py:37
msgid "Documents"
msgstr "Документы"
#: aleksis/apps/resint/menus.py:49
msgid "Manage posters"
msgstr "Управление документами"
#: aleksis/apps/resint/menus.py:60 aleksis/apps/resint/models.py:45
#: aleksis/apps/resint/templates/resint/group/list.html:4
#: aleksis/apps/resint/templates/resint/group/list.html:14
msgid "Poster groups"
msgstr "Группы документов"
#: aleksis/apps/resint/menus.py:71 aleksis/apps/resint/models.py:237
#: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents"
msgstr "Онлайн-документы"
#: aleksis/apps/resint/models.py:25
msgid "Slug used in URL name"
msgstr "Хвост (slug) в URL-адресе"
#: aleksis/apps/resint/models.py:26
msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr "При использовании 'пример' имя файла будет 'пример.pdf'."
#: aleksis/apps/resint/models.py:28 aleksis/apps/resint/models.py:163
#: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name"
msgstr "Полное имя"
#: aleksis/apps/resint/models.py:30
msgid "Publishing weekday"
msgstr "День недели публикации"
#: aleksis/apps/resint/models.py:32
#: aleksis/apps/resint/templates/resint/group/list.html:22
msgid "Publishing time"
msgstr "Время публикации"
#: aleksis/apps/resint/models.py:35
msgid "Default PDF"
msgstr "Типовой PDF"
#: aleksis/apps/resint/models.py:36
msgid "This PDF file will be shown if there is no current PDF."
msgstr "Этот файл PDF будет отображаться, если нет актуального PDF."
#: aleksis/apps/resint/models.py:40
msgid "Show in menu"
msgstr "Показать в меню"
#: aleksis/apps/resint/models.py:41
msgid "Show for not logged-in users"
msgstr "Отображать для анонимных пользователей"
#: aleksis/apps/resint/models.py:44 aleksis/apps/resint/models.py:110
msgid "Poster group"
msgstr "Группа документов"
#: aleksis/apps/resint/models.py:51
msgid "Can view all posters of this group"
msgstr "Может просматривать все документы этой группы"
#: aleksis/apps/resint/models.py:52
msgid "Can upload new posters to this group"
msgstr "Может загружать новые документы в эту группу"
#: aleksis/apps/resint/models.py:53
msgid "Can change all posters of this group"
msgstr "Может редактировать все документы этой группы"
#: aleksis/apps/resint/models.py:54
msgid "Can delete all posters of this group"
msgstr "Может удалять все документы этой группы"
#: aleksis/apps/resint/models.py:113
msgid "Calendar week"
msgstr "Календарная неделя"
#: aleksis/apps/resint/models.py:118
msgid "Year"
msgstr "Год"
#: aleksis/apps/resint/models.py:121
msgid "PDF"
msgstr "PDF"
#: aleksis/apps/resint/models.py:131
msgid "Poster"
msgstr "Документ"
#: aleksis/apps/resint/models.py:132
#: aleksis/apps/resint/templates/resint/poster/list.html:5
#: aleksis/apps/resint/templates/resint/poster/list.html:8
msgid "Posters"
msgstr "Документы"
#: aleksis/apps/resint/models.py:160
msgid "Slug"
msgstr "Хвост в ссылке (slug)"
#: aleksis/apps/resint/models.py:161
msgid "This will be used for the name of the current PDF file."
msgstr "Это будет использовано для названия текущего файла PDF."
#: aleksis/apps/resint/models.py:168
msgid "Current file"
msgstr "Текущий файл"
#: aleksis/apps/resint/models.py:172
msgid "Was the last update triggered manually?"
msgstr "Последнее обновление запущено вручную?"
#: aleksis/apps/resint/models.py:236
msgid "Live document"
msgstr "Онлайн-документ"
#: aleksis/apps/resint/tables.py:20 aleksis/apps/resint/tables.py:22
#: aleksis/apps/resint/templates/resint/group/list.html:49
#: aleksis/apps/resint/templates/resint/poster/list.html:81
msgid "Edit"
msgstr "Редактировать"
#: aleksis/apps/resint/tables.py:27 aleksis/apps/resint/tables.py:29
#: aleksis/apps/resint/templates/resint/group/list.html:58
#: aleksis/apps/resint/templates/resint/poster/list.html:87
msgid "Delete"
msgstr "Удалить"
#: aleksis/apps/resint/templates/resint/group/create.html:5
#: aleksis/apps/resint/templates/resint/group/create.html:8
msgid "Create poster group"
msgstr "Создать группу документов"
#: aleksis/apps/resint/templates/resint/group/edit.html:5
#: aleksis/apps/resint/templates/resint/group/edit.html:8
msgid "Edit poster group"
msgstr "Редактировать группу документов"
#: aleksis/apps/resint/templates/resint/group/list.html:10
msgid "Create new poster group"
msgstr "Создать новую группу документов"
#: aleksis/apps/resint/templates/resint/group/list.html:20
msgid "Filename"
msgstr "Название файла"
#: aleksis/apps/resint/templates/resint/group/list.html:21
msgid "Publishing day"
msgstr "День публикации"
#: aleksis/apps/resint/templates/resint/group/list.html:23
msgid "Default PDF file"
msgstr "Типовой файл PDF"
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr "Действия"
#: aleksis/apps/resint/templates/resint/group/list.html:40
msgid "Open"
msgstr "Открыть"
#: aleksis/apps/resint/templates/resint/group/list.html:65
msgid "There are no poster groups available."
msgstr "Нет доступных групп документов."
#: aleksis/apps/resint/templates/resint/live_document/create.html:8
#: aleksis/apps/resint/templates/resint/live_document/create.html:12
#, python-format
msgid "Create %(document)s"
msgstr "Создать %(document)s"
#: aleksis/apps/resint/templates/resint/live_document/edit.html:8
#: aleksis/apps/resint/templates/resint/live_document/edit.html:12
#, python-format
msgid "Edit %(document)s"
msgstr "Редактировать %(document)s"
#: aleksis/apps/resint/templates/resint/live_document/list.html:15
msgid "Create live document"
msgstr "Создать онлайн-документ"
#: aleksis/apps/resint/templates/resint/live_document/list.html:23
#, python-format
msgid "Create %(name)s"
msgstr "Создать %(name)s"
#: aleksis/apps/resint/templates/resint/live_document/list.html:31
msgid "There is no app installed which registers any live document types."
msgstr ""
"Приложения для регистрации каких-либо типов онлайн-документов не установлены."
#: aleksis/apps/resint/templates/resint/poster/edit.html:5
#: aleksis/apps/resint/templates/resint/poster/edit.html:8
msgid "Edit poster"
msgstr "Редактировать документ"
#: aleksis/apps/resint/templates/resint/poster/list.html:23
#, python-format
msgid ""
"\n"
" Week %(week)s/%(year)s\n"
" "
msgstr ""
"\n"
" Неделя %(week)s/%(year)s\n"
" "
#: aleksis/apps/resint/templates/resint/poster/list.html:35
msgid "There is no poster for this week."
msgstr "На этой неделе документов нет."
#: aleksis/apps/resint/templates/resint/poster/list.html:42
msgid "Show current PDF"
msgstr "Показать текущий PDF"
#: aleksis/apps/resint/templates/resint/poster/list.html:54
msgid "Upload new poster"
msgstr "Загрузить новый документ"
#: aleksis/apps/resint/templates/resint/poster/list.html:58
msgid "All uploaded posters"
msgstr "Все загруженные документы"
#: aleksis/apps/resint/templates/resint/poster/list.html:62
msgid "Group"
msgstr "Группа"
#: aleksis/apps/resint/templates/resint/poster/list.html:63
msgid "Week"
msgstr "Неделя"
#: aleksis/apps/resint/templates/resint/poster/list.html:64
msgid "Valid from ... to"
msgstr "Действует с ... по"
#: aleksis/apps/resint/templates/resint/poster/list.html:75
msgid "Show"
msgstr "Показать"
#: aleksis/apps/resint/templates/resint/poster/upload.html:5
#: aleksis/apps/resint/templates/resint/poster/upload.html:8
#: aleksis/apps/resint/templates/resint/poster/upload.html:16
msgid "Upload poster"
msgstr "Загрузить документ"
#: 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:71
msgid "The poster group has been deleted."
msgstr "Группа документов удалена."
#: aleksis/apps/resint/views.py:114
msgid "The poster has been uploaded."
msgstr "Документ загружен."
#: aleksis/apps/resint/views.py:125
msgid "The poster has been changed."
msgstr "Документ изменён."
#: aleksis/apps/resint/views.py:135
msgid "The poster has been deleted."
msgstr "Документ удалён."
#: aleksis/apps/resint/views.py:197
msgid "The live document has been created."
msgstr "Онлайн-документ создан."
#: aleksis/apps/resint/views.py:212
msgid "The live document has been saved."
msgstr "Онлайн-документ сохранён."
#: aleksis/apps/resint/views.py:223
msgid "The live document has been deleted."
msgstr "Онлайн-документ удалён."
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-07 11:59+0100\n" "POT-Creation-Date: 2022-01-12 16:31+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -25,135 +25,129 @@ msgstr "" ...@@ -25,135 +25,129 @@ msgstr ""
msgid "Documents" msgid "Documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:46 #: aleksis/apps/resint/menus.py:49
msgid "Manage posters" msgid "Manage posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:57 aleksis/apps/resint/models.py:42 #: aleksis/apps/resint/menus.py:60 aleksis/apps/resint/models.py:45
#: aleksis/apps/resint/templates/resint/group/list.html:4 #: aleksis/apps/resint/templates/resint/group/list.html:4
#: aleksis/apps/resint/templates/resint/group/list.html:14 #: aleksis/apps/resint/templates/resint/group/list.html:14
msgid "Poster groups" msgid "Poster groups"
msgstr "" msgstr ""
#: aleksis/apps/resint/menus.py:68 aleksis/apps/resint/models.py:219 #: aleksis/apps/resint/menus.py:71 aleksis/apps/resint/models.py:237
#: aleksis/apps/resint/templates/resint/live_document/list.html:8 #: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9 #: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents" msgid "Live documents"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:22 #: aleksis/apps/resint/models.py:25
msgid "Slug used in URL name" msgid "Slug used in URL name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:23 #: aleksis/apps/resint/models.py:26
msgid "If you use 'example', the filename will be 'example.pdf'." msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:25 aleksis/apps/resint/models.py:158 #: aleksis/apps/resint/models.py:28 aleksis/apps/resint/models.py:163
#: aleksis/apps/resint/templates/resint/group/list.html:19 #: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:27 #: aleksis/apps/resint/models.py:30
msgid "Publishing weekday" msgid "Publishing weekday"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:29 #: aleksis/apps/resint/models.py:32
#: aleksis/apps/resint/templates/resint/group/list.html:22 #: aleksis/apps/resint/templates/resint/group/list.html:22
msgid "Publishing time" msgid "Publishing time"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:32 #: aleksis/apps/resint/models.py:35
msgid "Default PDF" msgid "Default PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:33 #: aleksis/apps/resint/models.py:36
msgid "This PDF file will be shown if there is no current PDF." msgid "This PDF file will be shown if there is no current PDF."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:37 #: aleksis/apps/resint/models.py:40
msgid "Show in menu" msgid "Show in menu"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:38 #: aleksis/apps/resint/models.py:41
msgid "Show for not logged-in users" msgid "Show for not logged-in users"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:41 aleksis/apps/resint/models.py:107 #: aleksis/apps/resint/models.py:44 aleksis/apps/resint/models.py:110
msgid "Poster group" msgid "Poster group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:48 #: aleksis/apps/resint/models.py:51
msgid "Can view all posters of this group" msgid "Can view all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:49 #: aleksis/apps/resint/models.py:52
msgid "Can upload new posters to this group" msgid "Can upload new posters to this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:50 #: aleksis/apps/resint/models.py:53
msgid "Can change all posters of this group" msgid "Can change all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:51 #: aleksis/apps/resint/models.py:54
msgid "Can delete all posters of this group" msgid "Can delete all posters of this group"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:110 #: aleksis/apps/resint/models.py:113
msgid "Calendar week" msgid "Calendar week"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:115 #: aleksis/apps/resint/models.py:118
msgid "Year" msgid "Year"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:118 #: aleksis/apps/resint/models.py:121
msgid "PDF" msgid "PDF"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:128 #: aleksis/apps/resint/models.py:131
msgid "Poster" msgid "Poster"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:129 #: aleksis/apps/resint/models.py:132
#: aleksis/apps/resint/templates/resint/poster/list.html:5 #: aleksis/apps/resint/templates/resint/poster/list.html:5
#: aleksis/apps/resint/templates/resint/poster/list.html:8 #: aleksis/apps/resint/templates/resint/poster/list.html:8
msgid "Posters" msgid "Posters"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:155 #: aleksis/apps/resint/models.py:160
msgid "Slug" msgid "Slug"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:156 #: aleksis/apps/resint/models.py:161
msgid "This will be used for the name of the current PDF file." msgid "This will be used for the name of the current PDF file."
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:164 #: aleksis/apps/resint/models.py:168
msgid "Current file" msgid "Current file"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:168 #: aleksis/apps/resint/models.py:172
msgid "Was the last update triggered manually?" msgid "Was the last update triggered manually?"
msgstr "" msgstr ""
#: aleksis/apps/resint/models.py:218 #: aleksis/apps/resint/models.py:236
msgid "Live document" msgid "Live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:20 #: aleksis/apps/resint/tables.py:20 aleksis/apps/resint/tables.py:22
#: aleksis/apps/resint/templates/resint/group/list.html:49 #: aleksis/apps/resint/templates/resint/group/list.html:49
#: aleksis/apps/resint/templates/resint/poster/list.html:81 #: aleksis/apps/resint/templates/resint/poster/list.html:81
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: aleksis/apps/resint/tables.py:22 aleksis/apps/resint/tables.py:29 #: aleksis/apps/resint/tables.py:27 aleksis/apps/resint/tables.py:29
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/tables.py:27
#: aleksis/apps/resint/templates/resint/group/list.html:58 #: aleksis/apps/resint/templates/resint/group/list.html:58
#: aleksis/apps/resint/templates/resint/poster/list.html:87 #: aleksis/apps/resint/templates/resint/poster/list.html:87
msgid "Delete" msgid "Delete"
...@@ -185,6 +179,11 @@ msgstr "" ...@@ -185,6 +179,11 @@ msgstr ""
msgid "Default PDF file" msgid "Default PDF file"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr ""
#: aleksis/apps/resint/templates/resint/group/list.html:40 #: aleksis/apps/resint/templates/resint/group/list.html:40
msgid "Open" msgid "Open"
msgstr "" msgstr ""
...@@ -205,15 +204,19 @@ msgstr "" ...@@ -205,15 +204,19 @@ msgstr ""
msgid "Edit %(document)s" msgid "Edit %(document)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:14 #: aleksis/apps/resint/templates/resint/live_document/list.html:15
msgid "Create live document" msgid "Create live document"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:22 #: aleksis/apps/resint/templates/resint/live_document/list.html:23
#, python-format #, python-format
msgid "Create %(name)s" msgid "Create %(name)s"
msgstr "" msgstr ""
#: aleksis/apps/resint/templates/resint/live_document/list.html:31
msgid "There is no app installed which registers any live document types."
msgstr ""
#: aleksis/apps/resint/templates/resint/poster/edit.html:5 #: aleksis/apps/resint/templates/resint/poster/edit.html:5
#: aleksis/apps/resint/templates/resint/poster/edit.html:8 #: aleksis/apps/resint/templates/resint/poster/edit.html:8
msgid "Edit poster" msgid "Edit poster"
......
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-23 12:52+0000\n"
"PO-Revision-Date: 2024-08-28 20:01+0000\n"
"Last-Translator: Serhii Horichenko <m@sgg.im>\n"
"Language-Team: Ukrainian <https://translate.edugit.org/projects/aleksis/aleksis-app-resint/uk/>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
"X-Generator: Weblate 5.0.2\n"
#: aleksis/apps/resint/apps.py:27
msgid "Access PDF file for live document"
msgstr "Доступ PDF файлу для онлайн-документа"
#: aleksis/apps/resint/menus.py:37
msgid "Documents"
msgstr "Документи"
#: aleksis/apps/resint/menus.py:49
msgid "Manage posters"
msgstr "Керування документами"
#: aleksis/apps/resint/menus.py:60 aleksis/apps/resint/models.py:45
#: aleksis/apps/resint/templates/resint/group/list.html:4
#: aleksis/apps/resint/templates/resint/group/list.html:14
msgid "Poster groups"
msgstr "Групи документів"
#: aleksis/apps/resint/menus.py:71 aleksis/apps/resint/models.py:237
#: aleksis/apps/resint/templates/resint/live_document/list.html:8
#: aleksis/apps/resint/templates/resint/live_document/list.html:9
msgid "Live documents"
msgstr "Онлайн-документи"
#: aleksis/apps/resint/models.py:25
msgid "Slug used in URL name"
msgstr "Закінчення (slug) в URL-адресі"
#: aleksis/apps/resint/models.py:26
msgid "If you use 'example', the filename will be 'example.pdf'."
msgstr "При використанні 'приклад' ім'я файлу буде 'приклад.pdf'."
#: aleksis/apps/resint/models.py:28 aleksis/apps/resint/models.py:163
#: aleksis/apps/resint/templates/resint/group/list.html:19
msgid "Name"
msgstr "Повне ім'я"
#: aleksis/apps/resint/models.py:30
msgid "Publishing weekday"
msgstr "День тижня публікації"
#: aleksis/apps/resint/models.py:32
#: aleksis/apps/resint/templates/resint/group/list.html:22
msgid "Publishing time"
msgstr "Час публікації"
#: aleksis/apps/resint/models.py:35
msgid "Default PDF"
msgstr "Типовий PDF"
#: aleksis/apps/resint/models.py:36
msgid "This PDF file will be shown if there is no current PDF."
msgstr "Цей файл PDF буде відображатися, якщо немає актуального PDF."
#: aleksis/apps/resint/models.py:40
msgid "Show in menu"
msgstr "Показати в меню"
#: aleksis/apps/resint/models.py:41
msgid "Show for not logged-in users"
msgstr "Відображати для користувачів, які не увійши"
#: aleksis/apps/resint/models.py:44 aleksis/apps/resint/models.py:110
msgid "Poster group"
msgstr "Група документів"
#: aleksis/apps/resint/models.py:51
msgid "Can view all posters of this group"
msgstr "Може бачити усі документи цієї групи"
#: aleksis/apps/resint/models.py:52
msgid "Can upload new posters to this group"
msgstr "Може завантажувати нові документи до цієї групи"
#: aleksis/apps/resint/models.py:53
msgid "Can change all posters of this group"
msgstr "Може змінювати усі документи цієї групи"
#: aleksis/apps/resint/models.py:54
msgid "Can delete all posters of this group"
msgstr "Може видаляти усі документи цієї групи"
#: aleksis/apps/resint/models.py:113
msgid "Calendar week"
msgstr "Календарний тиждень"
#: aleksis/apps/resint/models.py:118
msgid "Year"
msgstr "Рік"
#: aleksis/apps/resint/models.py:121
msgid "PDF"
msgstr "PDF"
#: aleksis/apps/resint/models.py:131
msgid "Poster"
msgstr "Документ"
#: aleksis/apps/resint/models.py:132
#: aleksis/apps/resint/templates/resint/poster/list.html:5
#: aleksis/apps/resint/templates/resint/poster/list.html:8
msgid "Posters"
msgstr "Документи"
#: aleksis/apps/resint/models.py:160
msgid "Slug"
msgstr "Мітка"
#: aleksis/apps/resint/models.py:161
msgid "This will be used for the name of the current PDF file."
msgstr "Це буде використовуватися для назви поточного PDF-файлу."
#: aleksis/apps/resint/models.py:168
msgid "Current file"
msgstr "Поточний файл"
#: aleksis/apps/resint/models.py:172
msgid "Was the last update triggered manually?"
msgstr "Останнє оновлення було запущене вручну?"
#: aleksis/apps/resint/models.py:236
msgid "Live document"
msgstr "Онлайн-документ"
#: aleksis/apps/resint/tables.py:20 aleksis/apps/resint/tables.py:22
#: aleksis/apps/resint/templates/resint/group/list.html:49
#: aleksis/apps/resint/templates/resint/poster/list.html:81
msgid "Edit"
msgstr "Редагувати"
#: aleksis/apps/resint/tables.py:27 aleksis/apps/resint/tables.py:29
#: aleksis/apps/resint/templates/resint/group/list.html:58
#: aleksis/apps/resint/templates/resint/poster/list.html:87
msgid "Delete"
msgstr "Видалити"
#: aleksis/apps/resint/templates/resint/group/create.html:5
#: aleksis/apps/resint/templates/resint/group/create.html:8
msgid "Create poster group"
msgstr "Створити групу документів"
#: aleksis/apps/resint/templates/resint/group/edit.html:5
#: aleksis/apps/resint/templates/resint/group/edit.html:8
msgid "Edit poster group"
msgstr "Редагувати групу документів"
#: aleksis/apps/resint/templates/resint/group/list.html:10
msgid "Create new poster group"
msgstr "Створити нову групу документів"
#: aleksis/apps/resint/templates/resint/group/list.html:20
msgid "Filename"
msgstr "Назва файлу"
#: aleksis/apps/resint/templates/resint/group/list.html:21
msgid "Publishing day"
msgstr "День публікації"
#: aleksis/apps/resint/templates/resint/group/list.html:23
msgid "Default PDF file"
msgstr "Типовий файл PDF"
#: aleksis/apps/resint/templates/resint/group/list.html:24
#: aleksis/apps/resint/templates/resint/poster/list.html:65
msgid "Actions"
msgstr "Дії"
#: aleksis/apps/resint/templates/resint/group/list.html:40
msgid "Open"
msgstr "Відкрити"
#: aleksis/apps/resint/templates/resint/group/list.html:65
msgid "There are no poster groups available."
msgstr "Немає доступних груп документів."
#: aleksis/apps/resint/templates/resint/live_document/create.html:8
#: aleksis/apps/resint/templates/resint/live_document/create.html:12
#, python-format
msgid "Create %(document)s"
msgstr "Створити %(document)s"
#: aleksis/apps/resint/templates/resint/live_document/edit.html:8
#: aleksis/apps/resint/templates/resint/live_document/edit.html:12
#, python-format
msgid "Edit %(document)s"
msgstr "Редагувати %(document)s"
#: aleksis/apps/resint/templates/resint/live_document/list.html:15
msgid "Create live document"
msgstr "Створити онлайн-документ"
#: aleksis/apps/resint/templates/resint/live_document/list.html:23
#, python-format
msgid "Create %(name)s"
msgstr "Створити %(name)s"
#: aleksis/apps/resint/templates/resint/live_document/list.html:31
msgid "There is no app installed which registers any live document types."
msgstr ""
"Не встановлена програма для реєстрації бодай якогось типу онлайн документів."
#: aleksis/apps/resint/templates/resint/poster/edit.html:5
#: aleksis/apps/resint/templates/resint/poster/edit.html:8
msgid "Edit poster"
msgstr "Редагувати документ"
#: aleksis/apps/resint/templates/resint/poster/list.html:23
#, python-format
msgid ""
"\n"
" Week %(week)s/%(year)s\n"
" "
msgstr ""
"\n"
" Тиждень %(week)s/%(year)s\n"
" "
#: aleksis/apps/resint/templates/resint/poster/list.html:35
msgid "There is no poster for this week."
msgstr "На цьому тижні документів немає."
#: aleksis/apps/resint/templates/resint/poster/list.html:42
msgid "Show current PDF"
msgstr "Показати поточний PDF"
#: aleksis/apps/resint/templates/resint/poster/list.html:54
msgid "Upload new poster"
msgstr "Завантажити новий документ"
#: aleksis/apps/resint/templates/resint/poster/list.html:58
msgid "All uploaded posters"
msgstr "Усі завантажені документи"
#: aleksis/apps/resint/templates/resint/poster/list.html:62
msgid "Group"
msgstr "Група"
#: aleksis/apps/resint/templates/resint/poster/list.html:63
msgid "Week"
msgstr "Тиждень"
#: aleksis/apps/resint/templates/resint/poster/list.html:64
msgid "Valid from ... to"
msgstr "Дійсний з ... по"
#: aleksis/apps/resint/templates/resint/poster/list.html:75
msgid "Show"
msgstr "Показати"
#: aleksis/apps/resint/templates/resint/poster/upload.html:5
#: aleksis/apps/resint/templates/resint/poster/upload.html:8
#: aleksis/apps/resint/templates/resint/poster/upload.html:16
msgid "Upload poster"
msgstr "Завантажити документ"
#: 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:71
msgid "The poster group has been deleted."
msgstr "Група документів видалена."
#: aleksis/apps/resint/views.py:114
msgid "The poster has been uploaded."
msgstr "Документ завантажений."
#: aleksis/apps/resint/views.py:125
msgid "The poster has been changed."
msgstr "Документ змінений."
#: aleksis/apps/resint/views.py:135
msgid "The poster has been deleted."
msgstr "Документ видалений."
#: aleksis/apps/resint/views.py:197
msgid "The live document has been created."
msgstr "Онлайн-документ створений."
#: aleksis/apps/resint/views.py:212
msgid "The live document has been saved."
msgstr "Онлайн-документ збережений."
#: aleksis/apps/resint/views.py:223
msgid "The live document has been deleted."
msgstr "Онлайн-документ видалений."
from typing import Any, Dict, List
from django.apps import apps
from django.urls import reverse
from django.utils.functional import lazy
from django.utils.translation import ugettext_lazy as _
def _get_menu_entries() -> List[Dict[str, Any]]:
"""Build menu entries for all poster groups.
This will include only poster groups where ``show_in_menu`` is enabled.
"""
PosterGroup = apps.get_model("resint", "PosterGroup")
return [
{
"name": group.name,
"url": reverse("poster_show_current", args=[group.slug]),
"icon": "picture_as_pdf",
"validators": [
(
"aleksis.apps.resint.rules.permission_validator",
"resint.view_poster_pdf_menu",
group,
),
],
}
for group in PosterGroup.objects.all()
]
get_menu_entries_lazy = lazy(_get_menu_entries, list)
MENUS = {
"NAV_MENU_CORE": [
{
"name": _("Documents"),
"url": "#",
"icon": "open_in_browser",
"root": True,
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"resint.view_poster_menu",
),
],
"submenu": [
{
"name": _("Manage posters"),
"url": "poster_index",
"icon": "file_upload",
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"resint.view_posters_rule",
),
],
},
{
"name": _("Poster groups"),
"url": "poster_group_list",
"icon": "topic",
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"resint.view_postergroups_rule",
),
],
},
{
"name": _("Live documents"),
"url": "live_documents",
"icon": "update",
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"resint.view_livedocuments_rule",
),
],
},
],
}
]
+ get_menu_entries_lazy(),
}
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
import aleksis.apps.resint.models import aleksis.apps.resint.models
import calendarweek.calendarweek import calendarweek.calendarweek
import django.contrib.sites.managers
import django.core.validators import django.core.validators
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
...@@ -13,7 +12,6 @@ class Migration(migrations.Migration): ...@@ -13,7 +12,6 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
('sites', '0002_alter_domain_unique'),
] ]
operations = [ operations = [
...@@ -29,14 +27,12 @@ class Migration(migrations.Migration): ...@@ -29,14 +27,12 @@ class Migration(migrations.Migration):
('default_pdf', models.FileField(help_text='This PDF file will be shown if there is no current PDF.', upload_to='default_posters/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf'])], verbose_name='Default PDF')), ('default_pdf', models.FileField(help_text='This PDF file will be shown if there is no current PDF.', upload_to='default_posters/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf'])], verbose_name='Default PDF')),
('show_in_menu', models.BooleanField(default=True, verbose_name='Show in menu')), ('show_in_menu', models.BooleanField(default=True, verbose_name='Show in menu')),
('public', models.BooleanField(default=False, verbose_name='Show for not logged-in users')), ('public', models.BooleanField(default=False, verbose_name='Show for not logged-in users')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
], ],
options={ options={
'verbose_name': 'Poster group', 'verbose_name': 'Poster group',
'verbose_name_plural': 'Poster groups', 'verbose_name_plural': 'Poster groups',
}, },
managers=[ managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
], ],
), ),
migrations.CreateModel( migrations.CreateModel(
...@@ -48,26 +44,24 @@ class Migration(migrations.Migration): ...@@ -48,26 +44,24 @@ class Migration(migrations.Migration):
('year', models.PositiveSmallIntegerField(default=aleksis.apps.resint.models._get_current_year, verbose_name='Year')), ('year', models.PositiveSmallIntegerField(default=aleksis.apps.resint.models._get_current_year, verbose_name='Year')),
('pdf', models.FileField(upload_to='posters/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf'])], verbose_name='PDF')), ('pdf', models.FileField(upload_to='posters/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf'])], verbose_name='PDF')),
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='posters', to='resint.postergroup', verbose_name='Poster group')), ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='posters', to='resint.postergroup', verbose_name='Poster group')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
], ],
options={ options={
'verbose_name': 'Poster', 'verbose_name': 'Poster',
'verbose_name_plural': 'Posters', 'verbose_name_plural': 'Posters',
}, },
managers=[ managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
], ],
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='postergroup', model_name='postergroup',
constraint=models.UniqueConstraint(fields=('site_id', 'name'), name='unique_site_name'), constraint=models.UniqueConstraint(fields=('name',), name='unique_site_name'),
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='postergroup', model_name='postergroup',
constraint=models.UniqueConstraint(fields=('site_id', 'slug'), name='unique_site_slug'), constraint=models.UniqueConstraint(fields=('slug',), name='unique_site_slug'),
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='poster', model_name='poster',
constraint=models.UniqueConstraint(fields=('site_id', 'week', 'year'), name='unique_site_week_year'), constraint=models.UniqueConstraint(fields=('week', 'year'), name='unique_site_week_year'),
), ),
] ]
...@@ -16,6 +16,6 @@ class Migration(migrations.Migration): ...@@ -16,6 +16,6 @@ class Migration(migrations.Migration):
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='poster', model_name='poster',
constraint=models.UniqueConstraint(fields=('site_id', 'week', 'year', 'group'), name='unique_site_week_year'), constraint=models.UniqueConstraint(fields=('week', 'year', 'group'), name='unique_site_week_year'),
), ),
] ]
...@@ -8,7 +8,6 @@ import django.db.models.deletion ...@@ -8,7 +8,6 @@ import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('sites', '0002_alter_domain_unique'),
('contenttypes', '0002_remove_content_type_name'), ('contenttypes', '0002_remove_content_type_name'),
('resint', '0005_fix_permissions'), ('resint', '0005_fix_permissions'),
] ]
...@@ -24,14 +23,13 @@ class Migration(migrations.Migration): ...@@ -24,14 +23,13 @@ class Migration(migrations.Migration):
('current_file', models.FileField(blank=True, editable=False, null=True, upload_to='live_documents/', verbose_name='Current file')), ('current_file', models.FileField(blank=True, editable=False, null=True, upload_to='live_documents/', verbose_name='Current file')),
('last_update_triggered_manually', models.BooleanField(default=False, editable=False, verbose_name='Was the last update triggered manually?')), ('last_update_triggered_manually', models.BooleanField(default=False, editable=False, verbose_name='Was the last update triggered manually?')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_resint.livedocument_set+', to='contenttypes.contenttype')), ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_resint.livedocument_set+', to='contenttypes.contenttype')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
], ],
options={ options={
'verbose_name': 'Live document', 'verbose_name': 'Live document',
'verbose_name_plural': 'Live documents', 'verbose_name_plural': 'Live documents',
}, },
managers=[ managers=[
('objects', aleksis.core.managers.PolymorphicCurrentSiteManager()), ('objects', aleksis.core.managers.PolymorphicBaseManager()),
], ],
), ),
] ]
# Generated by Django 3.2.18 on 2023-05-17 20:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('resint', '0007_current_file_not_null'),
]
operations = [
migrations.AddField(
model_name='livedocument',
name='public',
field=models.BooleanField(default=False, verbose_name='Show for not logged-in users'),
),
]
# Generated by Django 4.1.9 on 2023-07-03 20:16
import aleksis.core.managers
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("contenttypes", "0002_remove_content_type_name"),
("resint", "0008_public_live_documents"),
]
operations = [
migrations.AlterModelManagers(
name="poster",
managers=[
("objects", aleksis.core.managers.AlekSISBaseManager()),
],
),
migrations.AlterModelManagers(
name="postergroup",
managers=[
("objects", aleksis.core.managers.AlekSISBaseManager()),
],
),
migrations.AddField(
model_name="livedocument",
name="managed_by_app_label",
field=models.CharField(
blank=True,
editable=False,
max_length=255,
verbose_name="App label of app responsible for managing this instance",
),
),
migrations.AddField(
model_name="poster",
name="managed_by_app_label",
field=models.CharField(
blank=True,
editable=False,
max_length=255,
verbose_name="App label of app responsible for managing this instance",
),
),
migrations.AddField(
model_name="postergroup",
name="managed_by_app_label",
field=models.CharField(
blank=True,
editable=False,
max_length=255,
verbose_name="App label of app responsible for managing this instance",
),
),
migrations.AlterField(
model_name="livedocument",
name="polymorphic_ctype",
field=models.ForeignKey(
editable=False,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="polymorphic_%(app_label)s.%(class)s_set+",
to="contenttypes.contenttype",
),
),
]
# Generated by Django 4.2.9 on 2024-01-03 13:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('resint', '0009_managed_by_app_label'),
]
operations = [
migrations.AlterModelManagers(
name='livedocument',
managers=[
],
),
migrations.AlterModelManagers(
name='poster',
managers=[
],
),
migrations.AlterModelManagers(
name='postergroup',
managers=[
],
),
migrations.RemoveConstraint(
model_name='poster',
name='unique_site_week_year',
),
migrations.RemoveConstraint(
model_name='postergroup',
name='unique_site_name',
),
migrations.RemoveConstraint(
model_name='postergroup',
name='unique_site_slug',
),
] + [
migrations.RunSQL(
f"ALTER TABLE resint_{model_name} drop column if exists site_id;"
) for model_name in
[
"postergroup",
"poster",
"livedocument",
]
] + [
migrations.AlterField(
model_name='postergroup',
name='name',
field=models.CharField(max_length=255, unique=True, verbose_name='Name'),
),
migrations.AlterField(
model_name='postergroup',
name='publishing_day',
field=models.PositiveSmallIntegerField(choices=[(0, 'Monday'), (1, 'Tuesday'), (2, 'Wednesday'), (3, 'Thursday'), (4, 'Friday'), (5, 'Saturday'), (6, 'Sunday')], verbose_name='Publishing weekday'),
),
migrations.AlterField(
model_name='postergroup',
name='slug',
field=models.SlugField(help_text="If you use 'example', the filename will be 'example.pdf'.", unique=True, verbose_name='Slug used in URL name'),
),
migrations.AddConstraint(
model_name='poster',
constraint=models.UniqueConstraint(fields=('week', 'year', 'group'), name='unique_week_year_group'),
),
]
from datetime import datetime from datetime import datetime
from typing import Optional from typing import Any, Optional
from django.core.files import File from django.core.files import File
from django.core.validators import FileExtensionValidator, MaxValueValidator, MinValueValidator from django.core.validators import FileExtensionValidator, MaxValueValidator, MinValueValidator
from django.db import models from django.db import models
from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
import reversion import reversion
from calendarweek import CalendarWeek from calendarweek import CalendarWeek
from calendarweek.django import i18n_day_name_choices_lazy from calendarweek.django import i18n_day_name_choices_lazy
from celery.result import allow_join_result
from celery.states import SUCCESS
from reversion.models import Revision, Version from reversion.models import Revision, Version
from aleksis.core.mixins import ExtensibleModel, ExtensiblePolymorphicModel from aleksis.core.mixins import ExtensibleModel, ExtensiblePolymorphicModel
from aleksis.core.models import DynamicRoute
from aleksis.core.util.pdf import generate_pdf_from_template
class PosterGroupDynamicRoute(DynamicRoute):
@classmethod
def get_dynamic_routes(cls):
poster_groups = PosterGroup.objects.all()
dynamic_routes = []
for poster_group in poster_groups:
dynamic_routes.append(cls.get_route_data(poster_group))
return dynamic_routes
@classmethod
def get_route_data(cls, instance):
dynamic_route = {}
dynamic_route["parent_route_name"] = ""
dynamic_route["route_path"] = reverse("poster_show_current", args=[instance.slug])
dynamic_route["route_name"] = f"resint.posterGroup.{instance.slug}"
dynamic_route["display_account_menu"] = False
dynamic_route["display_sidenav_menu"] = instance.show_in_menu
dynamic_route["menu_new_tab"] = True
dynamic_route["menu_title"] = instance.name
dynamic_route["menu_icon"] = "mdi-file-pdf-box"
dynamic_route["route_permission"] = "" if instance.public else "resint.view_poster_pdf_menu"
return dynamic_route
class PosterGroup(ExtensibleModel): class PosterGroup(ExtensibleModel):
...@@ -21,8 +59,9 @@ class PosterGroup(ExtensibleModel): ...@@ -21,8 +59,9 @@ class PosterGroup(ExtensibleModel):
slug = models.SlugField( slug = models.SlugField(
verbose_name=_("Slug used in URL name"), verbose_name=_("Slug used in URL name"),
help_text=_("If you use 'example', the filename will be 'example.pdf'."), help_text=_("If you use 'example', the filename will be 'example.pdf'."),
unique=True,
) )
name = models.CharField(max_length=255, verbose_name=_("Name")) name = models.CharField(max_length=255, verbose_name=_("Name"), unique=True)
publishing_day = models.PositiveSmallIntegerField( publishing_day = models.PositiveSmallIntegerField(
verbose_name=_("Publishing weekday"), choices=i18n_day_name_choices_lazy() verbose_name=_("Publishing weekday"), choices=i18n_day_name_choices_lazy()
) )
...@@ -40,10 +79,6 @@ class PosterGroup(ExtensibleModel): ...@@ -40,10 +79,6 @@ class PosterGroup(ExtensibleModel):
class Meta: class Meta:
verbose_name = _("Poster group") verbose_name = _("Poster group")
verbose_name_plural = _("Poster groups") verbose_name_plural = _("Poster groups")
constraints = [
models.UniqueConstraint(fields=["site_id", "name"], name="unique_site_name"),
models.UniqueConstraint(fields=["site_id", "slug"], name="unique_site_slug"),
]
permissions = [ permissions = [
("view_poster_of_group", _("Can view all posters of this group")), ("view_poster_of_group", _("Can view all posters of this group")),
("upload_poster_to_group", _("Can upload new posters to this group")), ("upload_poster_to_group", _("Can upload new posters to this group")),
...@@ -121,9 +156,7 @@ class Poster(ExtensibleModel): ...@@ -121,9 +156,7 @@ class Poster(ExtensibleModel):
class Meta: class Meta:
constraints = [ constraints = [
models.UniqueConstraint( models.UniqueConstraint(fields=["week", "year", "group"], name="unique_week_year_group")
fields=["site_id", "week", "year", "group"], name="unique_site_week_year"
)
] ]
verbose_name = _("Poster") verbose_name = _("Poster")
verbose_name_plural = _("Posters") verbose_name_plural = _("Posters")
...@@ -151,11 +184,14 @@ class LiveDocument(ExtensiblePolymorphicModel): ...@@ -151,11 +184,14 @@ class LiveDocument(ExtensiblePolymorphicModel):
SCOPE_PREFIX = "live_document_pdf" SCOPE_PREFIX = "live_document_pdf"
template = None
slug = models.SlugField( slug = models.SlugField(
verbose_name=_("Slug"), verbose_name=_("Slug"),
help_text=_("This will be used for the name of the current PDF file."), help_text=_("This will be used for the name of the current PDF file."),
) )
name = models.CharField(max_length=255, verbose_name=_("Name")) name = models.CharField(max_length=255, verbose_name=_("Name"))
public = models.BooleanField(default=False, verbose_name=_("Show for not logged-in users"))
current_file = models.FileField( current_file = models.FileField(
upload_to="live_documents/", upload_to="live_documents/",
...@@ -167,6 +203,17 @@ class LiveDocument(ExtensiblePolymorphicModel): ...@@ -167,6 +203,17 @@ class LiveDocument(ExtensiblePolymorphicModel):
default=False, verbose_name=_("Was the last update triggered manually?"), editable=False default=False, verbose_name=_("Was the last update triggered manually?"), editable=False
) )
class Meta:
verbose_name = _("Live document")
verbose_name_plural = _("Live documents")
def __str__(self) -> str:
return self.name
def save(self, *args, **kwargs):
with reversion.create_revision():
super().save(*args, **kwargs)
@property @property
def last_version(self) -> Optional[Revision]: def last_version(self) -> Optional[Revision]:
"""Get django-reversion version of last file update.""" """Get django-reversion version of last file update."""
...@@ -199,20 +246,23 @@ class LiveDocument(ExtensiblePolymorphicModel): ...@@ -199,20 +246,23 @@ class LiveDocument(ExtensiblePolymorphicModel):
"""Return OAuth2 scope name to access PDF file via API.""" """Return OAuth2 scope name to access PDF file via API."""
return f"{self.SCOPE_PREFIX}_{self.slug}" return f"{self.SCOPE_PREFIX}_{self.slug}"
def save(self, *args, **kwargs): def get_context_data(self) -> dict[str, Any]:
with reversion.create_revision(): """Get context to pass to the PDF template."""
super().save(*args, **kwargs) return {}
def update(self, triggered_manually: bool = True): def update(self, triggered_manually: bool = True):
"""Update the file with a new version. """Update the file with a new version.
Has to be implemented by subclasses. Has to be implemented by subclasses.
""" """
raise NotImplementedError("Subclasses of LiveDocument must implement update()") if not self.template:
raise NotImplementedError("Subclasses of LiveDocument must implement update()")
def __str__(self) -> str:
return self.name file_object, result = generate_pdf_from_template(self.template, self.get_context_data())
with allow_join_result():
class Meta: result.wait()
verbose_name = _("Live document") file_object.refresh_from_db()
verbose_name_plural = _("Live documents") if result.status == SUCCESS and file_object.file:
self.last_update_triggered_manually = triggered_manually
self.current_file.save(self.filename, file_object.file.file)
self.save()
...@@ -3,7 +3,7 @@ from django.http import HttpRequest ...@@ -3,7 +3,7 @@ from django.http import HttpRequest
from rules import add_perm, predicate from rules import add_perm, predicate
from aleksis.apps.resint.models import Poster, PosterGroup from aleksis.apps.resint.models import LiveDocument, Poster, PosterGroup
from aleksis.core.util.predicates import ( from aleksis.core.util.predicates import (
check_object_permission, check_object_permission,
has_any_object, has_any_object,
...@@ -31,7 +31,7 @@ def permission_validator(request: HttpRequest, perm: str, obj) -> bool: ...@@ -31,7 +31,7 @@ def permission_validator(request: HttpRequest, perm: str, obj) -> bool:
@predicate @predicate
def is_public_poster_group(user: User, obj: PosterGroup): def is_public(user: User, obj: [LiveDocument, PosterGroup]):
return obj.public return obj.public
...@@ -96,14 +96,16 @@ delete_poster_predicate = view_posters_predicate & ( ...@@ -96,14 +96,16 @@ delete_poster_predicate = view_posters_predicate & (
add_perm("resint.delete_poster_rule", delete_poster_predicate) add_perm("resint.delete_poster_rule", delete_poster_predicate)
# View poster PDF file # View poster PDF file
view_poster_pdf_predicate = is_public_poster_group | ( view_poster_pdf_predicate = is_public | (
has_person has_person
& (has_global_perm("resint.view_postergroup") | has_global_perm("resint.view_poster")) & (has_global_perm("resint.view_postergroup") | has_global_perm("resint.view_poster"))
) )
add_perm("resint.view_poster_pdf", view_poster_pdf_predicate) add_perm("resint.view_poster_pdf", view_poster_pdf_predicate)
# View menu entry for single posters # View poster PDF file in menu
view_poster_pdf_menu_predicate = show_poster_group_in_menu & view_poster_pdf_predicate view_poster_pdf_menu_predicate = has_person & (
has_global_perm("resint.view_postergroup") | has_global_perm("resint.view_poster")
)
add_perm("resint.view_poster_pdf_menu", view_poster_pdf_menu_predicate) add_perm("resint.view_poster_pdf_menu", view_poster_pdf_menu_predicate)
# Show the poster manage menu # Show the poster manage menu
...@@ -116,8 +118,9 @@ view_live_documents_predicate = has_person & has_global_perm("resint.view_livedo ...@@ -116,8 +118,9 @@ view_live_documents_predicate = has_person & has_global_perm("resint.view_livedo
add_perm("resint.view_livedocuments_rule", view_live_documents_predicate) add_perm("resint.view_livedocuments_rule", view_live_documents_predicate)
# View live document # View live document
view_live_document_predicate = has_person & ( view_live_document_predicate = is_public | (
has_global_perm("resint.view_livedocument") | has_object_perm("resint.view_livedocument") has_person
& (has_global_perm("resint.view_livedocument") | has_object_perm("resint.view_livedocument"))
) )
add_perm("resint.view_livedocument_rule", view_live_document_predicate) add_perm("resint.view_livedocument_rule", view_live_document_predicate)
...@@ -138,3 +141,10 @@ delete_live_document_predicate = view_live_documents_predicate & has_global_perm ...@@ -138,3 +141,10 @@ delete_live_document_predicate = view_live_documents_predicate & has_global_perm
"resint.delete_livedocument" "resint.delete_livedocument"
) )
add_perm("resint.delete_livedocument_rule", delete_live_document_predicate) add_perm("resint.delete_livedocument_rule", delete_live_document_predicate)
# View menu
view_menu_predicate = (
view_posters_predicate | view_poster_groups_predicate | view_live_documents_predicate
)
add_perm("resint.view_menu_rule", view_menu_predicate)
...@@ -19,14 +19,14 @@ class LiveDocumentTable(Table): ...@@ -19,14 +19,14 @@ class LiveDocumentTable(Table):
args=[A("id")], args=[A("id")],
text=_("Edit"), text=_("Edit"),
attrs={"a": {"class": "btn-flat waves-effect waves-orange orange-text"}}, attrs={"a": {"class": "btn-flat waves-effect waves-orange orange-text"}},
verbose_name=_("Actions"), verbose_name=_("Edit"),
) )
delete = LinkColumn( delete = LinkColumn(
"delete_live_document", "delete_live_document",
args=[A("id")], args=[A("id")],
text=_("Delete"), text=_("Delete"),
attrs={"a": {"class": "btn-flat waves-effect waves-red red-text"}}, attrs={"a": {"class": "btn-flat waves-effect waves-red red-text"}},
verbose_name=_("Actions"), verbose_name=_("Delete"),
) )
def render_document_name(self, value, record): def render_document_name(self, value, record):
......
...@@ -9,21 +9,28 @@ ...@@ -9,21 +9,28 @@
{% block page_title %}{% blocktrans %}Live documents{% endblocktrans %}{% endblock %} {% block page_title %}{% blocktrans %}Live documents{% endblocktrans %}{% endblock %}
{% block content %} {% block content %}
<a class="btn green waves-effect waves-light dropdown-trigger" href="#" data-target="widget-dropdown"> {% if document_types %}
<i class="material-icons left">add</i> <a class="btn green waves-effect waves-light dropdown-trigger" href="#" data-target="widget-dropdown">
{% trans "Create live document" %} <i class="material-icons left">add</i>
</a> {% trans "Create live document" %}
</a>
<ul id="widget-dropdown" class="dropdown-content"> <ul id="widget-dropdown" class="dropdown-content">
{% for ct, model in widget_types %} {% for ct, model in document_types %}
<li> <li>
<a href="{% url 'create_live_document' ct.app_label ct.model %}"> <a href="{% url 'create_live_document' ct.app_label ct.model %}">
{% verbose_name_object model as widget_name %} {% verbose_name_object model as document_name %}
{% blocktrans with name=widget_name %}Create {{ name }}{% endblocktrans %} {% blocktrans with name=document_name %}Create {{ name }}{% endblocktrans %}
</a> </a>
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
{% else %}
<figure class="alert primary">
<i class="material-icons left">info</i>
{% trans "There is no app installed which registers any live document types." %}
</figure>
{% endif %}
{% render_table table %} {% render_table table %}
{% endblock %} {% endblock %}
...@@ -23,7 +23,6 @@ urlpatterns = [ ...@@ -23,7 +23,6 @@ urlpatterns = [
path("upload/", PosterUploadView.as_view(), name="poster_upload"), path("upload/", PosterUploadView.as_view(), name="poster_upload"),
path("<int:pk>/edit/", PosterEditView.as_view(), name="poster_edit"), path("<int:pk>/edit/", PosterEditView.as_view(), name="poster_edit"),
path("<int:pk>/delete/", PosterDeleteView.as_view(), name="poster_delete"), path("<int:pk>/delete/", PosterDeleteView.as_view(), name="poster_delete"),
path("<str:slug>.pdf", PosterCurrentView.as_view(), name="poster_show_current"),
path("groups/", PosterGroupListView.as_view(), name="poster_group_list"), path("groups/", PosterGroupListView.as_view(), name="poster_group_list"),
path("groups/create/", PosterGroupCreateView.as_view(), name="create_poster_group"), path("groups/create/", PosterGroupCreateView.as_view(), name="create_poster_group"),
path("groups/<int:pk>/edit/", PosterGroupEditView.as_view(), name="edit_poster_group"), path("groups/<int:pk>/edit/", PosterGroupEditView.as_view(), name="edit_poster_group"),
...@@ -44,6 +43,10 @@ urlpatterns = [ ...@@ -44,6 +43,10 @@ urlpatterns = [
LiveDocumentDeleteView.as_view(), LiveDocumentDeleteView.as_view(),
name="delete_live_document", name="delete_live_document",
), ),
]
api_urlpatterns = [
path("<str:slug>.pdf", PosterCurrentView.as_view(), name="poster_show_current"),
path( path(
"live_documents/<str:slug>.pdf", "live_documents/<str:slug>.pdf",
LiveDocumentShowView.as_view(), LiveDocumentShowView.as_view(),
......