mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-08-26 12:46:08 +00:00
Compare commits
7 Commits
5cebe7ffe0
...
5c42e04813
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5c42e04813 | ||
|
|
91296b6e81 | ||
|
|
449b78ae81 | ||
|
|
495f5f8a0d | ||
|
|
2bd33ed428 | ||
|
|
ae50ceaeb0 | ||
|
|
dc3439fd70 |
16
debian/changelog
vendored
16
debian/changelog
vendored
@ -1,3 +1,19 @@
|
||||
freedombox (26.7.1) unstable; urgency=medium
|
||||
|
||||
[ Frederico Gomes ]
|
||||
* radicale: Enable lc_username for case-insensitive auth
|
||||
|
||||
[ Sunil Mohan Adapa ]
|
||||
* radicale, bepasty: Fix issue with failed diagnostic test
|
||||
* radicale: Fix issue with parsing new configuration file
|
||||
* radicale: tests: functional: Better checking for well-known URLs
|
||||
|
||||
[ James Valleroy ]
|
||||
* locale: Update translation strings
|
||||
* doc: Fetch latest manual
|
||||
|
||||
-- James Valleroy <jvalleroy@mailbox.org> Tue, 28 Apr 2026 18:26:38 -0400
|
||||
|
||||
freedombox (26.7) unstable; urgency=medium
|
||||
|
||||
[ Burak Yavuz ]
|
||||
|
||||
@ -8,6 +8,13 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
|
||||
|
||||
The following are the release notes for each !FreedomBox version.
|
||||
|
||||
== FreedomBox 26.7.1 (2026-04-28) ==
|
||||
|
||||
* radicale, bepasty: Fix issue with failed diagnostic test
|
||||
* radicale: Enable lc_username for case-insensitive auth
|
||||
* radicale: Fix issue with parsing new configuration file
|
||||
* radicale: tests: functional: Better checking for well-known URLs
|
||||
|
||||
== FreedomBox 26.7 (2026-04-20) ==
|
||||
|
||||
* debian: tests: Add test to access interface status
|
||||
|
||||
@ -8,6 +8,13 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
|
||||
|
||||
The following are the release notes for each !FreedomBox version.
|
||||
|
||||
== FreedomBox 26.7.1 (2026-04-28) ==
|
||||
|
||||
* radicale, bepasty: Fix issue with failed diagnostic test
|
||||
* radicale: Enable lc_username for case-insensitive auth
|
||||
* radicale: Fix issue with parsing new configuration file
|
||||
* radicale: tests: functional: Better checking for well-known URLs
|
||||
|
||||
== FreedomBox 26.7 (2026-04-20) ==
|
||||
|
||||
* debian: tests: Add test to access interface status
|
||||
|
||||
@ -3,4 +3,4 @@
|
||||
Package init file.
|
||||
"""
|
||||
|
||||
__version__ = '26.7'
|
||||
__version__ = '26.7.1'
|
||||
|
||||
@ -120,14 +120,6 @@ def service_disable(service_name: str, check: bool = False):
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
if service_name.endswith('.socket'):
|
||||
# Instead, may need to query the unit for associated .service file.
|
||||
base_name = service_name.rpartition('.')[0]
|
||||
try:
|
||||
service_stop(f'{base_name}.service', check=check)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
|
||||
def service_mask(service_name: str, check: bool = False):
|
||||
"""Mask a service"""
|
||||
@ -143,25 +135,62 @@ def service_start(service_name: str, check: bool = False):
|
||||
"""Start a service with systemd."""
|
||||
service_action(service_name, 'start', check=check)
|
||||
|
||||
# When starting a .socket unit, there is not need to start the .service
|
||||
# unit as it will be automatically started when a request is received on
|
||||
# the socket.
|
||||
|
||||
|
||||
def _get_service_unit(socket_name: str) -> str:
|
||||
"""Return the .service unit name for a .socket unit."""
|
||||
# Instead, may need to query the unit for associated .service file.
|
||||
base_name = socket_name.rpartition('.')[0]
|
||||
return f'{base_name}.service'
|
||||
|
||||
|
||||
def service_stop(service_name: str, check: bool = False):
|
||||
"""Stop a service with systemd."""
|
||||
service_action(service_name, 'stop', check=check)
|
||||
|
||||
# When stopping a .socket unit, most of the time, we must also stop
|
||||
# .service unit. This frees up resources when disabling the app. It also
|
||||
# stops using resources that are being backed up.
|
||||
if service_name.endswith('.socket'):
|
||||
service_action(_get_service_unit(service_name), 'stop', check=check)
|
||||
|
||||
|
||||
def service_restart(service_name: str, check: bool = False):
|
||||
"""Restart a service with systemd."""
|
||||
service_action(service_name, 'restart', check=check)
|
||||
if not service_name.endswith('.socket'):
|
||||
service_action(service_name, 'restart', check=check)
|
||||
else:
|
||||
# When restarting a .socket unit, most of the time, we actually want to
|
||||
# restart the corresponding .service unit. This reloads the
|
||||
# configuration changes as needed. To restart, all we need to do stop
|
||||
# the service. It will be automatically started again by .socket unit.
|
||||
service_action(_get_service_unit(service_name), 'stop', check=check)
|
||||
|
||||
|
||||
def service_try_restart(service_name: str, check: bool = False):
|
||||
"""Try to restart a service with systemd."""
|
||||
service_action(service_name, 'try-restart', check=check)
|
||||
if not service_name.endswith('.socket'):
|
||||
service_action(service_name, 'try-restart', check=check)
|
||||
else:
|
||||
# When try-restarting a .socket unit, most of the time, we actually
|
||||
# want to restart the corresponding .service unit. This reloads the
|
||||
# configuration changes as needed. To restart, all we need to do stop
|
||||
# the service. It will be automatically started again by .socket unit.
|
||||
service_action(_get_service_unit(service_name), 'stop', check=check)
|
||||
|
||||
|
||||
def service_reload(service_name: str, check: bool = False):
|
||||
"""Reload a service with systemd."""
|
||||
service_action(service_name, 'reload', check=check)
|
||||
if not service_name.endswith('.socket'):
|
||||
service_action(service_name, 'reload', check=check)
|
||||
else:
|
||||
# When reloading a .socket unit, most of the time, we actually want to
|
||||
# reload the corresponding .service unit. This reloads the
|
||||
# configuration changes as needed.
|
||||
service_action(_get_service_unit(service_name), 'reload', check=check)
|
||||
|
||||
|
||||
def service_try_reload_or_restart(service_name: str, check: bool = False):
|
||||
@ -169,7 +198,14 @@ def service_try_reload_or_restart(service_name: str, check: bool = False):
|
||||
|
||||
Do nothing if service is not running.
|
||||
"""
|
||||
service_action(service_name, 'try-reload-or-restart', check=check)
|
||||
if not service_name.endswith('.socket'):
|
||||
service_action(service_name, 'try-reload-or-restart', check=check)
|
||||
else:
|
||||
# When reloading a .socket unit, most of the time, we actually want to
|
||||
# reload the corresponding .service unit. This reloads the
|
||||
# configuration changes as needed.
|
||||
service_action(_get_service_unit(service_name),
|
||||
'try-reload-or-restart', check=check)
|
||||
|
||||
|
||||
def service_reset_failed(service_name: str, check: bool = False):
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-04-16 02:28+0000\n"
|
||||
"Last-Translator: MohammedSaalif <2300031323@kluniversity.in>\n"
|
||||
"Language-Team: Arabic <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6386,7 +6386,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6395,14 +6395,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2020-06-10 15:41+0000\n"
|
||||
"Last-Translator: aiman an <an1f3@hotmail.com>\n"
|
||||
"Language-Team: Arabic (Saudi Arabia) <https://hosted.weblate.org/projects/"
|
||||
@ -6390,7 +6390,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6399,14 +6399,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
@ -6340,7 +6340,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6349,14 +6349,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-12-17 07:00+0000\n"
|
||||
"Last-Translator: 109247019824 "
|
||||
"<109247019824@users.noreply.hosted.weblate.org>\n"
|
||||
@ -6686,7 +6686,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6695,14 +6695,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-04-01 03:02+0000\n"
|
||||
"Last-Translator: MURALA SAI GANESH <saiganeshmurala@gmail.com>\n"
|
||||
"Language-Team: Bengali <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6409,7 +6409,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6418,14 +6418,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-02-06 23:02+0000\n"
|
||||
"Last-Translator: kosagi <marti.torra@natana.cat>\n"
|
||||
"Language-Team: Catalan <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7170,7 +7170,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7179,14 +7179,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-09 10:09+0000\n"
|
||||
"Last-Translator: Jiří Podhorecký <j.podhorecky@volny.cz>\n"
|
||||
"Language-Team: Czech <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7160,7 +7160,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7174,7 +7174,7 @@ msgstr ""
|
||||
"klientská aplikace</a>. K Radicale má přístup každý uživatel s přihlašovacím "
|
||||
"jménem {box_name}."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7184,7 +7184,7 @@ msgstr ""
|
||||
"nových kalendářů a adresářů kontaktů. Nepodporuje přidávání událostí či "
|
||||
"kontaktů, to je třeba dělat v tomu určeném klientovi."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreedomBox UI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
|
||||
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
|
||||
"Language-Team: Danish <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7365,7 +7365,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid ""
|
||||
#| "Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7385,14 +7385,14 @@ msgstr ""
|
||||
"carddav-clients\">understøttet klient-applikation</a>. Radicale kan tilgås "
|
||||
"af enhver bruger der har et log ind til {box_name}."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreedomBox UI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-09 10:09+0000\n"
|
||||
"Last-Translator: Dietmar <sagen@permondes.de>\n"
|
||||
"Language-Team: German <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7303,7 +7303,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7317,7 +7317,7 @@ msgstr ""
|
||||
"clients\">unterstützte Client Software</a> notwendig. Radicale kann von "
|
||||
"jedem Benutzer mit einem {box_name}-Konto verwendet werden."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7328,7 +7328,7 @@ msgstr ""
|
||||
"Kontaktdaten wird nicht unterstützt; dies muss über einen separaten Client "
|
||||
"erfolgen."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -6341,7 +6341,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6350,14 +6350,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-02-22 13:17+0000\n"
|
||||
"Last-Translator: James Valleroy <jvalleroy@mailbox.org>\n"
|
||||
"Language-Team: Greek <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7441,7 +7441,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid ""
|
||||
#| "Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7460,7 +7460,7 @@ msgstr ""
|
||||
"clients/\">πελάτη</a> . Το Radicale μπορεί να προσεγγιστεί από οποιονδήποτε "
|
||||
"χρήστη με {box_name} πιστοποιητικά."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7471,7 +7471,7 @@ msgstr ""
|
||||
"γεγονότων ή επαφών, το οποίο πρέπει να γίνει χρησιμοποιώντας ένα ξεχωριστό "
|
||||
"πελάτη."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2024-11-01 17:00+0000\n"
|
||||
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7381,7 +7381,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid ""
|
||||
#| "Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7401,7 +7401,7 @@ msgstr ""
|
||||
"supported-clients\">aplicación cliente soportada</a>. Cualquier persona "
|
||||
"autenticada en {box_name} puede acceder a Radicale."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7411,7 +7411,7 @@ msgstr ""
|
||||
"de nuevos calendarios y agendas. No soporta añadir eventos o contactos, que "
|
||||
"debe hacerse usando un cliente separado."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-01-09 20:01+0000\n"
|
||||
"Last-Translator: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Estonian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6384,7 +6384,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6393,14 +6393,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
|
||||
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
|
||||
"Language-Team: Persian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7062,7 +7062,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7071,14 +7071,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Plinth 0.6\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2016-01-31 22:24+0530\n"
|
||||
"Last-Translator: Sunil Mohan Adapa <sunil@medhas.org>\n"
|
||||
"Language-Team: Plinth Developers <freedombox-"
|
||||
@ -7390,7 +7390,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7399,14 +7399,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreedomBox UI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-16 15:09+0000\n"
|
||||
"Last-Translator: Coucouf <coucouf@coucouf.fr>\n"
|
||||
"Language-Team: French <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7326,7 +7326,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7342,7 +7342,7 @@ msgstr ""
|
||||
"a>. Tous les utilisateur disposant d’un compte sur la {box_name} ont accès à "
|
||||
"Radicale."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7353,7 +7353,7 @@ msgstr ""
|
||||
"charge l’ajout d’événements ou de contacts, opérations qui doivent être "
|
||||
"réalisées avec un client dédié."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2022-12-30 10:51+0000\n"
|
||||
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
|
||||
"Language-Team: Galician <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6385,7 +6385,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6394,14 +6394,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2021-01-18 12:32+0000\n"
|
||||
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
|
||||
"Language-Team: Gujarati <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6776,7 +6776,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6785,14 +6785,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-03-31 06:09+0000\n"
|
||||
"Last-Translator: bsurajpatra <ankitsuraj1111@gmail.com>\n"
|
||||
"Language-Team: Hindi <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7329,7 +7329,7 @@ msgstr "क्वासेलड्रोइड"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid ""
|
||||
#| "Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7347,14 +7347,14 @@ msgstr ""
|
||||
"radicale.org/clients/\">समर्थित क्लाइंट एप्लिकेशन</a> कि जरुरत है. राडिकैल किसी "
|
||||
"{box_name} यूसर पहुंचा जा सकता है एक लॉगिन के साथ."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "राडिकैल"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-06-04 15:01+0000\n"
|
||||
"Last-Translator: András Szűcs "
|
||||
"<andrascc86288f63c44cb5@users.noreply.hosted.weblate.org>\n"
|
||||
@ -7496,7 +7496,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid ""
|
||||
#| "Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7517,7 +7517,7 @@ msgstr ""
|
||||
"alkalmazásra</a> is. A Radicale elérhető bármely felhasználó számára a "
|
||||
"{box_name} eszközön."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7527,7 +7527,7 @@ msgstr ""
|
||||
"címjegyzékek létrehozását támogatja. Nem támogatja az események vagy "
|
||||
"kapcsolatok hozzáadását, ezeket külön kliens segítségével kell elvégezni."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Indonesian (FreedomBox)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
|
||||
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
|
||||
"Language-Team: Indonesian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7047,7 +7047,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7056,14 +7056,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-18 21:09+0000\n"
|
||||
"Last-Translator: Pierfrancesco Passerini <p.passerini@gmail.com>\n"
|
||||
"Language-Team: Italian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7219,7 +7219,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7233,7 +7233,7 @@ msgstr ""
|
||||
"client supportata</a>. Ogni utente con un profilo {box_name} può accedere a "
|
||||
"Radicale."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7243,7 +7243,7 @@ msgstr ""
|
||||
"nuovi calendari e rubriche. Non supporta l'aggiunta di eventi o contatti, "
|
||||
"che dovranno essere gestiti tramite un client separato."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-10-24 16:02+0000\n"
|
||||
"Last-Translator: Jun Nogata <nogajun@gmail.com>\n"
|
||||
"Language-Team: Japanese <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6348,7 +6348,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6357,14 +6357,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2020-07-16 16:41+0000\n"
|
||||
"Last-Translator: Yogesh <yogesh@karnatakaeducation.org.in>\n"
|
||||
"Language-Team: Kannada <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6343,7 +6343,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6352,14 +6352,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
|
||||
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
|
||||
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6363,7 +6363,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6372,14 +6372,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2022-09-14 17:20+0000\n"
|
||||
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
|
||||
"Language-Team: Latvian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6362,7 +6362,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6371,14 +6371,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -15,7 +15,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreedomBox UI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2024-10-27 23:30+0000\n"
|
||||
"Last-Translator: Sunil Mohan Adapa <sunil@medhas.org>\n"
|
||||
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/"
|
||||
@ -7433,7 +7433,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid ""
|
||||
#| "Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7451,7 +7451,7 @@ msgstr ""
|
||||
"href=\"http://radicale.org/clients/\">støttet klientprogram </a>. Radicale "
|
||||
"kan nås av alle brukere med {box_name}-innlogging."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7461,7 +7461,7 @@ msgstr ""
|
||||
"kalendre og adressebøker. Den tilbyr ikke å legge inn nye hendelser eller "
|
||||
"kontakter, det må gjøres med en egen klient."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-09-17 09:01+0000\n"
|
||||
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
|
||||
"Language-Team: Dutch <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7172,7 +7172,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7186,7 +7186,7 @@ msgstr ""
|
||||
"clienttoepassing</a> nodig. Radicale kan worden benaderd door elke "
|
||||
"{box_name} gebruiker."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7197,7 +7197,7 @@ msgstr ""
|
||||
"gebeurtenissen of contactpersonen, die moeten worden gedaan met behulp van "
|
||||
"een aparte client."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2024-07-13 12:09+0000\n"
|
||||
"Last-Translator: Monika <adamdomenek@protonmail.com>\n"
|
||||
"Language-Team: Polish <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7012,7 +7012,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7021,14 +7021,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-04-09 22:41+0000\n"
|
||||
"Last-Translator: tuliogit <wikigeolog@gmx.com>\n"
|
||||
"Language-Team: Portuguese <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7266,7 +7266,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7280,7 +7280,7 @@ msgstr ""
|
||||
"radicale.org/master.html#supported-clients\"></a> . O Radicale pode "
|
||||
"ser acessado por qualquer usuário com um login {box_name} ."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7290,7 +7290,7 @@ msgstr ""
|
||||
"novos calendários e catálogos de endereços. Não permite adicionar eventos ou "
|
||||
"contatos, o que deve ser feito usando um cliente separado."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radical"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-03-15 18:09+0000\n"
|
||||
"Last-Translator: OwlGale <owlgale@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Russian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7224,7 +7224,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7238,7 +7238,7 @@ msgstr ""
|
||||
"clients\">поддерживаемое клиентское приложение</a>. Доступ к Radicale может "
|
||||
"получить любой пользователь с логином {box_name}."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7248,7 +7248,7 @@ msgstr ""
|
||||
"создание новых календарей и адресных книг. Он не поддерживает добавление "
|
||||
"событий или контактов, для этого требуется отдельный клиент."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2021-04-27 13:32+0000\n"
|
||||
"Last-Translator: HelaBasa <R45XvezA@protonmail.ch>\n"
|
||||
"Language-Team: Sinhala <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6343,7 +6343,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6352,14 +6352,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
|
||||
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
|
||||
"Language-Team: Slovenian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6698,7 +6698,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6707,14 +6707,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 07:09+0000\n"
|
||||
"Last-Translator: Besnik Bleta <besnik@programeshqip.org>\n"
|
||||
"Language-Team: Albanian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7237,7 +7237,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7252,7 +7252,7 @@ msgstr ""
|
||||
"Radicale mund të hyhet nga cilido përdorues me kredenciale hyrjeje në "
|
||||
"{box_name}."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7262,7 +7262,7 @@ msgstr ""
|
||||
"të ri dhe librash adresash. S’mbulon shtim veprimtarish ose kontaktesh, çka "
|
||||
"duhen bërë duke përdorur një tjetër klient."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2022-09-14 17:20+0000\n"
|
||||
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
|
||||
"Language-Team: Serbian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6597,7 +6597,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6606,14 +6606,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-15 10:10+0000\n"
|
||||
"Last-Translator: bittin1ddc447d824349b2 <bittin@reimu.nl>\n"
|
||||
"Language-Team: Swedish <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7176,7 +7176,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7190,7 +7190,7 @@ msgstr ""
|
||||
"användarklient</a>. Radikal kan nås av alla användare med en {box_name} "
|
||||
"inloggning."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7200,7 +7200,7 @@ msgstr ""
|
||||
"skapandet av nya kalendrar och adressböcker. Det stöder inte att lägga till "
|
||||
"händelser eller kontakter, som måste göras med hjälp av en separat klient."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-03-02 19:53+0000\n"
|
||||
"Last-Translator: James Valleroy <jvalleroy@mailbox.org>\n"
|
||||
"Language-Team: Tamil <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7140,7 +7140,7 @@ msgstr "குவாசெல்ட்ராய்டு"
|
||||
msgid "IRC"
|
||||
msgstr "Irc"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7153,7 +7153,7 @@ msgstr ""
|
||||
"radicale.org/master.html#supported-comients\"> ஆதரிக்கப்பட்ட கிளையன்ட் பயன்பாடு </"
|
||||
"a> தேவை. {box_name} உள்நுழைவுடன் எந்த பயனரும் ராடிகலை அணுகலாம்."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7163,7 +7163,7 @@ msgstr ""
|
||||
"முகவரி புத்தகங்களை உருவாக்குவதை மட்டுமே ஆதரிக்கிறது. இது நிகழ்வுகள் அல்லது "
|
||||
"தொடர்புகளைச் சேர்ப்பதை ஆதரிக்காது, இது ஒரு தனி கிளையண்டைப் பயன்படுத்தி செய்யப்பட வேண்டும்."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "தீவிரமான"
|
||||
|
||||
@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreedomBox UI\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-05-14 17:03+0000\n"
|
||||
"Last-Translator: Sripath Roy Koganti <sripathroy@swecha.net>\n"
|
||||
"Language-Team: Telugu <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7011,7 +7011,7 @@ msgstr "క్వాసెల్ డ్రొఇడ్"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7024,7 +7024,7 @@ msgstr ""
|
||||
"href=\"https://radicale.org/master.html#supported-clients\">మద్దతు ఉన్న క్లయింట్ "
|
||||
"అప్లికేషన్</a> అవసరం. {box_name} లాగిన్ ఉన్న ఏ యూజర్ అయినా Radicaleని యాక్సెస్ చేయవచ్చు."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7034,7 +7034,7 @@ msgstr ""
|
||||
"రూపొందించడానికి మాత్రమే మద్దతు ఇస్తుంది. ఈవెంట్లు లేదా పరిచయాలను జోడించడానికి ఇది మద్దతు ఇవ్వదు, ఇది "
|
||||
"ప్రత్యేక క్లయింట్ని ఉపయోగించి చేయాలి."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "రాడికేల్"
|
||||
|
||||
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-09 10:09+0000\n"
|
||||
"Last-Translator: Burak Yavuz <hitowerdigit@hotmail.com>\n"
|
||||
"Language-Team: Turkish <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7191,7 +7191,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7205,7 +7205,7 @@ msgstr ""
|
||||
"istemci uygulaması</a> gereklidir. Radicale'ye {box_name} oturum açma adı "
|
||||
"ile herhangi bir kullanıcı tarafından erişilebilir."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7215,7 +7215,7 @@ msgstr ""
|
||||
"temel bir web arayüzü sağlar. Ayrı bir istemci kullanılarak yapılması "
|
||||
"zorunlu olan olayların veya kişilerin eklenmesini desteklemez."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-12-17 07:00+0000\n"
|
||||
"Last-Translator: Максим Горпиніч <gorpinicmaksim0@gmail.com>\n"
|
||||
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -7224,7 +7224,7 @@ msgstr "Quasseldroid"
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -7238,7 +7238,7 @@ msgstr ""
|
||||
"clients\">підтримувана клієнтська програма</a>. Radicale може отримати "
|
||||
"доступ будь-який користувач із логіном {box_name}."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
@ -7248,7 +7248,7 @@ msgstr ""
|
||||
"календарів та адресних книг. Він не підтримує додавання подій або контактів, "
|
||||
"для цього необхідно використовувати окремий клієнт."
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr "Radicale"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2021-07-28 08:34+0000\n"
|
||||
"Last-Translator: bruh <quangtrung02hn16@gmail.com>\n"
|
||||
"Language-Team: Vietnamese <https://hosted.weblate.org/projects/freedombox/"
|
||||
@ -6774,7 +6774,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6783,14 +6783,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Plinth\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 07:09+0000\n"
|
||||
"Last-Translator: 大王叫我来巡山 "
|
||||
"<hamburger2048@users.noreply.hosted.weblate.org>\n"
|
||||
@ -6542,7 +6542,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6555,14 +6555,14 @@ msgstr ""
|
||||
"master.html#supported-clients\">支持的客户端应用程序</a>。任何拥有 "
|
||||
"{box_name} 登录名的用户都可以访问 Radicale。"
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-07 00:12+0000\n"
|
||||
"POT-Creation-Date: 2026-04-28 22:01+0000\n"
|
||||
"PO-Revision-Date: 2025-02-07 12:01+0000\n"
|
||||
"Last-Translator: pesder <j_h_liau@yahoo.com.tw>\n"
|
||||
"Language-Team: Chinese (Traditional Han script) <https://hosted.weblate.org/"
|
||||
@ -6674,7 +6674,7 @@ msgstr ""
|
||||
msgid "IRC"
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:27
|
||||
#: plinth/modules/radicale/__init__.py:26
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Radicale is a CalDAV and CardDAV server. It allows synchronization and "
|
||||
@ -6683,14 +6683,14 @@ msgid ""
|
||||
"a> is needed. Radicale can be accessed by any user with a {box_name} login."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:33
|
||||
#: plinth/modules/radicale/__init__.py:32
|
||||
msgid ""
|
||||
"Radicale provides a basic web interface, which only supports creating new "
|
||||
"calendars and addressbooks. It does not support adding events or contacts, "
|
||||
"which must be done using a separate client."
|
||||
msgstr ""
|
||||
|
||||
#: plinth/modules/radicale/__init__.py:55
|
||||
#: plinth/modules/radicale/__init__.py:52
|
||||
#: plinth/modules/radicale/manifest.py:74
|
||||
msgid "Radicale"
|
||||
msgstr ""
|
||||
|
||||
@ -5,7 +5,6 @@ FreedomBox app for radicale.
|
||||
|
||||
import logging
|
||||
|
||||
import augeas
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from plinth import app as app_module
|
||||
@ -37,15 +36,13 @@ _description = [
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
CONFIG_FILE = '/etc/radicale/config'
|
||||
|
||||
|
||||
class RadicaleApp(app_module.App):
|
||||
"""FreedomBox app for Radicale."""
|
||||
|
||||
app_id = 'radicale'
|
||||
|
||||
_version = 5
|
||||
_version = 6
|
||||
|
||||
def __init__(self) -> None:
|
||||
"""Create components for the app."""
|
||||
@ -129,7 +126,7 @@ class RadicaleApp(app_module.App):
|
||||
if Version(package['new_version']) > Version('4~'):
|
||||
return False
|
||||
|
||||
rights = get_rights_value()
|
||||
rights = privileged.get_rights_value()
|
||||
install(['radicale'], force_configuration='new')
|
||||
privileged.setup()
|
||||
privileged.configure(rights)
|
||||
@ -140,28 +137,3 @@ class RadicaleApp(app_module.App):
|
||||
"""De-configure and uninstall the app."""
|
||||
super().uninstall()
|
||||
privileged.uninstall()
|
||||
|
||||
|
||||
def load_augeas():
|
||||
"""Prepares the augeas."""
|
||||
aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD +
|
||||
augeas.Augeas.NO_MODL_AUTOLOAD)
|
||||
|
||||
# INI file lens
|
||||
aug.set('/augeas/load/Puppet/lens', 'Puppet.lns')
|
||||
aug.set('/augeas/load/Puppet/incl[last() + 1]', CONFIG_FILE)
|
||||
|
||||
aug.load()
|
||||
return aug
|
||||
|
||||
|
||||
def get_rights_value():
|
||||
"""Returns the current Rights value."""
|
||||
aug = load_augeas()
|
||||
value = aug.get('/files' + CONFIG_FILE + '/rights/type')
|
||||
|
||||
if value == 'from_file':
|
||||
# Default rights file is equivalent to owner_only.
|
||||
value = 'owner_only'
|
||||
|
||||
return value
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
(* Radicale module for Augeas
|
||||
Based on Puppet lens.
|
||||
|
||||
Manage config file for http://radicale.org/
|
||||
/etc/radicale/config is a standard INI File.
|
||||
*)
|
||||
|
||||
|
||||
module Radicale =
|
||||
autoload xfm
|
||||
|
||||
(************************************************************************
|
||||
* INI File settings
|
||||
*
|
||||
* /etc/radicale/config only supports "#" as commentary and "=" as separator
|
||||
*************************************************************************)
|
||||
let comment = IniFile.comment "#" "#"
|
||||
let comment_re = /[#]/
|
||||
let sep = IniFile.sep "=" "="
|
||||
|
||||
|
||||
(************************************************************************
|
||||
* ENTRY
|
||||
* /etc/radicale/config uses standard INI File entries
|
||||
*************************************************************************)
|
||||
let entry = IniFile.entry_generic (Util.indent . key IniFile.entry_re) sep comment_re comment
|
||||
|
||||
|
||||
(************************************************************************
|
||||
* RECORD
|
||||
* /etc/radicale/config uses standard INI File records
|
||||
*************************************************************************)
|
||||
let title = IniFile.indented_title IniFile.record_re
|
||||
let record = IniFile.record title entry
|
||||
|
||||
|
||||
(************************************************************************
|
||||
* LENS & FILTER
|
||||
* /etc/radicale/config uses standard INI File records
|
||||
*************************************************************************)
|
||||
let lns = IniFile.lns record comment
|
||||
|
||||
let filter = (incl "/etc/radicale/config")
|
||||
|
||||
let xfm = transform lns filter
|
||||
@ -0,0 +1,81 @@
|
||||
module Test_radicale =
|
||||
|
||||
let conf = "
|
||||
[server]
|
||||
|
||||
[encoding]
|
||||
|
||||
[well-known]
|
||||
|
||||
[auth]
|
||||
|
||||
[git]
|
||||
|
||||
[rights]
|
||||
|
||||
[storage]
|
||||
|
||||
[logging]
|
||||
|
||||
[headers]
|
||||
Content-Security-Policy = default-src 'self'; object-src 'none'
|
||||
|
||||
"
|
||||
|
||||
test Radicale.lns get conf =
|
||||
{}
|
||||
{ "server"
|
||||
{} }
|
||||
{ "encoding"
|
||||
{} }
|
||||
{ "well-known"
|
||||
{} }
|
||||
{ "auth"
|
||||
{} }
|
||||
{ "git"
|
||||
{} }
|
||||
{ "rights"
|
||||
{} }
|
||||
{ "storage"
|
||||
{} }
|
||||
{ "logging"
|
||||
{} }
|
||||
{ "headers"
|
||||
{ "Content-Security-Policy" = "default-src 'self'; object-src 'none'" }
|
||||
{} }
|
||||
|
||||
test Radicale.lns put conf after
|
||||
set "server/hosts" "127.0.0.1:5232, [::1]:5232";
|
||||
set "server/base_prefix" "/radicale/";
|
||||
set "well-known/caldav" "/radicale/%(user)s/caldav/";
|
||||
set "well-known/cardav" "/radicale/%(user)s/carddav/";
|
||||
set "auth/type" "remote_user";
|
||||
set "rights/type" "owner_only";
|
||||
set "headers/Content-Security-Policy" "default-src 'self'; object-src 'none'"
|
||||
= "
|
||||
[server]
|
||||
|
||||
hosts=127.0.0.1:5232, [::1]:5232
|
||||
base_prefix=/radicale/
|
||||
[encoding]
|
||||
|
||||
[well-known]
|
||||
|
||||
caldav=/radicale/%(user)s/caldav/
|
||||
cardav=/radicale/%(user)s/carddav/
|
||||
[auth]
|
||||
|
||||
type=remote_user
|
||||
[git]
|
||||
|
||||
[rights]
|
||||
|
||||
type=owner_only
|
||||
[storage]
|
||||
|
||||
[logging]
|
||||
|
||||
[headers]
|
||||
Content-Security-Policy = default-src 'self'; object-src 'none'
|
||||
|
||||
"
|
||||
@ -24,6 +24,7 @@ def setup():
|
||||
"""
|
||||
aug = load_augeas()
|
||||
aug.set('auth/type', 'remote_user')
|
||||
aug.set('auth/lc_username', 'True')
|
||||
aug.save()
|
||||
# Service is started again by socket.
|
||||
action_utils.service_stop(SERVICE_NAME)
|
||||
@ -55,12 +56,24 @@ def load_augeas():
|
||||
aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD +
|
||||
augeas.Augeas.NO_MODL_AUTOLOAD)
|
||||
# INI file lens
|
||||
aug.transform('Puppet', CONFIG_FILE)
|
||||
aug.transform('Radicale', CONFIG_FILE)
|
||||
aug.set('/augeas/context', '/files' + CONFIG_FILE)
|
||||
aug.load()
|
||||
return aug
|
||||
|
||||
|
||||
def get_rights_value():
|
||||
"""Returns the current Rights value."""
|
||||
aug = load_augeas()
|
||||
value = aug.get('rights/type')
|
||||
|
||||
if value == 'from_file':
|
||||
# Default rights file is equivalent to owner_only.
|
||||
value = 'owner_only'
|
||||
|
||||
return value
|
||||
|
||||
|
||||
@privileged
|
||||
def uninstall():
|
||||
"""Remove all radicale collections."""
|
||||
|
||||
@ -83,21 +83,21 @@ def _set_access_rights(browser, access_rights_type):
|
||||
|
||||
def _calendar_is_available(browser):
|
||||
"""Return whether calendar is available at well-known URL."""
|
||||
conf = functional.config['DEFAULT']
|
||||
url = functional.base_url + '/.well-known/caldav'
|
||||
logging.captureWarnings(True)
|
||||
request = requests.get(url, auth=(conf['username'], conf['password']),
|
||||
verify=False)
|
||||
logging.captureWarnings(False)
|
||||
return request.status_code != 404
|
||||
return _well_known_available(browser, '/.well-known/caldav')
|
||||
|
||||
|
||||
def _addressbook_is_available(browser):
|
||||
"""Return whether addressbook is available at well-known URL."""
|
||||
return _well_known_available(browser, '/.well-known/carddav')
|
||||
|
||||
|
||||
def _well_known_available(browser, wellknown_url: str):
|
||||
"""Return whether a well-known URL redirects to radicale."""
|
||||
conf = functional.config['DEFAULT']
|
||||
url = functional.base_url + '/.well-known/carddav'
|
||||
url = functional.base_url + wellknown_url
|
||||
logging.captureWarnings(True)
|
||||
request = requests.get(url, auth=(conf['username'], conf['password']),
|
||||
verify=False)
|
||||
verify=False, allow_redirects=False)
|
||||
logging.captureWarnings(False)
|
||||
return request.status_code != 404
|
||||
return (request.status_code == 301
|
||||
and request.headers['Location'].endswith('/radicale/'))
|
||||
|
||||
@ -8,7 +8,7 @@ from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from plinth.views import AppView
|
||||
|
||||
from . import get_rights_value, privileged
|
||||
from . import privileged
|
||||
from .forms import RadicaleForm
|
||||
|
||||
|
||||
@ -20,13 +20,13 @@ class RadicaleAppView(AppView):
|
||||
def get_initial(self):
|
||||
"""Return the values to fill in the form."""
|
||||
initial = super().get_initial()
|
||||
initial['access_rights'] = get_rights_value()
|
||||
initial['access_rights'] = privileged.get_rights_value()
|
||||
return initial
|
||||
|
||||
def form_valid(self, form):
|
||||
"""Change the access control of Radicale service."""
|
||||
data = form.cleaned_data
|
||||
if get_rights_value() != data['access_rights']:
|
||||
if privileged.get_rights_value() != data['access_rights']:
|
||||
privileged.configure(data['access_rights'])
|
||||
messages.success(self.request,
|
||||
_('Access rights configuration updated'))
|
||||
|
||||
@ -20,7 +20,8 @@ from plinth.action_utils import (get_addresses, get_hostname,
|
||||
service_try_reload_or_restart,
|
||||
service_try_restart, service_unmask, umask)
|
||||
|
||||
UNKNOWN = 'unknowndeamon'
|
||||
UNKNOWN = 'unknowndeamon.service'
|
||||
UNKNOWN_SOCKET = 'unknowndeamon.socket'
|
||||
|
||||
systemctl_path = pathlib.Path('/usr/bin/systemctl')
|
||||
systemd_installed = pytest.mark.skipif(not systemctl_path.exists(),
|
||||
@ -76,20 +77,101 @@ def test_service_enable_and_disable():
|
||||
|
||||
@patch('plinth.action_utils.service_action')
|
||||
@systemd_installed
|
||||
def test_service_actions(mock):
|
||||
"""Trivial white box test for trivial implementations."""
|
||||
def test_service_start(mock):
|
||||
"""Test staring a service."""
|
||||
service_start(UNKNOWN)
|
||||
mock.assert_called_with(UNKNOWN, 'start', check=False)
|
||||
mock.mock_calls = [call(UNKNOWN, 'start', check=False)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_start(UNKNOWN, check=True)
|
||||
mock.mock_calls = [call(UNKNOWN, 'start', check=True)]
|
||||
|
||||
|
||||
@patch('plinth.action_utils.service_action')
|
||||
@systemd_installed
|
||||
def test_service_stop(mock):
|
||||
"""Test stopping a service."""
|
||||
service_stop(UNKNOWN)
|
||||
mock.assert_called_with(UNKNOWN, 'stop', check=False)
|
||||
assert mock.mock_calls == [call(UNKNOWN, 'stop', check=False)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_stop(UNKNOWN, check=True)
|
||||
mock.mock_calls = [call(UNKNOWN, 'stop', check=True)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_stop(UNKNOWN_SOCKET)
|
||||
assert mock.mock_calls == [
|
||||
call(UNKNOWN_SOCKET, 'stop', check=False),
|
||||
call(UNKNOWN, 'stop', check=False)
|
||||
]
|
||||
|
||||
|
||||
@patch('plinth.action_utils.service_action')
|
||||
@systemd_installed
|
||||
def test_service_restart(mock):
|
||||
"""Test restaring a service."""
|
||||
service_restart(UNKNOWN)
|
||||
mock.assert_called_with(UNKNOWN, 'restart', check=False)
|
||||
assert mock.mock_calls == [call(UNKNOWN, 'restart', check=False)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_restart(UNKNOWN, check=True)
|
||||
mock.mock_calls = [call(UNKNOWN, 'restart', check=True)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_restart(UNKNOWN_SOCKET)
|
||||
assert mock.mock_calls == [call(UNKNOWN, 'stop', check=False)]
|
||||
|
||||
|
||||
@patch('plinth.action_utils.service_action')
|
||||
@systemd_installed
|
||||
def test_service_try_restart(mock):
|
||||
"""Test try-restaring a service."""
|
||||
service_try_restart(UNKNOWN)
|
||||
mock.assert_called_with(UNKNOWN, 'try-restart', check=False)
|
||||
assert mock.mock_calls == [call(UNKNOWN, 'try-restart', check=False)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_try_restart(UNKNOWN, check=True)
|
||||
mock.mock_calls = [call(UNKNOWN, 'try-restart', check=True)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_restart(UNKNOWN_SOCKET)
|
||||
assert mock.mock_calls == [call(UNKNOWN, 'stop', check=False)]
|
||||
|
||||
|
||||
@patch('plinth.action_utils.service_action')
|
||||
@systemd_installed
|
||||
def test_service_reload(mock):
|
||||
"""Test reloading a service."""
|
||||
service_reload(UNKNOWN)
|
||||
mock.assert_called_with(UNKNOWN, 'reload', check=False)
|
||||
assert mock.mock_calls == [call(UNKNOWN, 'reload', check=False)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_reload(UNKNOWN, check=True)
|
||||
mock.mock_calls = [call(UNKNOWN, 'reload', check=True)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_reload(UNKNOWN_SOCKET)
|
||||
assert mock.mock_calls == [call(UNKNOWN, 'reload', check=False)]
|
||||
|
||||
|
||||
@patch('plinth.action_utils.service_action')
|
||||
@systemd_installed
|
||||
def test_service_try_reload_or_restart(mock):
|
||||
"""Test try-reload-or-restart on a service."""
|
||||
service_try_reload_or_restart(UNKNOWN)
|
||||
mock.assert_called_with(UNKNOWN, 'try-reload-or-restart', check=False)
|
||||
assert mock.mock_calls == [
|
||||
call(UNKNOWN, 'try-reload-or-restart', check=False)
|
||||
]
|
||||
|
||||
mock.reset_mock()
|
||||
service_try_reload_or_restart(UNKNOWN, check=True)
|
||||
mock.mock_calls = [call(UNKNOWN, 'try-reload-or-restart', check=True)]
|
||||
|
||||
mock.reset_mock()
|
||||
service_try_reload_or_restart(UNKNOWN_SOCKET)
|
||||
assert mock.mock_calls == [
|
||||
call(UNKNOWN, 'try-reload-or-restart', check=False)
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('needs_root')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user