*: Drop use of module level version

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
Sunil Mohan Adapa 2021-11-20 17:11:35 -08:00 committed by James Valleroy
parent cf36a9d385
commit a3d4d99b33
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
64 changed files with 207 additions and 199 deletions

View File

@ -14,12 +14,3 @@ application depends on. The application is specified as string which is the
final part of the full module load path. For example, ``names``. Dependencies
are part of the :class:`~plinth.app.Info` component. Need for this attribute at
the module level will be removed in the future.
<app-module>.version
^^^^^^^^^^^^^^^^^^^^
Required. Version number of an app. Increasing the version number of an app
triggers the setup() logic allowing the app to run upgrade scripts. This
attribute is part of the :class:`~plinth.app.Info` component. Need for this
attribute at the module level will be removed in the future.

View File

@ -15,8 +15,6 @@ from plinth.modules.letsencrypt.components import LetsEncrypt
from plinth.package import Packages
from plinth.utils import format_lazy, is_valid_user_name
version = 9
app = None
@ -25,11 +23,13 @@ class ApacheApp(app_module.App):
app_id = 'apache'
_version = 9
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, name=_('Apache HTTP Server'))
self.add(info)

View File

@ -3,4 +3,20 @@
FreedomBox app for api for android app.
"""
version = 1
from plinth import app as app_module
class ApiApp(app_module.App):
"""FreedomBox app for API for Android app."""
app_id = 'api'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True)
self.add(info)

View File

@ -21,8 +21,6 @@ from . import manifest
# pylint: disable=C0103
version = 1
depends = ['names']
_description = [
@ -44,11 +42,13 @@ class AvahiApp(app_module.App):
app_id = 'avahi'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, name=_('Service Discovery'),
icon='fa-compass', description=_description,
manual_page='ServiceDiscovery')

View File

@ -23,8 +23,6 @@ from . import api
logger = logging.getLogger(__name__)
version = 3
depends = ['storage']
_description = [
@ -43,12 +41,14 @@ class BackupsApp(app_module.App):
app_id = 'backups'
_version = 3
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(
app_id=self.app_id, version=version, is_essential=True,
app_id=self.app_id, version=self._version, is_essential=True,
depends=depends, name=_('Backups'), icon='fa-files-o',
description=_description, manual_page='Backups',
donation_url='https://www.borgbackup.org/support/fund.html')

View File

@ -17,8 +17,6 @@ from plinth.package import Packages
from . import manifest
version = 2
_description = [
_('bepasty is a web application that allows large files to be uploaded '
'and shared. Text and code snippets can also be pasted and shared. '
@ -56,11 +54,13 @@ class BepastyApp(app_module.App):
app_id = 'bepasty'
_version = 2
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(self.app_id, version, name=_('bepasty'),
info = app_module.Info(self.app_id, self._version, name=_('bepasty'),
icon_filename='bepasty',
short_description=_('File & Snippet Sharing'),
description=_description, manual_page='bepasty',

View File

@ -21,8 +21,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 2
_description = [
_('BIND enables you to publish your Domain Name System (DNS) information '
'on the Internet, and to resolve DNS queries for your user devices on '
@ -68,11 +66,13 @@ class BindApp(app_module.App):
app_id = 'bind'
_version = 2
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('BIND'), icon='fa-globe-w',
short_description=_('Domain Name Server'),
description=_description)

View File

@ -21,8 +21,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 1
_description = [
format_lazy(
_('calibre server provides online access to your e-book collection. '
@ -48,6 +46,8 @@ class CalibreApp(app_module.App):
app_id = 'calibre'
_version = 1
DAEMON = 'calibre-server-freedombox'
def __init__(self):
@ -56,7 +56,7 @@ class CalibreApp(app_module.App):
groups = {'calibre': _('Use calibre e-book libraries')}
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('calibre'), icon_filename='calibre',
short_description=_('E-book Library'),
description=_description, manual_page='Calibre',

View File

@ -20,8 +20,6 @@ from plinth.utils import format_lazy
from . import manifest, utils
version = 1
_description = [
format_lazy(
_('Cockpit is a server manager that makes it easy to administer '
@ -52,13 +50,15 @@ class CockpitApp(app_module.App):
app_id = 'cockpit'
_version = 1
DAEMON = 'cockpit.socket'
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, name=_('Cockpit'),
icon='fa-wrench', icon_filename='cockpit',
short_description=_('Server Administration'),

View File

@ -19,8 +19,6 @@ from plinth.modules.names.components import DomainType
from plinth.package import Packages
from plinth.signals import domain_added
version = 3
_description = [
_('Here you can set some general configuration options '
'like hostname, domain name, webserver home page etc.')
@ -44,12 +42,14 @@ class ConfigApp(app_module.App):
app_id = 'config'
_version = 3
can_be_disabled = False
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, depends=depends,
name=_('General Configuration'), icon='fa-cog',
description=_description,

View File

@ -25,8 +25,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 1
_description = [
_('Coturn is a server to facilitate audio/video calls and conferences by '
'providing an implementation of TURN and STUN protocols. WebRTC, SIP '
@ -49,11 +47,13 @@ class CoturnApp(app_module.App):
app_id = 'coturn'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Coturn'), icon_filename='coturn',
short_description=_('VoIP Helper'),
description=_description, manual_page='Coturn')

View File

@ -14,8 +14,6 @@ from plinth.modules.backups.components import BackupRestore
from . import manifest
version = 2
_description = [
_('Network time server is a program that maintains the system time '
'in synchronization with servers on the Internet.')
@ -29,6 +27,8 @@ class DateTimeApp(app_module.App):
app_id = 'datetime'
_version = 2
_time_managed = None
@property
@ -60,7 +60,7 @@ class DateTimeApp(app_module.App):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
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')

View File

@ -18,8 +18,6 @@ from plinth.package import Packages
from . import manifest
version = 6
_description = [
_('Deluge is a BitTorrent client that features a Web UI.'),
_('The default password is \'deluge\', but you should log in and '
@ -36,6 +34,8 @@ class DelugeApp(app_module.App):
app_id = 'deluge'
_version = 6
def __init__(self):
"""Create components for the app."""
super().__init__()
@ -45,7 +45,7 @@ class DelugeApp(app_module.App):
}
info = app_module.Info(
app_id=self.app_id, version=version, name=_('Deluge'),
app_id=self.app_id, version=self._version, name=_('Deluge'),
icon_filename='deluge',
short_description=_('BitTorrent Web Client'),
description=_description, manual_page='Deluge',

View File

@ -19,8 +19,6 @@ from plinth.modules.backups.components import BackupRestore
from . import manifest
version = 1
_description = [
_('The system diagnostic test will run a number of checks on your '
'system to confirm that applications and services are working as '
@ -43,10 +41,12 @@ class DiagnosticsApp(app_module.App):
app_id = 'diagnostics'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
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')

View File

@ -36,8 +36,6 @@ def get_configured_domain_name():
return lazy_domain_name
version = 1
_description = [
_('diaspora* is a decentralized social network where you can store '
'and control your own data.'),
@ -57,12 +55,14 @@ class DiasporaApp(app_module.App):
app_id = 'diaspora'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
from . import manifest
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('diaspora*'), icon_filename='diaspora',
short_description=_('Federated Social Network'),
description=_description,

View File

@ -17,8 +17,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 1
depends = ['names']
_description = [
@ -45,11 +43,13 @@ class DynamicDNSApp(app_module.App):
app_id = 'dynamicdns'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, depends=depends,
name=_('Dynamic DNS Client'), icon='fa-refresh',
description=_description,

View File

@ -28,8 +28,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 4
_description = [
_('XMPP is an open and standardized communication protocol. Here '
'you can run and configure your XMPP server, called ejabberd.'),
@ -59,11 +57,13 @@ class EjabberdApp(app_module.App):
app_id = 'ejabberd'
_version = 4
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('ejabberd'), icon_filename='ejabberd',
short_description=_('Chat Server'),
description=_description,

View File

@ -18,8 +18,6 @@ from plinth.package import Packages, remove
from . import audit, manifest
version = 1
clamav_packages = ['clamav', 'clamav-daemon']
clamav_daemons = ['clamav-daemon', 'clamav-freshclam']
@ -44,6 +42,8 @@ class EmailServerApp(plinth.app.App):
app_id = 'email_server'
app_name = _('Email Server')
_version = 1
def __init__(self):
"""The app's constructor"""
super().__init__()
@ -86,7 +86,7 @@ class EmailServerApp(plinth.app.App):
def _add_ui_components(self):
info = plinth.app.Info(
app_id=self.app_id, version=version, name=self.app_name,
app_id=self.app_id, version=self._version, name=self.app_name,
short_description=_('Powered by Postfix, Dovecot & Rspamd'),
description=_description, manual_page='EmailServer',
clients=manifest.clients,

View File

@ -21,8 +21,6 @@ from . import manifest
gio = import_from_gi('Gio', '2.0')
glib = import_from_gi('GLib', '2.0')
version = 2
_description = [
format_lazy(
_('Firewall is a security system that controls the incoming and '
@ -52,13 +50,15 @@ class FirewallApp(app_module.App):
app_id = 'firewall'
_version = 2
can_be_disabled = False
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
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')

View File

@ -11,8 +11,6 @@ from django.urls import reverse
from plinth import app, cfg, module_loader
from plinth.signals import post_setup
version = 1
first_boot_steps = [
{
'id': 'firstboot_welcome',
@ -37,11 +35,14 @@ class FirstBootApp(app.App):
app_id = 'first_boot'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app.Info(app_id=self.app_id, version=version, is_essential=True)
info = app.Info(app_id=self.app_id, version=self._version,
is_essential=True)
self.add(info)
def post_init(self):

View File

@ -22,8 +22,6 @@ from . import manifest
from .forms import is_repo_url
from .manifest import GIT_REPO_PATH
version = 1
_description = [
_('Git is a distributed version-control system for tracking changes in '
'source code during software development. Gitweb provides a web '
@ -44,6 +42,8 @@ class GitwebApp(app_module.App):
app_id = 'gitweb'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
@ -52,7 +52,7 @@ class GitwebApp(app_module.App):
self.repos = []
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Gitweb'), icon_filename='gitweb',
short_description=_('Simple Git Hosting'),
description=_description, manual_page='GitWeb',

View File

@ -11,8 +11,6 @@ from django.utils.translation import pgettext_lazy
from plinth import app as app_module
from plinth import cfg, menu, web_server
version = 1
app = None
@ -21,11 +19,13 @@ class HelpApp(app_module.App):
app_id = 'help'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True)
self.add(info)

View File

@ -18,8 +18,6 @@ from plinth.package import Packages
from . import manifest
version = 1
_description = [
_('The Invisible Internet Project is an anonymous network layer intended '
'to protect communication from censorship and surveillance. I2P '
@ -45,6 +43,8 @@ class I2PApp(app_module.App):
app_id = 'i2p'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
@ -52,7 +52,7 @@ class I2PApp(app_module.App):
groups = {'i2p': _('Manage I2P application')}
info = app_module.Info(
app_id=self.app_id, version=version, name=_('I2P'),
app_id=self.app_id, version=self._version, name=_('I2P'),
icon_filename='i2p', short_description=_('Anonymity Network'),
description=_description, manual_page='I2P',
clients=manifest.clients,

View File

@ -18,8 +18,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 1
_description = [
_('ikiwiki is a simple wiki and blog application. It supports '
'several lightweight markup languages, including Markdown, and '
@ -41,11 +39,13 @@ class IkiwikiApp(app_module.App):
app_id = 'ikiwiki'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('ikiwiki'), icon_filename='ikiwiki',
short_description=_('Wiki and Blog'),
description=_description, manual_page='Ikiwiki',

View File

@ -17,8 +17,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 3
_description = [
_('infinoted is a server for Gobby, a collaborative text editor.'),
format_lazy(
@ -36,11 +34,13 @@ class InfinotedApp(app_module.App):
app_id = 'infinoted'
_version = 3
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('infinoted'), icon_filename='infinoted',
short_description=_('Gobby Server'),
description=_description,

View File

@ -17,8 +17,6 @@ from plinth.web_server import StaticFiles
from . import manifest
version = 1
_description = [
_('JSXC is a web client for XMPP. Typically it is used with an XMPP '
'server running locally.'),
@ -34,13 +32,15 @@ class JSXCApp(app_module.App):
app_id = 'jsxc'
_version = 1
can_be_disabled = False
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('JSXC'), icon_filename='jsxc',
short_description=_('Chat Client'),
description=_description, manual_page='JSXC',

View File

@ -23,8 +23,6 @@ from plinth.utils import format_lazy
from . import components, manifest
version = 3
depends = ['names']
_description = [
@ -54,11 +52,13 @@ class LetsEncryptApp(app_module.App):
app_id = 'letsencrypt'
_version = 3
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, depends=depends,
name=_('Let\'s Encrypt'), icon='fa-lock',
short_description=_('Certificates'),

View File

@ -25,8 +25,6 @@ from plinth.utils import format_lazy, is_non_empty_file
from . import manifest
version = 7
_description = [
_('<a href="https://matrix.org/docs/guides/faq.html">Matrix</a> is an new '
'ecosystem for open, federated instant messaging and VoIP. Synapse is a '
@ -63,15 +61,17 @@ class MatrixSynapseApp(app_module.App):
app_id = 'matrixsynapse'
_version = 7
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(
app_id=self.app_id, version=version, name=_('Matrix Synapse'),
icon_filename='matrixsynapse', short_description=_('Chat Server'),
description=_description, manual_page='MatrixSynapse',
clients=manifest.clients)
app_id=self.app_id, version=self._version,
name=_('Matrix Synapse'), icon_filename='matrixsynapse',
short_description=_('Chat Server'), description=_description,
manual_page='MatrixSynapse', clients=manifest.clients)
self.add(info)
menu_item = menu.Menu('menu-matrixsynapse', info.name,

View File

@ -19,8 +19,6 @@ from plinth.package import Packages
from . import manifest
version = 10
_description = [
_('MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia '
'projects. A wiki engine is a program for creating a collaboratively '
@ -47,12 +45,14 @@ class MediaWikiApp(app_module.App):
app_id = 'mediawiki'
_version = 10
def __init__(self):
"""Create components for the app."""
super().__init__()
self._private_mode = True
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('MediaWiki'), icon_filename='mediawiki',
short_description=_('Wiki'),
description=_description,

View File

@ -18,8 +18,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 2
_mods = [
'minetest-mod-character-creator', 'minetest-mod-craftguide',
'minetest-mod-infinite-chest', 'minetest-mod-lucky-block',
@ -51,12 +49,14 @@ class MinetestApp(app_module.App):
app_id = 'minetest'
_version = 2
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(
app_id=self.app_id, version=version, name=_('Minetest'),
app_id=self.app_id, version=self._version, name=_('Minetest'),
icon_filename='minetest', short_description=_('Block Sandbox'),
description=_description, manual_page='Minetest',
clients=manifest.clients,

View File

@ -16,8 +16,6 @@ from plinth.utils import Version
from . import manifest
version = 2
_description = [
_('MiniDLNA is a simple media server software, with the aim of being '
'fully compliant with DLNA/UPnP-AV clients. '
@ -36,13 +34,15 @@ class MiniDLNAApp(app_module.App):
"""Freedombox app managing miniDlna"""
app_id = 'minidlna'
_version = 2
def __init__(self):
"""Initialize the app components"""
super().__init__()
groups = {'minidlna': _('Media streaming server')}
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('MiniDLNA'), icon_filename='minidlna',
short_description=_('Simple Media Server'),
description=_description,

View File

@ -19,8 +19,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 2
_description = [
_('MLDonkey is a peer-to-peer file sharing application used to exchange '
'large files. It can participate in multiple peer-to-peer networks '
@ -44,6 +42,8 @@ class MLDonkeyApp(app_module.App):
app_id = 'mldonkey'
_version = 2
DAEMON = 'mldonkey-server'
def __init__(self):
@ -53,7 +53,7 @@ class MLDonkeyApp(app_module.App):
groups = {'ed2k': _('Download files using eDonkey applications')}
info = app_module.Info(
app_id=self.app_id, version=version, name=_('MLDonkey'),
app_id=self.app_id, version=self._version, name=_('MLDonkey'),
icon_filename='mldonkey',
short_description=_('Peer-to-peer File Sharing'),
description=_description, manual_page='MLDonkey',

View File

@ -13,8 +13,6 @@ from plinth.package import Packages
from . import manifest
version = 1
_description = [
_('With Monkeysphere, an OpenPGP key can be generated for each configured '
'domain serving SSH. The OpenPGP public key can then be uploaded to the '
@ -42,11 +40,13 @@ class MonkeysphereApp(app_module.App):
app_id = 'monkeysphere'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Monkeysphere'), icon='fa-certificate',
description=_description,
manual_page='Monkeysphere')

View File

@ -22,8 +22,6 @@ from plinth.utils import Version
from . import manifest
version = 2
_description = [
_('Mumble is an open source, low-latency, encrypted, high quality '
'voice chat software.'),
@ -40,12 +38,14 @@ class MumbleApp(app_module.App):
app_id = 'mumble'
_version = 2
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(
app_id=self.app_id, version=version, name=_('Mumble'),
app_id=self.app_id, version=self._version, name=_('Mumble'),
icon_filename='mumble', short_description=_('Voice Chat'),
description=_description, manual_page='Mumble',
clients=manifest.clients,

View File

@ -15,8 +15,6 @@ from plinth.utils import format_lazy
from . import components, manifest
version = 1
logger = logging.getLogger(__name__)
_description = [
@ -36,10 +34,12 @@ class NamesApp(app_module.App):
app_id = 'names'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
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')

View File

@ -14,8 +14,6 @@ from plinth import app as app_module
from plinth import daemon, kvstore, menu, network
from plinth.package import Packages
version = 1
first_boot_steps = [
{
'id': 'network_topology_wizard',
@ -51,11 +49,13 @@ class NetworksApp(app_module.App):
app_id = 'networks'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
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')

View File

@ -20,8 +20,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 4
_description = [
format_lazy(
_('Virtual Private Network (VPN) is a technique for securely '
@ -43,6 +41,8 @@ class OpenVPNApp(app_module.App):
app_id = 'openvpn'
_version = 4
@property
def can_be_disabled(self):
"""Return whether the app can be disabled."""
@ -54,7 +54,7 @@ class OpenVPNApp(app_module.App):
self.groups = {'vpn': _('Connect to VPN services')}
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('OpenVPN'), icon_filename='openvpn',
short_description=_('Virtual Private Network'),
description=_description, manual_page='OpenVPN',

View File

@ -16,8 +16,6 @@ from plinth.utils import format_lazy
from . import manifest, utils
version = 2
depends = ['names']
_description = [
@ -56,12 +54,14 @@ class PagekiteApp(app_module.App):
DAEMON = 'pagekite'
_version = 2
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(
app_id=self.app_id, version=version, depends=depends,
app_id=self.app_id, version=self._version, depends=depends,
name=_('PageKite'), icon='fa-flag',
short_description=_('Public Visibility'), description=_description,
manual_page='PageKite',

View File

@ -13,8 +13,6 @@ from plinth.package import Packages
from . import manifest
version = 1
name = _('Performance')
_description = [
@ -34,11 +32,13 @@ class PerformanceApp(app_module.App):
app_id = 'performance'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Performance'), icon='fa-bar-chart',
short_description=_('System Monitoring'),
description=_description,

View File

@ -10,8 +10,6 @@ from plinth.modules.backups.components import BackupRestore
from . import manifest
version = 1
_description = [_('Restart or shut down the system.')]
app = None
@ -22,11 +20,13 @@ class PowerApp(app_module.App):
app_id = 'power'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, name=_('Power'),
description=_description, manual_page='Power')
self.add(info)

View File

@ -19,8 +19,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 1
_description = [
_('Privoxy is a non-caching web proxy with advanced filtering '
'capabilities for enhancing privacy, modifying web page data and '
@ -44,12 +42,14 @@ class PrivoxyApp(app_module.App):
app_id = 'privoxy'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(
app_id=self.app_id, version=version, name=_('Privoxy'),
app_id=self.app_id, version=self._version, name=_('Privoxy'),
icon_filename='privoxy', short_description=_('Web Proxy'),
description=_description, manual_page='Privoxy',
donation_url='https://www.privoxy.org/faq/general.html#DONATE')

View File

@ -22,8 +22,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 1
_description = [
format_lazy(
_('Quassel is an IRC application that is split into two parts, a '
@ -48,11 +46,13 @@ class QuasselApp(app_module.App):
app_id = 'quassel'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Quassel'), icon_filename='quassel',
short_description=_('IRC Client'),
description=_description, manual_page='Quassel',

View File

@ -20,8 +20,6 @@ from plinth.utils import Version, format_lazy
from . import manifest
version = 2
_description = [
format_lazy(
_('Radicale is a CalDAV and CardDAV server. It allows synchronization '
@ -47,11 +45,13 @@ class RadicaleApp(app_module.App):
app_id = 'radicale'
_version = 2
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Radicale'), icon_filename='radicale',
short_description=_('Calendar and Addressbook'),
description=_description,

View File

@ -16,8 +16,6 @@ from plinth.utils import Version
from . import manifest
version = 1
_description = [
_('Roundcube webmail is a browser-based multilingual IMAP '
'client with an application-like user interface. It provides '
@ -45,11 +43,13 @@ class RoundcubeApp(app_module.App):
app_id = 'roundcube'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Roundcube'), icon_filename='roundcube',
short_description=_('Email Client'),
description=_description,

View File

@ -23,8 +23,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 2
_description = [
_('Samba allows to share files and folders between FreedomBox and '
'other computers in your local network.'),
@ -49,6 +47,8 @@ class SambaApp(app_module.App):
app_id = 'samba'
_version = 2
def __init__(self):
"""Create components for the app."""
super().__init__()
@ -56,7 +56,7 @@ class SambaApp(app_module.App):
groups = {'freedombox-share': _('Access to the private shares')}
info = app_module.Info(
app_id=self.app_id, version=version, name=_('Samba'),
app_id=self.app_id, version=self._version, name=_('Samba'),
icon_filename='samba', short_description=_('Network File Storage'),
manual_page='Samba', description=_description,
clients=manifest.clients,

View File

@ -18,8 +18,6 @@ from plinth.package import Packages
from . import manifest
version = 4
_description = [
_('Searx is a privacy-respecting Internet metasearch engine. '
'It aggregrates and displays results from multiple search engines.'),
@ -35,6 +33,8 @@ class SearxApp(app_module.App):
app_id = 'searx'
_version = 4
def __init__(self):
"""Create components for the app."""
super().__init__()
@ -42,7 +42,7 @@ class SearxApp(app_module.App):
groups = {'web-search': _('Search the web')}
info = app_module.Info(
app_id=self.app_id, version=version, name=_('Searx'),
app_id=self.app_id, version=self._version, name=_('Searx'),
icon_filename='searx', short_description=_('Web Search'),
description=_description, manual_page='Searx',
clients=manifest.clients,

View File

@ -18,8 +18,6 @@ from plinth.package import Packages
from . import manifest
version = 7
ACCESS_CONF_FILE = '/etc/security/access.d/50freedombox.conf'
ACCESS_CONF_FILE_OLD = '/etc/security/access.conf'
ACCESS_CONF_SNIPPET = '-:ALL EXCEPT root fbx plinth (admin) (sudo):ALL'
@ -34,11 +32,13 @@ class SecurityApp(app_module.App):
app_id = 'security'
_version = 7
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, name=_('Security'),
icon='fa-lock', manual_page='Security')
self.add(info)

View File

@ -13,8 +13,6 @@ from plinth.package import Packages
from . import manifest
version = 1
_description = [
_('Shaarli allows you to save and share bookmarks.'),
_('Note that Shaarli only supports a single user account, which you will '
@ -29,11 +27,13 @@ class ShaarliApp(app_module.App):
app_id = 'shaarli'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Shaarli'), icon_filename='shaarli',
short_description=_('Bookmarks'),
description=_description, manual_page='Shaarli',

View File

@ -17,8 +17,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 3
_description = [
_('Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to '
'protect your Internet traffic. It can be used to bypass Internet '
@ -41,13 +39,15 @@ class ShadowsocksApp(app_module.App):
app_id = 'shadowsocks'
_version = 3
DAEMON = 'shadowsocks-libev-local@freedombox'
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Shadowsocks'),
icon_filename='shadowsocks',
short_description=_('Socks5 Proxy'),

View File

@ -15,8 +15,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 1
_description = [
format_lazy(
_('Sharing allows you to share files and folders on your {box_name} '
@ -32,10 +30,12 @@ class SharingApp(app_module.App):
app_id = 'sharing'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Sharing'), icon_filename='sharing',
manual_page='Sharing', description=_description)
self.add(info)

View File

@ -18,8 +18,6 @@ from plinth.package import Packages
from . import manifest
version = 4
_description = [
_('Snapshots allows creating and managing btrfs file system snapshots. '
'These can be used to roll back the system to a previously known '
@ -46,11 +44,13 @@ class SnapshotApp(app_module.App):
app_id = 'snapshot'
_version = 4
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
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')

View File

@ -19,8 +19,6 @@ from plinth.package import Packages
from . import manifest
version = 1
_description = [
_('A Secure Shell server uses the secure shell protocol to accept '
'connections from remote computers. An authorized remote computer '
@ -36,11 +34,13 @@ class SSHApp(app_module.App):
app_id = 'ssh'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True,
name=_('Secure Shell (SSH) Server'),
icon='fa-terminal', description=_description)

View File

@ -9,8 +9,6 @@ from plinth import actions
from plinth import app as app_module
from plinth.package import Packages
version = 1
depends = ['security', 'apache']
app = None
@ -20,11 +18,13 @@ class SSOApp(app_module.App):
"""FreedomBox app for single sign on."""
app_id = 'sso'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, depends=depends,
name=_('Single Sign On'))
self.add(info)

View File

@ -21,8 +21,6 @@ from plinth.utils import format_lazy
from . import manifest, udisks2
version = 4
_description = [
format_lazy(
_('This module allows you to manage storage media attached to your '
@ -41,13 +39,15 @@ class StorageApp(app_module.App):
app_id = 'storage'
_version = 4
can_be_disabled = False
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
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')

View File

@ -19,8 +19,6 @@ from plinth.utils import format_lazy
from . import manifest
version = 5
_description = [
_('Syncthing is an application to synchronize files across multiple '
'devices, e.g. your desktop computer and mobile phone. Creation, '
@ -47,6 +45,8 @@ class SyncthingApp(app_module.App):
app_id = 'syncthing'
_version = 5
DAEMON = 'syncthing@syncthing'
def __init__(self):
@ -57,7 +57,7 @@ class SyncthingApp(app_module.App):
'syncthing-access': _('Administer Syncthing application')
}
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Syncthing'), icon_filename='syncthing',
short_description=_('File Synchronization'),
description=_description,

View File

@ -22,8 +22,6 @@ from plinth.utils import format_lazy
from . import manifest
from .errors import TahoeConfigurationError
version = 1
_description = [
_('Tahoe-LAFS is a decentralized secure file storage system. '
'It uses provider independent security to store files over a '
@ -52,11 +50,13 @@ class TahoeApp(app_module.App):
app_id = 'tahoe'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Tahoe-LAFS'),
icon_filename='tahoe-lafs',
short_description=_('Distributed File Storage'),

View File

@ -22,8 +22,6 @@ from plinth.signals import domain_added, domain_removed
from . import manifest, utils
version = 5
depends = ['names']
_description = [
@ -43,11 +41,13 @@ class TorApp(app_module.App):
app_id = 'tor'
_version = 5
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Tor'), icon_filename='tor',
short_description=_('Anonymity Network'),
description=_description, manual_page='Tor',

View File

@ -20,8 +20,6 @@ from plinth.package import Packages
from . import manifest
version = 4
_description = [
_('Transmission is a BitTorrent client with a web interface.'),
_('BitTorrent is a peer-to-peer file sharing protocol. '
@ -39,6 +37,8 @@ class TransmissionApp(app_module.App):
app_id = 'transmission'
_version = 4
DAEMON = 'transmission-daemon'
def __init__(self):
@ -50,7 +50,7 @@ class TransmissionApp(app_module.App):
}
info = app_module.Info(
app_id=self.app_id, version=version, name=_('Transmission'),
app_id=self.app_id, version=self._version, name=_('Transmission'),
icon_filename='transmission',
short_description=_('BitTorrent Web Client'),
description=_description, manual_page='Transmission',

View File

@ -19,8 +19,6 @@ from plinth.utils import Version, format_lazy
from . import manifest
version = 3
_description = [
_('Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, '
'designed to allow reading news from any location, while feeling as '
@ -42,13 +40,15 @@ class TTRSSApp(app_module.App):
app_id = 'ttrss'
_version = 3
def __init__(self):
"""Create components for the app."""
super().__init__()
groups = {'feed-reader': _('Read and subscribe to news feeds')}
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Tiny Tiny RSS'), icon_filename='ttrss',
short_description=_('News Feed Reader'),
description=_description,

View File

@ -22,8 +22,6 @@ from plinth.package import Packages
from . import manifest
version = 9
first_boot_steps = [
{
'id': 'backports_wizard',
@ -64,13 +62,15 @@ class UpgradesApp(app_module.App):
app_id = 'upgrades'
_version = 9
can_be_disabled = False
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
is_essential=True, name=_('Update'),
icon='fa-refresh', description=_description,
manual_page='Upgrades')

View File

@ -17,8 +17,6 @@ from plinth.package import Packages
from .components import UsersAndGroups
version = 3
first_boot_steps = [
{
'id': 'users_firstboot',
@ -47,13 +45,15 @@ class UsersApp(app_module.App):
app_id = 'users'
_version = 3
can_be_disabled = False
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
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')

View File

@ -16,8 +16,6 @@ from . import manifest, utils
nm = import_from_gi('NM', '1.0')
version = 1
_description = [
_('WireGuard is a fast, modern, secure VPN tunnel.'),
format_lazy(
@ -41,12 +39,14 @@ class WireguardApp(app_module.App):
app_id = 'wireguard'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(
app_id=self.app_id, version=version, name=_('WireGuard'),
app_id=self.app_id, version=self._version, name=_('WireGuard'),
icon_filename='wireguard',
short_description=_('Virtual Private Network'),
description=_description, manual_page='WireGuard',

View File

@ -19,8 +19,6 @@ from . import manifest
PUBLIC_ACCESS_FILE = '/etc/wordpress/is_public'
version = 1
_description = [
_('WordPress is a popular way to create and manage websites and blogs. '
'Content can be managed using a visual interface. Layout and '
@ -50,12 +48,14 @@ class WordPressApp(app_module.App):
app_id = 'wordpress'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(
app_id=self.app_id, version=version, name=_('WordPress'),
app_id=self.app_id, version=self._version, name=_('WordPress'),
icon_filename='wordpress', short_description=_('Website and Blog'),
description=_description, manual_page='WordPress',
clients=manifest.clients,

View File

@ -21,8 +21,6 @@ from . import manifest
logger = logging.getLogger(__name__)
version = 1
_description = [
format_lazy(
_('Zoph manages your photo collection. Photos are stored on your '
@ -50,11 +48,13 @@ class ZophApp(app_module.App):
app_id = 'zoph'
_version = 1
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Zoph'), icon_filename='zoph',
short_description=_('Photo Organizer'),
description=_description, manual_page='Zoph',