diff --git a/debian/changelog b/debian/changelog index 0db0294a2..e719a7ef1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,25 @@ +freedombox (23.3) unstable; urgency=medium + + [ 109247019824 ] + * Translated using Weblate (Bulgarian) + + [ James Valleroy ] + * tor: Remove workaround for old Augeas bug + * upgrades: Add augeas lens for Deb822 apt sources + * tor: Also use Aptsources822 augeas lens + * firewalld: Allow upgrade to version 2* + * locale: Update translation strings + * doc: Fetch latest manual + + [ Sunil Mohan Adapa ] + * config: Fix showing the value of the default home page + * tests: functional: Fix submitting forms with notifications present + * views: Use dedicated view when showing an app with operations + * gitweb: tests: Skip tests using git when git is not installed + * email: Revert workaround for error on finishing uninstall + + -- James Valleroy Mon, 30 Jan 2023 20:36:37 -0500 + freedombox (23.2~bpo11+1) bullseye-backports; urgency=medium * Rebuild for bullseye-backports. diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki index c85465fa1..88de108c9 100644 --- a/doc/manual/en/ReleaseNotes.raw.wiki +++ b/doc/manual/en/ReleaseNotes.raw.wiki @@ -8,6 +8,19 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 23.3 (2023-01-30) == + + * config: Fix showing the value of the default home page + * email: Revert workaround for error on finishing uninstall + * firewalld: Allow upgrade to version 2* + * gitweb: tests: Skip tests using git when git is not installed + * locale: Update translations for Bulgarian + * tests: functional: Fix submitting forms with notifications present + * tor: Also use Aptsources822 augeas lens + * tor: Remove workaround for old Augeas bug + * upgrades: Add augeas lens for Deb822 apt sources + * views: Use dedicated view when showing an app with operations + == FreedomBox 23.2 (2023-01-16) == * locale: Update translations for Albanian, Bulgarian diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki index c85465fa1..88de108c9 100644 --- a/doc/manual/es/ReleaseNotes.raw.wiki +++ b/doc/manual/es/ReleaseNotes.raw.wiki @@ -8,6 +8,19 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 23.3 (2023-01-30) == + + * config: Fix showing the value of the default home page + * email: Revert workaround for error on finishing uninstall + * firewalld: Allow upgrade to version 2* + * gitweb: tests: Skip tests using git when git is not installed + * locale: Update translations for Bulgarian + * tests: functional: Fix submitting forms with notifications present + * tor: Also use Aptsources822 augeas lens + * tor: Remove workaround for old Augeas bug + * upgrades: Add augeas lens for Deb822 apt sources + * views: Use dedicated view when showing an app with operations + == FreedomBox 23.2 (2023-01-16) == * locale: Update translations for Albanian, Bulgarian diff --git a/plinth/__init__.py b/plinth/__init__.py index c0c44fcbd..7a71a7cbc 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -3,4 +3,4 @@ Package init file. """ -__version__ = '23.2' +__version__ = '23.3' diff --git a/plinth/locale/ar/LC_MESSAGES/django.po b/plinth/locale/ar/LC_MESSAGES/django.po index 1dba726c4..4a7368866 100644 --- a/plinth/locale/ar/LC_MESSAGES/django.po +++ b/plinth/locale/ar/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-03-31 09:12+0000\n" "Last-Translator: abidin toumi \n" "Language-Team: Arabic %(service_name)s is not running." msgstr "" @@ -7477,11 +7477,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/ar_SA/LC_MESSAGES/django.po b/plinth/locale/ar_SA/LC_MESSAGES/django.po index 3826fb9b1..4bc901896 100644 --- a/plinth/locale/ar_SA/LC_MESSAGES/django.po +++ b/plinth/locale/ar_SA/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2020-06-10 15:41+0000\n" "Last-Translator: aiman an \n" "Language-Team: Arabic (Saudi Arabia) %(service_name)s is not running." msgstr "" @@ -7481,11 +7481,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index c5a87ac9c..aecb67244 100644 --- a/plinth/locale/bg/LC_MESSAGES/django.po +++ b/plinth/locale/bg/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" -"PO-Revision-Date: 2023-01-16 08:48+0000\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" +"PO-Revision-Date: 2023-01-18 07:47+0000\n" "Last-Translator: 109247019824 \n" "Language-Team: Bulgarian \n" @@ -895,7 +895,7 @@ msgstr "" msgid "Configuration updated." msgstr "Настройките са променени." -#: plinth/modules/bepasty/views.py:91 plinth/modules/email/views.py:56 +#: plinth/modules/bepasty/views.py:91 plinth/modules/email/views.py:48 #: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/zoph/views.py:74 msgid "An error occurred during configuration." @@ -978,7 +978,7 @@ msgstr "" #: plinth/modules/bind/views.py:61 plinth/modules/config/views.py:98 #: plinth/modules/coturn/views.py:40 plinth/modules/deluge/views.py:35 #: plinth/modules/dynamicdns/views.py:78 plinth/modules/ejabberd/views.py:95 -#: plinth/modules/email/views.py:53 plinth/modules/matrixsynapse/views.py:128 +#: plinth/modules/email/views.py:45 plinth/modules/matrixsynapse/views.py:128 #: plinth/modules/minetest/views.py:55 plinth/modules/mumble/views.py:37 #: plinth/modules/pagekite/forms.py:74 plinth/modules/privacy/views.py:36 #: plinth/modules/quassel/views.py:29 plinth/modules/roundcube/views.py:32 @@ -2717,7 +2717,7 @@ msgstr "" #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:18 #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:47 #: plinth/modules/snapshot/templates/snapshot.html:16 -#: plinth/templates/app.html:55 +#: plinth/templates/app.html:54 msgid "Update setup" msgstr "Обновяване на настройки" @@ -3015,7 +3015,7 @@ msgstr "FluffyChat" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:13 -#: plinth/templates/app.html:47 +#: plinth/templates/app.html:46 msgid "Configuration" msgstr "Настройки" @@ -5768,7 +5768,7 @@ msgstr "" #: plinth/modules/ssh/__init__.py:41 msgid "Secure Shell (SSH) Server" -msgstr "" +msgstr "Сървър за Secure Shell (SSH)" #: plinth/modules/ssh/__init__.py:61 msgid "Remotely login using Secure Shell (SSH)" @@ -5776,7 +5776,7 @@ msgstr "Отдалечен вход през SSH" #: plinth/modules/ssh/forms.py:13 msgid "Disable password authentication" -msgstr "" +msgstr "Изключване на удостоверяването с парола" #: plinth/modules/ssh/forms.py:14 msgid "" @@ -5801,7 +5801,7 @@ msgstr "" #: plinth/modules/ssh/templates/ssh.html:11 msgid "Server Fingerprints" -msgstr "" +msgstr "Отпечатък от сървъра" #: plinth/modules/ssh/templates/ssh.html:14 msgid "" @@ -7449,7 +7449,7 @@ msgstr "" msgid "Installation" msgstr "" -#: plinth/templates/app.html:30 +#: plinth/templates/app.html:29 #, python-format msgid "Service %(service_name)s is not running." msgstr "Услугата %(service_name)s не работи." @@ -7758,11 +7758,11 @@ msgstr "" "Всички данни и настройки на приложението ще бъдат загубени. Приложението " "може да бъде инсталирано отново." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Настройките не са променени" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "преди премахване на {app_id}" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index 468b1cd24..1d0699174 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2021-06-16 07:33+0000\n" "Last-Translator: Oymate \n" "Language-Team: Bengali %(service_name)s is not running." msgstr "" @@ -7484,11 +7484,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index 06fba64fe..a1a653bbf 100644 --- a/plinth/locale/cs/LC_MESSAGES/django.po +++ b/plinth/locale/cs/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-12-11 17:47+0000\n" "Last-Translator: Jiří Podhorecký \n" "Language-Team: Czech %(service_name)s is not running." msgstr "Služba %(service_name)s není spuštěná." @@ -8513,11 +8513,11 @@ msgstr "" "Všechna data a konfigurace aplikace budou trvale ztraceny. Aplikaci lze " "nainstalovat znovu." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Nastavení se nezměnila" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "před odinstalací {app_id}" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index 4eb894795..9cf780d5f 100644 --- a/plinth/locale/da/LC_MESSAGES/django.po +++ b/plinth/locale/da/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:19+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Danish %(service_name)s is not running." @@ -8627,11 +8627,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Indstilling uændret" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index bb2dc4a38..e76193ac2 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-12-11 17:47+0000\n" "Last-Translator: Johannes Keyser \n" "Language-Team: German %(service_name)s is not running." msgstr "Dienst %(service_name)s läuft nicht." @@ -8692,11 +8692,11 @@ msgstr "" "Alle App-Daten und -Konfigurationen gehen dauerhaft verloren. App kann " "wieder frisch installiert werden." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Einstellung unverändert" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "vor der Deinstallation von {app_id}" diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index bfda34eab..88ae85b7b 100644 --- a/plinth/locale/django.pot +++ b/plinth/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -828,7 +828,7 @@ msgstr "" msgid "Configuration updated." msgstr "" -#: plinth/modules/bepasty/views.py:91 plinth/modules/email/views.py:56 +#: plinth/modules/bepasty/views.py:91 plinth/modules/email/views.py:48 #: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/zoph/views.py:74 msgid "An error occurred during configuration." @@ -911,7 +911,7 @@ msgstr "" #: plinth/modules/bind/views.py:61 plinth/modules/config/views.py:98 #: plinth/modules/coturn/views.py:40 plinth/modules/deluge/views.py:35 #: plinth/modules/dynamicdns/views.py:78 plinth/modules/ejabberd/views.py:95 -#: plinth/modules/email/views.py:53 plinth/modules/matrixsynapse/views.py:128 +#: plinth/modules/email/views.py:45 plinth/modules/matrixsynapse/views.py:128 #: plinth/modules/minetest/views.py:55 plinth/modules/mumble/views.py:37 #: plinth/modules/pagekite/forms.py:74 plinth/modules/privacy/views.py:36 #: plinth/modules/quassel/views.py:29 plinth/modules/roundcube/views.py:32 @@ -2586,7 +2586,7 @@ msgstr "" #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:18 #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:47 #: plinth/modules/snapshot/templates/snapshot.html:16 -#: plinth/templates/app.html:55 +#: plinth/templates/app.html:54 msgid "Update setup" msgstr "" @@ -2884,7 +2884,7 @@ msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:13 -#: plinth/templates/app.html:47 +#: plinth/templates/app.html:46 msgid "Configuration" msgstr "" @@ -7160,7 +7160,7 @@ msgstr "" msgid "Installation" msgstr "" -#: plinth/templates/app.html:30 +#: plinth/templates/app.html:29 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -7459,11 +7459,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 1a678214f..32ea0214a 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:20+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Greek %(service_name)s is not running." msgstr "Η υπηρεσία %(service_name)s δεν εκτελείται." @@ -8860,11 +8860,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Οι ρυθμίσεις δεν άλλαξαν" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index b78e5e648..dd12f5618 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2023-01-01 18:49+0000\n" "Last-Translator: gallegonovato \n" "Language-Team: Spanish %(service_name)s is not running." msgstr "El servidor %(service_name)s no se está ejecutando." @@ -8563,11 +8563,11 @@ msgstr "" "Todos los datos de la aplicación y la configuración se perderán " "permanentemente. La aplicación se puede instalar de nuevo." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Configuración sin cambio" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "antes de desinstalar {app_id}" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index e870afb91..4e6bf6207 100644 --- a/plinth/locale/fa/LC_MESSAGES/django.po +++ b/plinth/locale/fa/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:19+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Persian %(service_name)s is not running." msgstr "" @@ -8200,11 +8200,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 85859730e..0f3c009a8 100644 --- a/plinth/locale/fake/LC_MESSAGES/django.po +++ b/plinth/locale/fake/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth 0.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers %(service_name)s is not running." @@ -8724,11 +8724,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "SETTING UNCHANGED" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index dfcb0c06f..1588e884f 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-10-30 11:00+0000\n" "Last-Translator: Coucouf \n" "Language-Team: French %(service_name)s is not running." msgstr "Le service %(service_name)s n’est pas actif." @@ -8740,11 +8740,11 @@ msgstr "" "L’ensemble données de l’appli et sa configuration seront définitivement " "perdus. Un appli peut toujours être réinstallée de zéro." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Paramètre inchangé" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "avant la désinstallation de {app_id}" diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index 91f0de396..67c27acef 100644 --- a/plinth/locale/gl/LC_MESSAGES/django.po +++ b/plinth/locale/gl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-12-30 10:51+0000\n" "Last-Translator: gallegonovato \n" "Language-Team: Galician %(service_name)s is not running." msgstr "" @@ -7507,11 +7507,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index 63a57dd5c..29f9678d7 100644 --- a/plinth/locale/gu/LC_MESSAGES/django.po +++ b/plinth/locale/gu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Gujarati %(service_name)s is not running." msgstr "" @@ -7853,11 +7853,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "સેટિંગ યથાવત" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index 673755088..d544a5632 100644 --- a/plinth/locale/hi/LC_MESSAGES/django.po +++ b/plinth/locale/hi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Hindi %(service_name)s is not running." msgstr "सर्विस %(service_name)s नहीं चल रहा है." @@ -8641,11 +8641,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "सेटिंग स्थिर है" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index c8bb297d2..dc20c0265 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-10-24 18:39+0000\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Hungarian %(service_name)s is not running." msgstr "A szolgáltatás nem fut (%(service_name)s)." @@ -8663,11 +8663,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "A beállítás változatlan" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index 1eeff728b..81688864f 100644 --- a/plinth/locale/id/LC_MESSAGES/django.po +++ b/plinth/locale/id/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (FreedomBox)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:19+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Indonesian %(service_name)s is not running." msgstr "Layanan %(service_name)s tidak berjalan." @@ -8020,11 +8020,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index 421067c07..3276d5834 100644 --- a/plinth/locale/it/LC_MESSAGES/django.po +++ b/plinth/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:19+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Italian %(service_name)s is not running." msgstr "" @@ -8099,11 +8099,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Impostazioni invariate" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index 804b8d6f5..e3513c44e 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2021-05-20 12:32+0000\n" "Last-Translator: Jacque Fresco \n" "Language-Team: Japanese %(service_name)s is not running." msgstr "" @@ -7461,11 +7461,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index 78c7a633b..db2081ba5 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2020-07-16 16:41+0000\n" "Last-Translator: Yogesh \n" "Language-Team: Kannada %(service_name)s is not running." msgstr "" @@ -7463,11 +7463,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index 47fc170df..144ac22ae 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:19+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Lithuanian %(service_name)s is not running." msgstr "" @@ -7463,11 +7463,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/lv/LC_MESSAGES/django.po b/plinth/locale/lv/LC_MESSAGES/django.po index 049d00a65..d1aab678a 100644 --- a/plinth/locale/lv/LC_MESSAGES/django.po +++ b/plinth/locale/lv/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:20+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Latvian %(service_name)s is not running." msgstr "" @@ -7462,11 +7462,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index e15081f1b..062ede116 100644 --- a/plinth/locale/nb/LC_MESSAGES/django.po +++ b/plinth/locale/nb/LC_MESSAGES/django.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-11-07 10:05+0000\n" "Last-Translator: Petter Reinholdtsen \n" "Language-Team: Norwegian Bokmål %(service_name)s is not running." msgstr "Tjenesten %(service_name)s kjører ikke." @@ -8650,11 +8650,11 @@ msgstr "" "All programdata og oppsett blir permanent borte. Programmet kan installeres " "på nytt igjen." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Oppsett uendret" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "før avinstallering av {app_id}" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 8284c68b8..09ed8f568 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-12-07 20:48+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch %(service_name)s is not running." msgstr "Service %(service_name)s is niet actief." @@ -8600,11 +8600,11 @@ msgstr "" "Alle toepassings-gegevens en configuratie gaan permanent verloren. de " "toepassing kan opnieuw vers worden geïnstalleerd." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Instelling onveranderd" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "voor het verwijderen van {app_id}" diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index 46dd5be13..e99112353 100644 --- a/plinth/locale/pl/LC_MESSAGES/django.po +++ b/plinth/locale/pl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:19+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Polish %(service_name)s is not running." msgstr "Usługa %(service_name)s nie jest uruchomiona." @@ -8084,11 +8084,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Ustawienie bez zmian" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index 8804931d5..4251469d8 100644 --- a/plinth/locale/pt/LC_MESSAGES/django.po +++ b/plinth/locale/pt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:19+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Portuguese %(service_name)s is not running." @@ -7835,11 +7835,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Definição inalterada" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 9dd8cbdd0..6fffc67a7 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-10-10 18:05+0000\n" "Last-Translator: Nikita Epifanov \n" "Language-Team: Russian %(service_name)s is not running." msgstr "Служба %(service_name)s не запущена." @@ -8601,11 +8601,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Настройки без изменений" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/si/LC_MESSAGES/django.po b/plinth/locale/si/LC_MESSAGES/django.po index 7310e0665..ea189396c 100644 --- a/plinth/locale/si/LC_MESSAGES/django.po +++ b/plinth/locale/si/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2021-04-27 13:32+0000\n" "Last-Translator: HelaBasa \n" "Language-Team: Sinhala %(service_name)s is not running." msgstr "" @@ -7461,11 +7461,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index a8910f9d7..288f67d2c 100644 --- a/plinth/locale/sl/LC_MESSAGES/django.po +++ b/plinth/locale/sl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:19+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Slovenian %(service_name)s is not running." msgstr "" @@ -7786,11 +7786,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/sq/LC_MESSAGES/django.po b/plinth/locale/sq/LC_MESSAGES/django.po index 52c421bd2..280c20cd9 100644 --- a/plinth/locale/sq/LC_MESSAGES/django.po +++ b/plinth/locale/sq/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2023-01-05 15:50+0000\n" "Last-Translator: Besnik Bleta \n" "Language-Team: Albanian %(service_name)s is not running." msgstr "Shërbimi %(service_name)s s’po xhiron." @@ -8615,11 +8615,11 @@ msgstr "" "Krejt të dhënat dhe formësimi i aplikacionit do të humbin përgjithnjë. " "Aplikacioni mund të instalohet sërish nga e para." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Rregullim i pandryshuar" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "para çinstalimit të {app_id}" diff --git a/plinth/locale/sr/LC_MESSAGES/django.po b/plinth/locale/sr/LC_MESSAGES/django.po index 8d47d1a3b..81aea2189 100644 --- a/plinth/locale/sr/LC_MESSAGES/django.po +++ b/plinth/locale/sr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-09-14 17:20+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Serbian %(service_name)s is not running." msgstr "" @@ -7610,11 +7610,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 6fe61477d..b469b5dc2 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-10-20 21:06+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish %(service_name)s is not running." msgstr "Tjänsten %(service_name)s körs inte." @@ -8537,11 +8537,11 @@ msgstr "" "All appdata och konfiguration kommer att gå förlorad permanent. Appen kan " "installeras på nytt igen." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Instänllningar oförändrade" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "innan du avinstallerar {app_id}" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index 2f7e06aa9..23ab06f2e 100644 --- a/plinth/locale/ta/LC_MESSAGES/django.po +++ b/plinth/locale/ta/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -829,7 +829,7 @@ msgstr "" msgid "Configuration updated." msgstr "" -#: plinth/modules/bepasty/views.py:91 plinth/modules/email/views.py:56 +#: plinth/modules/bepasty/views.py:91 plinth/modules/email/views.py:48 #: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/zoph/views.py:74 msgid "An error occurred during configuration." @@ -912,7 +912,7 @@ msgstr "" #: plinth/modules/bind/views.py:61 plinth/modules/config/views.py:98 #: plinth/modules/coturn/views.py:40 plinth/modules/deluge/views.py:35 #: plinth/modules/dynamicdns/views.py:78 plinth/modules/ejabberd/views.py:95 -#: plinth/modules/email/views.py:53 plinth/modules/matrixsynapse/views.py:128 +#: plinth/modules/email/views.py:45 plinth/modules/matrixsynapse/views.py:128 #: plinth/modules/minetest/views.py:55 plinth/modules/mumble/views.py:37 #: plinth/modules/pagekite/forms.py:74 plinth/modules/privacy/views.py:36 #: plinth/modules/quassel/views.py:29 plinth/modules/roundcube/views.py:32 @@ -2587,7 +2587,7 @@ msgstr "" #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:18 #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:47 #: plinth/modules/snapshot/templates/snapshot.html:16 -#: plinth/templates/app.html:55 +#: plinth/templates/app.html:54 msgid "Update setup" msgstr "" @@ -2885,7 +2885,7 @@ msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:13 -#: plinth/templates/app.html:47 +#: plinth/templates/app.html:46 msgid "Configuration" msgstr "" @@ -7161,7 +7161,7 @@ msgstr "" msgid "Installation" msgstr "" -#: plinth/templates/app.html:30 +#: plinth/templates/app.html:29 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -7460,11 +7460,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index 3542affee..213cd6cc1 100644 --- a/plinth/locale/te/LC_MESSAGES/django.po +++ b/plinth/locale/te/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-03-02 12:27+0000\n" "Last-Translator: James Valleroy \n" "Language-Team: Telugu %(service_name)s is not running." msgstr "%(service_name)s సేవ నడవడం లేదు." @@ -8328,11 +8328,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "మారకుండా అమర్చుతోంది" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index f0d39afd8..f61275ebf 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-12-07 20:48+0000\n" "Last-Translator: Burak Yavuz \n" "Language-Team: Turkish %(service_name)s is not running." msgstr "%(service_name)s hizmeti çalışmıyor." @@ -8552,11 +8552,11 @@ msgstr "" "Tüm uygulama verileri ve yapılandırması kalıcı olarak kaybolacaktır. " "Uygulama tekrar yeni olarak yüklenebilir." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Ayar değişmedi" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "{app_id} kaldırılmadan önce" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index cef227356..8ff00a641 100644 --- a/plinth/locale/uk/LC_MESSAGES/django.po +++ b/plinth/locale/uk/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-12-07 20:48+0000\n" "Last-Translator: Ihor Hordiichuk \n" "Language-Team: Ukrainian %(service_name)s is not running." msgstr "Сервіс %(service_name)s не запущено." @@ -8542,11 +8542,11 @@ msgstr "" "Усі дані програми та налаштування буде втрачено назавжди. Застосунок можна " "встановити начисто ще раз." -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "Налаштування не змінено" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "перед видаленням {app_id}" diff --git a/plinth/locale/vi/LC_MESSAGES/django.po b/plinth/locale/vi/LC_MESSAGES/django.po index dc07a3745..6c0258765 100644 --- a/plinth/locale/vi/LC_MESSAGES/django.po +++ b/plinth/locale/vi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2021-07-28 08:34+0000\n" "Last-Translator: bruh \n" "Language-Team: Vietnamese %(service_name)s is not running." msgstr "" @@ -7732,11 +7732,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index 037d8736a..d54f8cc47 100644 --- a/plinth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hans/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2022-12-07 20:48+0000\n" "Last-Translator: Eric \n" "Language-Team: Chinese (Simplified) %(service_name)s is not running." msgstr "服务 %(service_name)s 未在运行。" @@ -7740,11 +7740,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "设置未改变" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/locale/zh_Hant/LC_MESSAGES/django.po b/plinth/locale/zh_Hant/LC_MESSAGES/django.po index 9e99aee66..7a39b6802 100644 --- a/plinth/locale/zh_Hant/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hant/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-03 10:41-0500\n" +"POT-Creation-Date: 2023-01-30 20:12-0500\n" "PO-Revision-Date: 2021-12-23 12:50+0000\n" "Last-Translator: pesder \n" "Language-Team: Chinese (Traditional) %(service_name)s is not running." msgstr "" @@ -7607,11 +7607,11 @@ msgid "" "installed freshly again." msgstr "" -#: plinth/views.py:221 +#: plinth/views.py:230 msgid "Setting unchanged" msgstr "" -#: plinth/views.py:401 +#: plinth/views.py:433 #, python-brace-format msgid "before uninstall of {app_id}" msgstr "" diff --git a/plinth/modules/config/__init__.py b/plinth/modules/config/__init__.py index b3ee55574..c2ebd046a 100644 --- a/plinth/modules/config/__init__.py +++ b/plinth/modules/config/__init__.py @@ -105,6 +105,12 @@ def get_hostname(): def home_page_url2scid(url): """Return the shortcut ID of the given home page url.""" + # url is None when the freedombox-apache-homepage configuration file does + # not exist. In this case, the default redirect in /plinth from the shipped + # configuration file is effective. + if url is None: + return 'plinth' + if url in ('/plinth/', '/plinth', 'plinth'): return 'plinth' diff --git a/plinth/modules/config/tests/test_config.py b/plinth/modules/config/tests/test_config.py index 265512e25..d03adc412 100644 --- a/plinth/modules/config/tests/test_config.py +++ b/plinth/modules/config/tests/test_config.py @@ -76,7 +76,7 @@ def test_domainname_field(): def test_homepage_mapping(): """Basic tests for homepage functions.""" func = home_page_url2scid - assert func(None) is None + assert func(None) == 'plinth' assert func('/unknown/url') is None assert func('/plinth/') == 'plinth' assert func('/plinth') == 'plinth' diff --git a/plinth/modules/config/tests/test_functional.py b/plinth/modules/config/tests/test_functional.py index 0b3ee1a37..aabebdf2b 100644 --- a/plinth/modules/config/tests/test_functional.py +++ b/plinth/modules/config/tests/test_functional.py @@ -4,6 +4,7 @@ Functional, browser based tests for config app. """ import pytest + from plinth.tests import functional pytestmark = [ @@ -61,8 +62,7 @@ def _set_home_page(browser, home_page): functional.nav_to_module(browser, 'config') drop_down = browser.find_by_id('id_homepage') drop_down.select(home_page) - update_setup = browser.find_by_css('.btn-primary') - functional.submit(browser, element=update_setup) + functional.submit(browser, form_class='form-configuration') def _check_home_page_redirect(browser, app_name): diff --git a/plinth/modules/email/views.py b/plinth/modules/email/views.py index 2f48354bb..bac67c3b2 100644 --- a/plinth/modules/email/views.py +++ b/plinth/modules/email/views.py @@ -25,22 +25,14 @@ class EmailAppView(AppView): def get_context_data(self, **kwargs): """Add additional context data for rendering the template.""" context = super().get_context_data(**kwargs) - try: # Handle error during uninstall of app - context['dns_entries'] = dns.get_entries() - except FileNotFoundError: - pass - + context['dns_entries'] = dns.get_entries() return context def get_initial(self): """Return the initial values to populate in the form.""" initial = super().get_initial() - try: # Handle error during uninstall of app - domains = privileged.domain.get_domains() - initial['primary_domain'] = domains['primary_domain'] - except FileNotFoundError: - pass - + domains = privileged.domain.get_domains() + initial['primary_domain'] = domains['primary_domain'] return initial def form_valid(self, form): diff --git a/plinth/modules/firewall/__init__.py b/plinth/modules/firewall/__init__.py index 2ec3aa70a..1b0340501 100644 --- a/plinth/modules/firewall/__init__.py +++ b/plinth/modules/firewall/__init__.py @@ -85,9 +85,9 @@ class FirewallApp(app_module.App): if 'firewalld' not in packages: return False - # Allow upgrade from any version to 1.2.* + # Allow upgrade from any version to any version below 2.0 package = packages['firewalld'] - if Version(package['new_version']) > Version('1.3~'): + if Version(package['new_version']) > Version('2~'): return False install(['firewalld'], force_configuration='new') diff --git a/plinth/modules/gitweb/tests/test_privileged.py b/plinth/modules/gitweb/tests/test_privileged.py index d837ad51a..dc8996f5a 100644 --- a/plinth/modules/gitweb/tests/test_privileged.py +++ b/plinth/modules/gitweb/tests/test_privileged.py @@ -1,6 +1,8 @@ # SPDX-License-Identifier: AGPL-3.0-or-later """Test module for gitweb module operations.""" +import pathlib + import pytest from django.forms import ValidationError @@ -16,6 +18,8 @@ REPO_DATA = { pytestmark = pytest.mark.usefixtures('mock_privileged') privileged_modules_to_mock = ['plinth.modules.gitweb.privileged'] +git_installed = pytest.mark.skipif(not pathlib.Path('/usr/bin/git').exists(), + reason='git is not installed') @pytest.fixture(autouse=True) @@ -36,6 +40,7 @@ def fixture_existing_repo(): keep_ownership=True, is_private=True) +@git_installed def test_create_repo(): """Test creating a repository.""" privileged.create_repo(name=REPO_NAME, description='', owner='', @@ -47,6 +52,7 @@ def test_create_repo(): assert default_branch +@git_installed def test_change_repo_medatada(existing_repo): """Test change a metadata of the repository.""" new_data = { @@ -65,6 +71,7 @@ def test_change_repo_medatada(existing_repo): assert repo == new_data +@git_installed def test_rename_repository(existing_repo): """Test renaming a repository.""" new_name = 'Test-repo_2' @@ -77,6 +84,7 @@ def test_rename_repository(existing_repo): assert repo['name'] == new_name +@git_installed def test_get_branches(existing_repo): """Test getting all the branches of the repository.""" result = privileged.get_branches(REPO_NAME) @@ -85,6 +93,7 @@ def test_get_branches(existing_repo): assert result['branches'] == [] +@git_installed def test_delete_repository(existing_repo): """Test deleting a repository.""" privileged.delete_repo(REPO_NAME) diff --git a/plinth/modules/samba/tests/test_views.py b/plinth/modules/samba/tests/test_views.py index 70dd0c061..e7936dff6 100644 --- a/plinth/modules/samba/tests/test_views.py +++ b/plinth/modules/samba/tests/test_views.py @@ -91,11 +91,11 @@ def make_request(request, view, **kwargs): def test_samba_shares_view(rf): """Test that a share list has correct view data.""" - with patch('plinth.views.AppView.get_context_data', return_value={ - 'is_enabled': True - }), patch('plinth.modules.samba.get_users', - return_value=USERS), patch('plinth.modules.storage.get_mounts', - return_value=DISKS): + with (patch('plinth.views.AppView.get_context_data', + return_value={'is_enabled': True}), + patch('plinth.modules.samba.get_users', return_value=USERS), + patch('plinth.modules.storage.get_mounts', return_value=DISKS), + patch('plinth.views.AppView.app', return_value=None)): view = views.SambaAppView.as_view() response, _ = make_request(rf.get(''), view) diff --git a/plinth/modules/tor/privileged.py b/plinth/modules/tor/privileged.py index d799e4739..0e64bda23 100644 --- a/plinth/modules/tor/privileged.py +++ b/plinth/modules/tor/privileged.py @@ -14,8 +14,7 @@ import augeas from plinth import action_utils from plinth.actions import privileged -from plinth.modules.tor.utils import (APT_TOR_PREFIX, get_augeas, - get_real_apt_uri_path, iter_apt_uris) +from plinth.modules.tor.utils import APT_TOR_PREFIX, get_augeas, iter_apt_uris SERVICE_FILE = '/etc/firewalld/services/tor-{0}.xml' TOR_CONFIG = '/files/etc/tor/instances/plinth/torrc' @@ -415,7 +414,6 @@ def _enable_apt_transport_tor(): """Enable package download over Tor.""" aug = get_augeas() for uri_path in iter_apt_uris(aug): - uri_path = get_real_apt_uri_path(aug, uri_path) uri = aug.get(uri_path) if uri.startswith('http://') or uri.startswith('https://'): aug.set(uri_path, APT_TOR_PREFIX + uri) @@ -432,7 +430,6 @@ def _disable_apt_transport_tor(): pass for uri_path in iter_apt_uris(aug): - uri_path = get_real_apt_uri_path(aug, uri_path) uri = aug.get(uri_path) if uri.startswith(APT_TOR_PREFIX): aug.set(uri_path, uri[len(APT_TOR_PREFIX):]) diff --git a/plinth/modules/tor/utils.py b/plinth/modules/tor/utils.py index 8dba7d8da..ff53b9c9a 100644 --- a/plinth/modules/tor/utils.py +++ b/plinth/modules/tor/utils.py @@ -1,7 +1,6 @@ # SPDX-License-Identifier: AGPL-3.0-or-later """Tor utility functions.""" -import glob import itertools import augeas @@ -13,7 +12,8 @@ from plinth.modules.names.components import DomainName from . import privileged APT_SOURCES_URI_PATHS = ('/files/etc/apt/sources.list/*/uri', - '/files/etc/apt/sources.list.d/*/*/uri') + '/files/etc/apt/sources.list.d/*/*/uri', + '/files/etc/apt/sources.list.d/*/*/URIs/*') APT_TOR_PREFIX = 'tor+' @@ -63,28 +63,6 @@ def iter_apt_uris(aug): [aug.match(path) for path in APT_SOURCES_URI_PATHS]) -def get_real_apt_uri_path(aug, path): - """Return the actual path which contains APT URL. - - XXX: This is a workaround for Augeas bug parsing Apt source files - with '[options]'. Remove this workaround after Augeas lens is - fixed. - """ - uri = aug.get(path) - if uri[0] == '[': - parent_path = path.rsplit('/', maxsplit=1)[0] - skipped = False - for child_path in aug.match(parent_path + '/*')[1:]: - if skipped: - return child_path - - value = aug.get(child_path) - if value[-1] == ']': - skipped = True - - return path - - def get_augeas(): """Return an instance of Augeaus for processing APT configuration.""" aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + @@ -94,20 +72,16 @@ def get_augeas(): '/etc/apt/sources.list') aug.set('/augeas/load/Aptsources/incl[last() + 1]', '/etc/apt/sources.list.d/*.list') + aug.set('/augeas/load/Aptsources822/lens', 'Aptsources822.lns') + aug.set('/augeas/load/Aptsources822/incl[last() + 1]', + '/etc/apt/sources.list.d/*.sources') aug.load() - # Currently, augeas does not handle Deb822 format, it error out. + # Check for any errors in parsing sources lists. if aug.match('/augeas/files/etc/apt/sources.list/error') or \ aug.match('/augeas/files/etc/apt/sources.list.d//error'): raise Exception('Error parsing sources list') - # Starting with Apt 1.1, /etc/apt/sources.list.d/*.sources will - # contain files with Deb822 format. If they are found, error out - # for now. XXX: Provide proper support Deb822 format with a new - # Augeas lens. - if glob.glob('/etc/apt/sources.list.d/*.sources'): - raise Exception('Can not handle Deb822 source files') - return aug @@ -116,12 +90,10 @@ def is_apt_transport_tor_enabled(): try: aug = get_augeas() except Exception: - # If there was an error with parsing or there are Deb822 - # files. + # If there was an error with parsing. return False for uri_path in iter_apt_uris(aug): - uri_path = get_real_apt_uri_path(aug, uri_path) uri = aug.get(uri_path) if not uri.startswith(APT_TOR_PREFIX) and \ (uri.startswith('http://') or uri.startswith('https://')): diff --git a/plinth/modules/upgrades/data/usr/share/augeas/lenses/aptsources822.aug b/plinth/modules/upgrades/data/usr/share/augeas/lenses/aptsources822.aug new file mode 100644 index 000000000..b9afd4959 --- /dev/null +++ b/plinth/modules/upgrades/data/usr/share/augeas/lenses/aptsources822.aug @@ -0,0 +1,104 @@ +(* +Module: Aptsources822 + Augeas module for souces list (Deb822 style) for Apt package manager + +Authors: + James Valleroy + Sunil Mohan Adapa + +About: Reference + 1. Deb822(5): + https://manpages.debian.org/bullseye/dpkg-dev/deb822.5.en.html + 2. sources.list(5): + https://manpages.debian.org/bullseye/apt/sources.list.5.en.html + +About: License + This file is licensed under the LGPLv2+, like the rest of Augeas. + +About: Configuration files + This lens applies to files in /etc/apt/sources.list.d/ ending with the + extension .sources. See . + +*) + + +module Aptsources822 = + +autoload xfm + +(* Variable: single_value_field_name + Names of known fields for which only a single value is allowed. *) +let single_value_field_name = /(Enabled|PDiffs|By-Hash|Allow-Insecure|Allow-Weak|Allow-Downgrade-To-Insecure|Trusted|Check-Valid-Until|Valid-Until-Min|Valid-Until-Max|Check-Date|Date-Max-Future|InRelease-Path)/ + +(* Variable: multi_value_field_name + Names of known fields for which multiple values are allowed and names of + unknown fields. Unknown fields are assumed to contain multiple values as + that is the safest assumption. + + According to deb822(5) man page, "The field name is composed of US-ASCII + characters excluding control characters, space, and colon (i.e., characters + in the ranges U+0021 ‘!’ through U+0039 ‘9’, and U+003B ‘;’ through U+007E + ‘~’, inclusive). Field names must not begin with the comment character + (U+0023 ‘#’), nor with the hyphen character (U+002D ‘-’)." *) +let multi_value_field_name = /[!"$-,.-9;-~][!-9;-~]*/ - single_value_field_name + +(* Variable: field_value + Value that a field can contain. Deb822 styles sources list files defines some + fields to have multiple values separated by space, tab or a newline. *) +let field_value = /[!-Z\\^-~][!-Z\\^-~]*/ + +(* Variable: empty_line + Lens for an empty line separating two stanzas. It can't be a comment. Only + tabs and spaces are allowed. *) +let empty_line = Util.empty_generic /[ \t]*/ + +(* Variable: name_value_separator + Lens for separating a name and value. Field name is followed by a ':' and + then optionally space. The file format also allow for a value to be on a + new line when the new line starts with space or a tab. *) +let name_value_separator = Sep.colon . del (Rx.opt_space . /(\n[ \t])?/) " " + +(* Variable: field_value_with_newline + Lens for value that followed by a new line and a space. This indicates that + another value follows it. *) +let field_value_with_newline = [seq "item" . store (field_value . /\n/) . + del /[\t ]/ " "] + +(* Variable: field_value_with_separator + Lens for value that followed by a space or a tab. This indicates that another + value follows it. *) +let field_value_with_separator = [seq "item" . store field_value . del Rx.space " "] + +(* Variable: field_value_with_eol + Lens for value that followed by an end-of-line. This indicates that this is + the last value for this field. *) +let field_value_with_eol = [seq "item" . store field_value . Util.eol] + +(* Variable: single_value_field + Lens for a field (field name, separator and field value) with only a single + value. *) +let single_value_field = [ key single_value_field_name . name_value_separator . + store field_value . Util.eol ] + +(* Variable: multi_value_field + Lens for a field (field name, separator and field value) with multiple values + *) +let multi_value_field = [ key multi_value_field_name . name_value_separator . + counter "item" . (field_value_with_newline | field_value_with_separator)* . + field_value_with_eol ] + +(* Variable: stanza + Lens for a stanza that describes one or more sources for apt. *) +let stanza = [ seq "source" . (single_value_field | multi_value_field | + Util.comment_noindent)+ ] + +(* Variable: lns + Lens for parsing the entire apt sources file in Deb822 format. *) +let lns = stanza . (empty_line . stanza)* + +(* Variable: filter + All files in the sources.list.d directory are files describing sources. + However, only those ending with .sources extension are in Deb822 format. *) +let filter = incl "/etc/apt/sources.list.d/*.sources" + +let xfm = transform lns filter diff --git a/plinth/modules/upgrades/data/usr/share/augeas/lenses/tests/test_aptsources822.aug b/plinth/modules/upgrades/data/usr/share/augeas/lenses/tests/test_aptsources822.aug new file mode 100644 index 000000000..0c4b10d12 --- /dev/null +++ b/plinth/modules/upgrades/data/usr/share/augeas/lenses/tests/test_aptsources822.aug @@ -0,0 +1,120 @@ +module Test_Aptsources822 = + +(* Test multiple values, multi-line values and multiple source stanzas *) +let sources1 = "Enabled: yes +Types: deb deb-src +URIs: http://deb.debian.org/debian +Suites: bullseye + bullseye-backports +Components: main non-free-firmware +Allow-Insecure: no +Signed-By: + -----BEGIN PGP PUBLIC KEY BLOCK----- + . + mDMEYCQjIxYJKwYBBAHaRw8BAQdAD/P5Nvvnvk66SxBBHDbhRml9ORg1WV5CvzKY + CuMfoIS0BmFiY2RlZoiQBBMWCgA4FiEErCIG1VhKWMWo2yfAREZd5NfO31cFAmAk + IyMCGyMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQREZd5NfO31fbOwD6ArzS + dM0Dkd5h2Ujy1b6KcAaVW9FOa5UNfJ9FFBtjLQEBAJ7UyWD3dZzhvlaAwunsk7DG + 3bHcln8DMpIJVXht78sL + =IE0r + -----END PGP PUBLIC KEY BLOCK----- + +Enabled: no +URIs: http://dl.google.com/linux/chrome/deb +Suites: stable +Components: main +Architectures: amd64 +" +test Aptsources822.lns get sources1 = + { "1" + { "Enabled" = "yes" } + { "Types" + { "1" = "deb" } + { "2" = "deb-src" } + } + { "URIs" { "1" = "http://deb.debian.org/debian" } } + { "Suites" + { "1" = "bullseye\n" } + { "2" = "bullseye-backports" } + } + { "Components" + { "1" = "main" } + { "2" = "non-free-firmware" } + } + { "Allow-Insecure" = "no" } + { "Signed-By" + { "1" = "-----BEGIN" } + { "2" = "PGP" } + { "3" = "PUBLIC" } + { "4" = "KEY" } + { "5" = "BLOCK-----\n" } + { "6" = ".\n" } + { "7" = "mDMEYCQjIxYJKwYBBAHaRw8BAQdAD/P5Nvvnvk66SxBBHDbhRml9ORg1WV5CvzKY\n" } + { "8" = "CuMfoIS0BmFiY2RlZoiQBBMWCgA4FiEErCIG1VhKWMWo2yfAREZd5NfO31cFAmAk\n" } + { "9" = "IyMCGyMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQREZd5NfO31fbOwD6ArzS\n" } + { "10" = "dM0Dkd5h2Ujy1b6KcAaVW9FOa5UNfJ9FFBtjLQEBAJ7UyWD3dZzhvlaAwunsk7DG\n" } + { "11" = "3bHcln8DMpIJVXht78sL\n" } + { "12" = "=IE0r\n" } + { "13" = "-----END" } + { "14" = "PGP" } + { "15" = "PUBLIC" } + { "16" = "KEY" } + { "17" = "BLOCK-----" } + } + } + { } + { "2" + { "Enabled" = "no" } + { "URIs" { "1" = "http://dl.google.com/linux/chrome/deb" } } + { "Suites" { "1" = "stable" } } + { "Components" { "1" = "main" } } + { "Architectures" { "1" = "amd64" } } + } + +let sources2 = "Enabled: yes +Types: deb deb-src +URIs: http://archive.ubuntu.com/ubuntu +Suites: disco disco-updates disco-security disco-backports +Components: main universe multiverse restricted + +Enabled: yes +Types: deb +URIs: http://ppa.launchpad.net/system76/pop/ubuntu +Suites: disco +Components: main +" +test Aptsources822.lns get sources2 = + { "1" + { "Enabled" = "yes" } + { "Types" + { "1" = "deb" } + { "2" = "deb-src" } + } + { "URIs" { "1" = "http://archive.ubuntu.com/ubuntu" } } + { "Suites" + { "1" = "disco" } + { "2" = "disco-updates" } + { "3" = "disco-security" } + { "4" = "disco-backports" } + } + { "Components" + { "1" = "main" } + { "2" = "universe" } + { "3" = "multiverse" } + { "4" = "restricted" } + } + } + { } + { "2" + { "Enabled" = "yes" } + { "Types" { "1" = "deb" } } + { "URIs" { "1" = "http://ppa.launchpad.net/system76/pop/ubuntu" } } + { "Suites" { "1" = "disco" } } + { "Components" { "1" = "main" } } + } + +(* Test adding nodes to tree *) +test Aptsources822.lns put "Types: deb\n" after set "/1/Enabled" "yes" = "Types: deb\nEnabled: yes\n" +test Aptsources822.lns put "Types: deb\n" after + set "/1/URIs/1" "uri1\n"; + set "/1/URIs/2" "uri2" = "Types: deb\nURIs: uri1\n uri2\n" diff --git a/plinth/modules/upgrades/tests/test_functional.py b/plinth/modules/upgrades/tests/test_functional.py index 61c68cc63..61a64375d 100644 --- a/plinth/modules/upgrades/tests/test_functional.py +++ b/plinth/modules/upgrades/tests/test_functional.py @@ -4,6 +4,7 @@ Functional, browser based tests for upgrades app. """ import pytest + from plinth.tests import functional pytestmark = [pytest.mark.system, pytest.mark.essential, pytest.mark.upgrades] @@ -51,8 +52,7 @@ def _enable_automatic(browser, should_enable): else: checkbox_element.uncheck() - update_setup = browser.find_by_css('.btn-primary') - functional.submit(browser, element=update_setup) + functional.submit(browser, form_class='form-configuration') def _get_automatic(browser): diff --git a/plinth/modules/users/tests/test_views.py b/plinth/modules/users/tests/test_views.py index a622c7a58..badb05c59 100644 --- a/plinth/modules/users/tests/test_views.py +++ b/plinth/modules/users/tests/test_views.py @@ -84,8 +84,9 @@ def make_request(request, view, as_admin=True, **kwargs): def test_users_list_view(rf): """Test that users list view has correct view data.""" - with patch('plinth.views.AppView.get_context_data', - return_value={'is_enabled': True}): + with (patch('plinth.views.AppView.get_context_data', + return_value={'is_enabled': True}), + patch('plinth.views.AppView.app', return_value=None)): view = views.UserList.as_view() response, messages = make_request(rf.get('/'), view) diff --git a/plinth/templates/app-operations.html b/plinth/templates/app-operations.html new file mode 100644 index 000000000..329878bc2 --- /dev/null +++ b/plinth/templates/app-operations.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} + +{# Template to show an App with operations, used by views.AppOperationsView #} + +{% block content %} + + {% include "app-header.html" %} + + {% include "toolbar.html" %} + + {% include "operations.html" %} + +{% endblock %} diff --git a/plinth/templates/app.html b/plinth/templates/app.html index 8f9beef85..bc30d849a 100644 --- a/plinth/templates/app.html +++ b/plinth/templates/app.html @@ -14,53 +14,49 @@ {% include "app-header.html" %} - {% if not operations %} - {% include "toolbar.html" with enabled=is_enabled %} + {% include "toolbar.html" with enabled=is_enabled %} - {% block subsubmenu %} - {% if subsubmenu %} - {% show_subsubmenu subsubmenu %} - {% endif %} - {% endblock %} + {% block subsubmenu %} + {% if subsubmenu %} + {% show_subsubmenu subsubmenu %} + {% endif %} + {% endblock %} - {% block status %} - {% if is_running is not None and not is_running %} - - {% endif %} - {% endblock %} + {% block status %} + {% if is_running is not None and not is_running %} + + {% endif %} + {% endblock %} - {% block internal_zone %} - {% include "internal-zone.html" %} - {% endblock %} + {% block internal_zone %} + {% include "internal-zone.html" %} + {% endblock %} - {% block port_forwarding_info %} - {% include "port-forwarding-info.html" with service_name=app_info.name %} - {% endblock %} + {% block port_forwarding_info %} + {% include "port-forwarding-info.html" with service_name=app_info.name %} + {% endblock %} - {% block configuration %} - {% if form %} -

{% trans "Configuration" %}

+ {% block configuration %} + {% if form %} +

{% trans "Configuration" %}

-
- {% csrf_token %} + + {% csrf_token %} - {{ form|bootstrap }} + {{ form|bootstrap }} - -
- {% endif %} - {% endblock %} + + + {% endif %} + {% endblock %} - {% block extra_content %} - {% endblock %} - {% else %} - {% include "operations.html" %} - {% endif %} + {% block extra_content %} + {% endblock %} {% endblock %} diff --git a/plinth/tests/functional/__init__.py b/plinth/tests/functional/__init__.py index 508c4980d..002132d26 100644 --- a/plinth/tests/functional/__init__.py +++ b/plinth/tests/functional/__init__.py @@ -441,8 +441,7 @@ def app_can_be_disabled(browser, app_name): def set_domain_name(browser, domain_name): nav_to_module(browser, 'config') browser.find_by_id('id_domainname').fill(domain_name) - update_setup = browser.find_by_css('.btn-primary[type="submit"]') - submit(browser, element=update_setup) + submit(browser, form_class='form-configuration') ######################## @@ -493,8 +492,7 @@ def running_inside_container(): def set_hostname(browser, hostname): nav_to_module(browser, 'config') browser.find_by_id('id_hostname').fill(hostname) - update_setup = browser.find_by_css('.btn-primary') - submit(browser, element=update_setup) + submit(browser, form_class='form-configuration') def set_advanced_mode(browser, mode): @@ -505,8 +503,7 @@ def set_advanced_mode(browser, mode): else: advanced_mode.uncheck() - update_setup = browser.find_by_css('.btn-primary') - submit(browser, element=update_setup) + submit(browser, form_class='form-configuration') #################### diff --git a/plinth/views.py b/plinth/views.py index aed1278a0..b7c12c0d1 100644 --- a/plinth/views.py +++ b/plinth/views.py @@ -162,6 +162,15 @@ class AppView(FormView): super().__init__(*args, **kwargs) self._common_status = None + def dispatch(self, request, *args, **kwargs): + """If operations are running on the app, use a different view.""" + operations = operation.manager.filter(self.app.app_id) + if operations: + view = AppOperationsView.as_view(app_id=self.app.app_id) + return view(request, *args, **kwargs) + + return super().dispatch(request, *args, **kwargs) + def post(self, request, *args, **kwargs): """Handle app enable/disable button separately.""" if 'app_enable_disable_button' not in request.POST: @@ -258,10 +267,7 @@ class AppView(FormView): context['port_forwarding_info'] = get_port_forwarding_info(self.app) context['app_enable_disable_form'] = self.get_enable_disable_form() context['show_uninstall'] = not self.app.info.is_essential - context['operations'] = operation.manager.filter(self.app.app_id) context['refresh_page_sec'] = None - if context['operations']: - context['refresh_page_sec'] = 3 from plinth.modules.firewall.components import Firewall context['firewall'] = self.app.get_components_of_type(Firewall) @@ -269,6 +275,32 @@ class AppView(FormView): return context +class AppOperationsView(TemplateView): + """View to show app page when some app operations are running.""" + app_id = None # Set when app is instantiated. + template_name = "app-operations.html" + + @property + def app(self): + """Return the app for which this view is configured.""" + if not self.app_id: + raise ImproperlyConfigured('Missing attribute: app_id') + + return app_module.App.get(self.app_id) + + def get_context_data(self, *args, **kwargs): + """Add additional context data for template.""" + context = super().get_context_data(*args, **kwargs) + context['app_id'] = self.app.app_id + context['app_info'] = self.app.info + context['operations'] = operation.manager.filter(self.app.app_id) + context['refresh_page_sec'] = 0 + if context['operations']: + context['refresh_page_sec'] = 3 + + return context + + class SetupView(TemplateView): """View to prompt and setup applications.""" template_name = 'setup.html'