From 3a0db947b226752cc704b889b40c2d6e36cd9863 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sun, 29 Dec 2024 22:43:28 -0800 Subject: [PATCH] system: Add tags to all remaining apps Tests: - Visit the system page and notice that tags appear as expected for all items on the page. Signed-off-by: Sunil Mohan Adapa --- plinth/modules/avahi/__init__.py | 3 ++- plinth/modules/avahi/manifest.py | 4 ++++ plinth/modules/backups/__init__.py | 5 +++-- plinth/modules/backups/manifest.py | 13 +++++++++++++ plinth/modules/bind/manifest.py | 5 +++-- plinth/modules/cockpit/manifest.py | 11 +++++++---- plinth/modules/config/__init__.py | 4 ++-- plinth/modules/config/manifest.py | 8 ++++++++ plinth/modules/datetime/__init__.py | 2 +- plinth/modules/datetime/manifest.py | 4 ++++ plinth/modules/diagnostics/__init__.py | 2 +- plinth/modules/diagnostics/manifest.py | 4 ++++ plinth/modules/dynamicdns/__init__.py | 2 +- plinth/modules/dynamicdns/manifest.py | 7 +++++++ plinth/modules/firewall/__init__.py | 2 +- plinth/modules/firewall/manifest.py | 4 ++++ plinth/modules/names/__init__.py | 2 +- plinth/modules/names/manifest.py | 8 ++++++++ plinth/modules/networks/__init__.py | 4 ++-- plinth/modules/networks/manifest.py | 8 ++++++++ plinth/modules/pagekite/manifest.py | 6 +++++- plinth/modules/power/__init__.py | 2 +- plinth/modules/power/manifest.py | 4 ++++ plinth/modules/privacy/__init__.py | 2 +- plinth/modules/privacy/manifest.py | 4 ++++ plinth/modules/security/__init__.py | 3 ++- plinth/modules/security/manifest.py | 4 ++++ plinth/modules/snapshot/__init__.py | 2 +- plinth/modules/snapshot/manifest.py | 4 ++++ plinth/modules/ssh/__init__.py | 4 ++-- plinth/modules/ssh/manifest.py | 4 ++++ plinth/modules/storage/__init__.py | 2 +- plinth/modules/storage/manifest.py | 3 +++ plinth/modules/upgrades/__init__.py | 2 +- plinth/modules/upgrades/manifest.py | 4 ++++ plinth/modules/users/__init__.py | 4 ++-- plinth/modules/users/manifest.py | 8 ++++++++ 37 files changed, 135 insertions(+), 29 deletions(-) create mode 100644 plinth/modules/config/manifest.py create mode 100644 plinth/modules/networks/manifest.py create mode 100644 plinth/modules/users/manifest.py diff --git a/plinth/modules/avahi/__init__.py b/plinth/modules/avahi/__init__.py index 2db82ba31..e320cfec8 100644 --- a/plinth/modules/avahi/__init__.py +++ b/plinth/modules/avahi/__init__.py @@ -46,7 +46,8 @@ class AvahiApp(app_module.App): is_essential=True, depends=['names'], name=_('Service Discovery'), icon='fa-compass', description=_description, - manual_page='ServiceDiscovery') + manual_page='ServiceDiscovery', + tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-avahi', info.name, None, info.icon, diff --git a/plinth/modules/avahi/manifest.py b/plinth/modules/avahi/manifest.py index 71716c490..4fe4e3a9e 100644 --- a/plinth/modules/avahi/manifest.py +++ b/plinth/modules/avahi/manifest.py @@ -3,8 +3,12 @@ Application manifest for avahi. """ +from django.utils.translation import gettext_lazy as _ + # Services that intend to make themselves discoverable will drop files into # /etc/avahi/services. Currently, we don't intend to make that customizable. # There is no necessity for backup and restore. This manifest will ensure that # avahi enable/disable setting is preserved. backup: dict = {} + +tags = [_('Auto-discovery'), _('Local'), _('mDNS')] diff --git a/plinth/modules/backups/__init__.py b/plinth/modules/backups/__init__.py index 7e880102e..82c841df9 100644 --- a/plinth/modules/backups/__init__.py +++ b/plinth/modules/backups/__init__.py @@ -16,7 +16,7 @@ from plinth import app as app_module from plinth import cfg, glib, menu from plinth.package import Packages -from . import api, privileged +from . import api, manifest, privileged logger = logging.getLogger(__name__) @@ -43,7 +43,8 @@ class BackupsApp(app_module.App): app_id=self.app_id, version=self._version, is_essential=True, depends=['storage'], name=_('Backups'), icon='fa-files-o', description=_description, manual_page='Backups', - donation_url='https://www.borgbackup.org/support/fund.html') + donation_url='https://www.borgbackup.org/support/fund.html', + tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-backups', info.name, None, info.icon, diff --git a/plinth/modules/backups/manifest.py b/plinth/modules/backups/manifest.py index 6d15b059b..d2911aa42 100644 --- a/plinth/modules/backups/manifest.py +++ b/plinth/modules/backups/manifest.py @@ -3,7 +3,20 @@ Application manifest for backups. """ +from django.utils.translation import gettext_lazy as _ + # Currently, backup application does not have any settings. However, settings # such as scheduler settings, backup location, secrets to connect to remove # servers need to be backed up. backup: dict = {} + +tags = [ + _('Restore'), + _('Encrypted'), + _('Schedules'), + _('Local'), + _('Remote'), + _('App data'), + _('Configuration'), + _('Borg') +] diff --git a/plinth/modules/bind/manifest.py b/plinth/modules/bind/manifest.py index 4a70705ef..e7e8b2088 100644 --- a/plinth/modules/bind/manifest.py +++ b/plinth/modules/bind/manifest.py @@ -13,6 +13,7 @@ backup = { } tags = [ - _('Name server'), - _('DNS resolver'), + _('DNS'), + _('Server'), + _('Resolver'), ] diff --git a/plinth/modules/cockpit/manifest.py b/plinth/modules/cockpit/manifest.py index 62ad8cb66..9608de7ce 100644 --- a/plinth/modules/cockpit/manifest.py +++ b/plinth/modules/cockpit/manifest.py @@ -20,8 +20,11 @@ clients = [{ backup: dict = {} tags = [ - _('Server manager'), - _('Terminal'), - _('Disks'), - _('RAID'), + _('Advanced administration'), + _('Web terminal'), + _('Storage'), + _('Networking'), + _('Services'), + _('Logs'), + _('Performance'), ] diff --git a/plinth/modules/config/__init__.py b/plinth/modules/config/__init__.py index 524f55892..34e1d3de1 100644 --- a/plinth/modules/config/__init__.py +++ b/plinth/modules/config/__init__.py @@ -12,7 +12,7 @@ from plinth.modules.apache import (get_users_with_website, user_of_uws_url, from plinth.package import Packages from plinth.privileged import service as service_privileged -from . import privileged +from . import manifest, privileged _description = [ _('Here you can set some general configuration options ' @@ -39,7 +39,7 @@ class ConfigApp(app_module.App): depends=['apache', 'firewall', 'names' ], name=_('General Configuration'), icon='fa-cog', description=_description, - manual_page='Configure') + manual_page='Configure', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-config', _('Configure'), None, info.icon, diff --git a/plinth/modules/config/manifest.py b/plinth/modules/config/manifest.py new file mode 100644 index 000000000..b955292e2 --- /dev/null +++ b/plinth/modules/config/manifest.py @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Application manifest for configure. +""" + +from django.utils.translation import gettext_lazy as _ + +tags = [_('Homepage'), _('Logging'), _('Advanced apps')] diff --git a/plinth/modules/datetime/__init__.py b/plinth/modules/datetime/__init__.py index 4bc35802c..bfc2e1f57 100644 --- a/plinth/modules/datetime/__init__.py +++ b/plinth/modules/datetime/__init__.py @@ -67,7 +67,7 @@ class DateTimeApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Date & Time'), icon='fa-clock-o', description=_description, - manual_page='DateTime') + manual_page='DateTime', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-datetime', info.name, None, info.icon, diff --git a/plinth/modules/datetime/manifest.py b/plinth/modules/datetime/manifest.py index 229b34d40..f7a6e2448 100644 --- a/plinth/modules/datetime/manifest.py +++ b/plinth/modules/datetime/manifest.py @@ -3,9 +3,13 @@ Application manifest for datetime. """ +from django.utils.translation import gettext_lazy as _ + backup = { 'data': { 'files': ['/etc/localtime'] }, 'services': ['systemd-timedated'], } + +tags = [_('Network time'), _('Timezone')] diff --git a/plinth/modules/diagnostics/__init__.py b/plinth/modules/diagnostics/__init__.py index d3369bbd0..13056d72f 100644 --- a/plinth/modules/diagnostics/__init__.py +++ b/plinth/modules/diagnostics/__init__.py @@ -52,7 +52,7 @@ class DiagnosticsApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Diagnostics'), icon='fa-heartbeat', description=_description, - manual_page='Diagnostics') + manual_page='Diagnostics', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-diagnostics', info.name, None, info.icon, diff --git a/plinth/modules/diagnostics/manifest.py b/plinth/modules/diagnostics/manifest.py index a6577788c..38ee175f5 100644 --- a/plinth/modules/diagnostics/manifest.py +++ b/plinth/modules/diagnostics/manifest.py @@ -3,4 +3,8 @@ Application manifest for diagnostics. """ +from django.utils.translation import gettext_lazy as _ + backup: dict = {} + +tags = [_('Detect problems'), _('Repair'), _('Daily')] diff --git a/plinth/modules/dynamicdns/__init__.py b/plinth/modules/dynamicdns/__init__.py index e0e0ec231..e29c5a65e 100644 --- a/plinth/modules/dynamicdns/__init__.py +++ b/plinth/modules/dynamicdns/__init__.py @@ -60,7 +60,7 @@ class DynamicDNSApp(app_module.App): is_essential=True, depends=['names'], name=_('Dynamic DNS Client'), icon='fa-refresh', description=_description, - manual_page='DynamicDNS') + manual_page='DynamicDNS', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-dynamicdns', info.name, None, info.icon, diff --git a/plinth/modules/dynamicdns/manifest.py b/plinth/modules/dynamicdns/manifest.py index 8be41ecda..7ed288b3c 100644 --- a/plinth/modules/dynamicdns/manifest.py +++ b/plinth/modules/dynamicdns/manifest.py @@ -1,4 +1,9 @@ # SPDX-License-Identifier: AGPL-3.0-or-later +""" +Application manifest for Dynamic DNS. +""" + +from django.utils.translation import gettext_lazy as _ backup = { 'config': { @@ -8,3 +13,5 @@ backup = { 'dynamicdns_enable', 'dynamicdns_config', 'dynamicdns_status' ], } + +tags = [_('Domain'), _('Free'), _('Needs public IP')] diff --git a/plinth/modules/firewall/__init__.py b/plinth/modules/firewall/__init__.py index fa00acb64..a6f09b46c 100644 --- a/plinth/modules/firewall/__init__.py +++ b/plinth/modules/firewall/__init__.py @@ -60,7 +60,7 @@ class FirewallApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Firewall'), icon='fa-shield', description=_description, - manual_page='Firewall') + manual_page='Firewall', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-firewall', info.name, None, info.icon, diff --git a/plinth/modules/firewall/manifest.py b/plinth/modules/firewall/manifest.py index e666aa9bd..cbc9577e3 100644 --- a/plinth/modules/firewall/manifest.py +++ b/plinth/modules/firewall/manifest.py @@ -3,4 +3,8 @@ Application manifest for firewall. """ +from django.utils.translation import gettext_lazy as _ + backup: dict = {} + +tags = [_('Ports'), _('Blocking'), _('Status'), _('Automatic')] diff --git a/plinth/modules/names/__init__.py b/plinth/modules/names/__init__.py index 75f776b92..476e03e56 100644 --- a/plinth/modules/names/__init__.py +++ b/plinth/modules/names/__init__.py @@ -53,7 +53,7 @@ class NamesApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Name Services'), icon='fa-tags', description=_description, - manual_page='NameServices') + manual_page='NameServices', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-names', info.name, None, info.icon, diff --git a/plinth/modules/names/manifest.py b/plinth/modules/names/manifest.py index a8bdec5ae..7a0f65e75 100644 --- a/plinth/modules/names/manifest.py +++ b/plinth/modules/names/manifest.py @@ -3,4 +3,12 @@ Application manifest for names. """ +from django.utils.translation import gettext_lazy as _ + backup: dict = {} + +tags = [ + _('Domains'), + _('Hostname'), + _('DNS Resolution'), +] diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index 3291e79a9..2ad055c50 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -13,7 +13,7 @@ from plinth.diagnostic_check import DiagnosticCheck from plinth.modules.firewall.components import Firewall from plinth.package import Packages -from . import privileged +from . import manifest, privileged _description = [ _('Configure network devices. Connect to the Internet via Ethernet, Wi-Fi ' @@ -41,7 +41,7 @@ class NetworksApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Networks'), icon='fa-signal', description=_description, - manual_page='Networks') + manual_page='Networks', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-networks', info.name, None, info.icon, diff --git a/plinth/modules/networks/manifest.py b/plinth/modules/networks/manifest.py new file mode 100644 index 000000000..bb86fda55 --- /dev/null +++ b/plinth/modules/networks/manifest.py @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Application manifest for networks. +""" + +from django.utils.translation import gettext_lazy as _ + +tags = [_('Internet'), _('Wi-Fi'), _('Local network'), _('Topology')] diff --git a/plinth/modules/pagekite/manifest.py b/plinth/modules/pagekite/manifest.py index 00177202c..62a5f1f9f 100644 --- a/plinth/modules/pagekite/manifest.py +++ b/plinth/modules/pagekite/manifest.py @@ -12,4 +12,8 @@ backup = { 'services': ['pagekite'] } -tags = [_('Tunneling'), _('NAT traversal'), _('Remote access')] +tags = [ + _('Reachability'), + _('Remote access'), + _('Tunneling'), +] diff --git a/plinth/modules/power/__init__.py b/plinth/modules/power/__init__.py index 3720c0212..144cde9bc 100644 --- a/plinth/modules/power/__init__.py +++ b/plinth/modules/power/__init__.py @@ -30,7 +30,7 @@ class PowerApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Power'), icon='fa-power-off', description=_description, - manual_page='Power') + manual_page='Power', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-power', info.name, None, info.icon, diff --git a/plinth/modules/power/manifest.py b/plinth/modules/power/manifest.py index bdacbc3d0..4eb4626f0 100644 --- a/plinth/modules/power/manifest.py +++ b/plinth/modules/power/manifest.py @@ -3,4 +3,8 @@ Application manifest for power. """ +from django.utils.translation import gettext_lazy as _ + backup: dict = {} + +tags = [_('Reboot'), _('Shutdown')] diff --git a/plinth/modules/privacy/__init__.py b/plinth/modules/privacy/__init__.py index dae267988..1b0910fab 100644 --- a/plinth/modules/privacy/__init__.py +++ b/plinth/modules/privacy/__init__.py @@ -31,7 +31,7 @@ class PrivacyApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Privacy'), icon='fa-eye-slash', description=_description, - manual_page=None) + manual_page=None, tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-privacy', info.name, diff --git a/plinth/modules/privacy/manifest.py b/plinth/modules/privacy/manifest.py index a10591d1c..a0019680e 100644 --- a/plinth/modules/privacy/manifest.py +++ b/plinth/modules/privacy/manifest.py @@ -1,6 +1,10 @@ # SPDX-License-Identifier: AGPL-3.0-or-later """Application manifest for privacy app.""" +from django.utils.translation import gettext_lazy as _ + from . import privileged backup = {'config': {'files': [str(privileged.CONFIG_FILE)]}} + +tags = [_('Usage reporting'), _('Fallback DNS')] diff --git a/plinth/modules/security/__init__.py b/plinth/modules/security/__init__.py index 01ca1e84a..f366e057b 100644 --- a/plinth/modules/security/__init__.py +++ b/plinth/modules/security/__init__.py @@ -33,7 +33,8 @@ class SecurityApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Security'), - icon='fa-lock', manual_page='Security') + icon='fa-lock', manual_page='Security', + tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-security', info.name, None, info.icon, diff --git a/plinth/modules/security/manifest.py b/plinth/modules/security/manifest.py index ca4afcaf9..8f03b8d27 100644 --- a/plinth/modules/security/manifest.py +++ b/plinth/modules/security/manifest.py @@ -3,4 +3,8 @@ Application manifest for security. """ +from django.utils.translation import gettext_lazy as _ + backup = {'config': {'files': ['/etc/security/access.d/50freedombox.conf']}} + +tags = [_('Automatic bans'), _('Reports')] diff --git a/plinth/modules/snapshot/__init__.py b/plinth/modules/snapshot/__init__.py index f4cf52846..edf0d4aff 100644 --- a/plinth/modules/snapshot/__init__.py +++ b/plinth/modules/snapshot/__init__.py @@ -49,7 +49,7 @@ class SnapshotApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Storage Snapshots'), icon='fa-film', description=_description, - manual_page='Snapshots') + manual_page='Snapshots', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-snapshot', info.name, None, info.icon, diff --git a/plinth/modules/snapshot/manifest.py b/plinth/modules/snapshot/manifest.py index a1660dfc1..5b5a6027d 100644 --- a/plinth/modules/snapshot/manifest.py +++ b/plinth/modules/snapshot/manifest.py @@ -3,8 +3,12 @@ Application manifest for snapshot. """ +from django.utils.translation import gettext_lazy as _ + backup = { 'config': { 'files': ['/etc/snapper/configs/root', '/etc/default/snapper'] } } + +tags = [_('Periodic'), _('Restore'), _('Known good state'), _('Btrfs')] diff --git a/plinth/modules/ssh/__init__.py b/plinth/modules/ssh/__init__.py index 29cbba45a..1e2120175 100644 --- a/plinth/modules/ssh/__init__.py +++ b/plinth/modules/ssh/__init__.py @@ -39,9 +39,9 @@ class SSHApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, - name=_('Secure Shell (SSH) Server'), + name=_('Secure Shell Server'), icon='fa-terminal', description=_description, - manual_page='SecureShell') + manual_page='SecureShell', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-ssh', info.name, None, info.icon, diff --git a/plinth/modules/ssh/manifest.py b/plinth/modules/ssh/manifest.py index 1a772cf31..a29517db4 100644 --- a/plinth/modules/ssh/manifest.py +++ b/plinth/modules/ssh/manifest.py @@ -3,6 +3,8 @@ Application manifest for ssh. """ +from django.utils.translation import gettext_lazy as _ + backup = { 'config': { 'files': ['/etc/ssh/sshd_config.d/freedombox.conf'] @@ -16,3 +18,5 @@ backup = { ] } } + +tags = [_('SSH'), _('Remote terminal'), _('Fingerprints')] diff --git a/plinth/modules/storage/__init__.py b/plinth/modules/storage/__init__.py index 7c9529b3d..ccf9fd06b 100644 --- a/plinth/modules/storage/__init__.py +++ b/plinth/modules/storage/__init__.py @@ -46,7 +46,7 @@ class StorageApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Storage'), icon='fa-hdd-o', description=_description, - manual_page='Storage') + manual_page='Storage', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-storage', info.name, None, info.icon, diff --git a/plinth/modules/storage/manifest.py b/plinth/modules/storage/manifest.py index dd99aa59c..464d2cdcd 100644 --- a/plinth/modules/storage/manifest.py +++ b/plinth/modules/storage/manifest.py @@ -2,5 +2,8 @@ """ Application manifest for storage. """ +from django.utils.translation import gettext_lazy as _ backup: dict = {} + +tags = [_('Disks'), _('Usage'), _('Auto-mount'), _('Expand partition')] diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py index 7b225e177..f14fd69ec 100644 --- a/plinth/modules/upgrades/__init__.py +++ b/plinth/modules/upgrades/__init__.py @@ -63,7 +63,7 @@ class UpgradesApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Software Update'), icon='fa-refresh', description=_description, - manual_page='Upgrades') + manual_page='Upgrades', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-upgrades', info.name, None, info.icon, diff --git a/plinth/modules/upgrades/manifest.py b/plinth/modules/upgrades/manifest.py index 6bdd5f9dd..ffe683ea7 100644 --- a/plinth/modules/upgrades/manifest.py +++ b/plinth/modules/upgrades/manifest.py @@ -3,4 +3,8 @@ Application manifest for upgrades. """ +from django.utils.translation import gettext_lazy as _ + backup = {'config': {'files': ['/etc/apt/apt.conf.d/20auto-upgrades']}} + +tags = [_('Security'), _('Automatic'), _('Reboots'), _('New features')] diff --git a/plinth/modules/users/__init__.py b/plinth/modules/users/__init__.py index 528d6e426..82feb4cbe 100644 --- a/plinth/modules/users/__init__.py +++ b/plinth/modules/users/__init__.py @@ -18,7 +18,7 @@ from plinth.diagnostic_check import (DiagnosticCheck, from plinth.package import Packages from plinth.privileged import service as service_privileged -from . import privileged +from . import manifest, privileged from .components import UsersAndGroups first_boot_steps = [ @@ -58,7 +58,7 @@ class UsersApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Users and Groups'), icon='fa-users', description=_description, - manual_page='Users') + manual_page='Users', tags=manifest.tags) self.add(info) menu_item = menu.Menu('menu-users', info.name, None, info.icon, diff --git a/plinth/modules/users/manifest.py b/plinth/modules/users/manifest.py new file mode 100644 index 000000000..5e041b9e4 --- /dev/null +++ b/plinth/modules/users/manifest.py @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Application manifest for users and groups. +""" + +from django.utils.translation import gettext_lazy as _ + +tags = [_('Manage accounts'), _('App permissions')]