actions: Check with flake8

Also fix flake8 warnings.

Closes: #1613

Signed-off-by: Veiko Aasa <veiko17@disroot.org>
[sunil@medhas.org split multi strings differently to avoid spaces]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
Veiko Aasa 2019-10-10 11:22:05 +00:00 committed by Sunil Mohan Adapa
parent 938e83ade6
commit ed646d84a5
No known key found for this signature in database
GPG Key ID: 43EA1CFF0AA7C5F2
15 changed files with 44 additions and 37 deletions

View File

@ -21,7 +21,7 @@ run-unit-tests:
- echo "tester:password" | chpasswd - echo "tester:password" | chpasswd
- cp -r . /home/tester/plinth - cp -r . /home/tester/plinth
- chown -R tester:tester /home/tester/plinth - chown -R tester:tester /home/tester/plinth
- su -c "cd ~/plinth; python3 -m flake8 plinth" tester - su -c "cd ~/plinth; python3 -m flake8 --exclude actions/domainname-change,actions/dynamicdns,actions/hostname-change,actions/networks plinth actions/*" tester
- su -c "cd ~/plinth; py.test-3 --cov=plinth --cov-report=html --cov-report=term" tester - su -c "cd ~/plinth; py.test-3 --cov=plinth --cov-report=html --cov-report=term" tester
- cp -r /home/tester/plinth/htmlcov test-coverage-report - cp -r /home/tester/plinth/htmlcov test-coverage-report

View File

@ -20,11 +20,8 @@ Configuration helper for BitTorrent web client.
""" """
import argparse import argparse
import os
import subprocess import subprocess
from plinth import action_utils
SYSTEMD_SERVICE_PATH = '/etc/systemd/system/deluge-web.service' SYSTEMD_SERVICE_PATH = '/etc/systemd/system/deluge-web.service'
SYSTEMD_SERVICE = ''' SYSTEMD_SERVICE = '''
# #
@ -44,7 +41,7 @@ Group=debian-deluged
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
''' ''' # noqa: E501
def parse_arguments(): def parse_arguments():

View File

@ -37,11 +37,14 @@ def parse_arguments():
subparsers.add_parser( subparsers.add_parser(
'pre-install', 'pre-install',
help='Preseed debconf values before packages are installed.') help='Preseed debconf values before packages are installed.')
subparsers.add_parser(
subparsers.add_parser('enable-user-registrations', help='Allow users to' \ 'enable-user-registrations',
'sign up to this diaspora* pod without an invitation.') help='Allow users to sign up to this diaspora* pod without an '
subparsers.add_parser('disable-user-registrations', help='Allow only, ' \ 'invitation.')
'users with an invitation to register to this diaspora* pod') subparsers.add_parser(
'disable-user-registrations',
help='Allow only users with an invitation to register to this '
'diaspora* pod')
subparsers.add_parser('start-diaspora', help='Start diaspora* service') subparsers.add_parser('start-diaspora', help='Start diaspora* service')
subparsers.add_parser( subparsers.add_parser(
'disable-ssl', help="Disable SSL on the diaspora* application server") 'disable-ssl', help="Disable SSL on the diaspora* application server")

View File

@ -31,8 +31,6 @@ from distutils.version import LooseVersion as LV
import ruamel.yaml import ruamel.yaml
from plinth import action_utils from plinth import action_utils
from plinth.modules import config
from plinth.modules.letsencrypt import LIVE_DIRECTORY as LE_LIVE_DIRECTORY
EJABBERD_CONFIG = '/etc/ejabberd/ejabberd.yml' EJABBERD_CONFIG = '/etc/ejabberd/ejabberd.yml'
EJABBERD_BACKUP = '/var/log/ejabberd/ejabberd.dump' EJABBERD_BACKUP = '/var/log/ejabberd/ejabberd.dump'

View File

@ -56,8 +56,9 @@ def parse_arguments():
setup_parser = subparsers.add_parser( setup_parser = subparsers.add_parser(
'setup', help='Run any setup/upgrade activities.') 'setup', help='Run any setup/upgrade activities.')
setup_parser.add_argument( setup_parser.add_argument(
'--old-version', type=int, required=True, help= '--old-version', type=int, required=True,
'Version number being upgraded from or None if setting up first time.') help='Version number being upgraded from or None if setting up first '
'time.')
subparsers.add_parser('get-status', subparsers.add_parser('get-status',
help='Return the status of configured domains.') help='Return the status of configured domains.')
@ -273,8 +274,8 @@ def subcommand_obtain(arguments):
def _remove_old_hooks(): def _remove_old_hooks():
"""Remove old style renewal hooks from individual configuration files. """Remove old style renewal hooks from individual configuration files.
This has been replaced with global hooks by adding script files in directory This has been replaced with global hooks by adding script files in
/etc/letsencrypt/renewal-hooks/{pre,post,deploy}/. directory /etc/letsencrypt/renewal-hooks/{pre,post,deploy}/.
""" """
for file_path in glob.glob(RENEWAL_DIRECTORY + '*.conf'): for file_path in glob.glob(RENEWAL_DIRECTORY + '*.conf'):

View File

@ -24,9 +24,7 @@ import argparse
import yaml import yaml
from plinth import action_utils from plinth import action_utils
from plinth.modules import letsencrypt from plinth.modules.matrixsynapse import CONFIG_FILE_PATH
from plinth.modules.matrixsynapse import (CONFIG_FILE_PATH,
get_configured_domain_name)
def parse_arguments(): def parse_arguments():

View File

@ -129,8 +129,8 @@ def get_https_keys(fingerprint_hash):
# Read from FreedomBox configured domains with proper SSL certs. # Read from FreedomBox configured domains with proper SSL certs.
path = "/files/etc/apache2/sites-available//" \ path = "/files/etc/apache2/sites-available//" \
"directive[. = 'Use'][arg[1] = 'FreedomBoxTLSSiteMacro']" "directive[. = 'Use'][arg[1] = 'FreedomBoxTLSSiteMacro']"
key_file = "/files/etc/apache2//Macro[arg[1] = 'FreedomBoxTLSSiteMacro']//"\ key_file = ("/files/etc/apache2//Macro[arg[1] = 'FreedomBoxTLSSiteMacro'])"
"VirtualHost/directive[. = 'GnuTLSKeyFile']/arg" "//VirtualHost/directive[. = 'GnuTLSKeyFile']/arg")
key_file = aug.get(key_file) key_file = aug.get(key_file)
for match in aug.match(path): for match in aug.match(path):
domain = aug.get(match + '/arg[2]') domain = aug.get(match + '/arg[2]')

View File

@ -237,7 +237,6 @@ def _setup_firewall():
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
return True # Safer return True # Safer
# XXX: Due to https://bugs.debian.org/919517 when tun+ interface is added, # XXX: Due to https://bugs.debian.org/919517 when tun+ interface is added,
# firewalld is unable to handle it in nftables backend causing firewalld to # firewalld is unable to handle it in nftables backend causing firewalld to
# break while applying rules. This makes the entire system unreachable. # break while applying rules. This makes the entire system unreachable.

View File

@ -153,7 +153,8 @@ def subcommand_filter_conffile_packages(arguments):
- Read /var/lib/dpkg/status file to read hashes as provided by currently - Read /var/lib/dpkg/status file to read hashes as provided by currently
installed version of a package. installed version of a package.
- Read each configuration file for the package from disk and compute hashes. - Read each configuration file for the package from disk and compute
hashes.
- If the hashes match, package has no configuration file that got - If the hashes match, package has no configuration file that got
modified. There will be no conffile prompt. modified. There will be no conffile prompt.
@ -179,8 +180,9 @@ def subcommand_filter_conffile_packages(arguments):
downloaded_files = _download_packages(packages) downloaded_files = _download_packages(packages)
new_package_hashes, new_versions = _get_conffile_hashes_from_downloaded_files( new_package_hashes, new_versions = \
packages, downloaded_files, status_hashes, mismatched_hashes) _get_conffile_hashes_from_downloaded_files(
packages, downloaded_files, status_hashes, mismatched_hashes)
packages_info = {} packages_info = {}
for package in packages: for package in packages:
@ -356,7 +358,8 @@ def _get_conffile_hashes_from_downloaded_files(
try: try:
package_name, hashes, new_version = \ package_name, hashes, new_version = \
_get_conffile_hashes_from_downloaded_file( _get_conffile_hashes_from_downloaded_file(
packages, downloaded_file, status_hashes, mismatched_hashes) packages, downloaded_file, status_hashes,
mismatched_hashes)
except (LookupError, apt_pkg.Error, ValueError): except (LookupError, apt_pkg.Error, ValueError):
continue continue

View File

@ -100,15 +100,21 @@ def subcommand_is_running(arguments):
def subcommand_list(_): def subcommand_list(_):
"""Get list of plinth-managed services with their status (running or not)""" """Get list of plinth-managed services with their status.
Status may be either running or not.
"""
managed_services = _get_managed_services() managed_services = _get_managed_services()
services = dict.fromkeys(managed_services, {'running': False}) services = dict.fromkeys(managed_services, {'running': False})
output = subprocess.check_output(['systemctl', 'list-units']) output = subprocess.check_output(['systemctl', 'list-units'])
for line in output.decode().strip().split('\n'): for line in output.decode().strip().split('\n'):
if line.startswith('UNIT'): continue if line.startswith('UNIT'):
continue
# Stop parsing on empty line after the service list # Stop parsing on empty line after the service list
if not len(line): break if not len(line):
break
try: try:
unit, load, active, sub = line.split()[:4] unit, load, active, sub = line.split()[:4]

View File

@ -70,7 +70,7 @@ def get_user_homedir(username):
"""Return the home dir of a user by looking up in password database.""" """Return the home dir of a user by looking up in password database."""
try: try:
return pwd.getpwnam(username).pw_dir return pwd.getpwnam(username).pw_dir
except KeyError as exception: except KeyError:
print('Username not found') print('Username not found')
sys.exit(1) sys.exit(1)

View File

@ -92,7 +92,7 @@ def _resize_partition(device, requested_partition, free_space):
] ]
try: try:
subprocess.run(command, check=True) subprocess.run(command, check=True)
except subprocess.CalledProcessError as exception: except subprocess.CalledProcessError:
try: try:
subprocess.run(fallback_command, check=True) subprocess.run(fallback_command, check=True)
except subprocess.CalledProcessError as exception: except subprocess.CalledProcessError as exception:
@ -182,9 +182,9 @@ def _get_partition_device(device, partition_number):
def _get_root_device_and_partition_number(device): def _get_root_device_and_partition_number(device):
"""Return the parent device and number of partition separately.""" """Return the parent device and number of partition separately."""
match = re.match('(.+[a-zA-Z]\d+)p(\d+)$', device) match = re.match(r'(.+[a-zA-Z]\d+)p(\d+)$', device)
if not match: if not match:
match = re.match('(.+[a-zA-Z])(\d+)$', device) match = re.match(r'(.+[a-zA-Z])(\d+)$', device)
if not match: if not match:
print('Invalid device, must be a partition', file=sys.stderr) print('Invalid device, must be a partition', file=sys.stderr)
sys.exit(1) sys.exit(1)

View File

@ -48,8 +48,9 @@ def parse_arguments():
setup_parser = subparsers.add_parser('setup', setup_parser = subparsers.add_parser('setup',
help='Setup Tor configuration') help='Setup Tor configuration')
setup_parser.add_argument( setup_parser.add_argument(
'--old-version', type=int, required=True, help= '--old-version', type=int, required=True,
'Version number being upgraded from or None if setting up first time.') help='Version number being upgraded from or None if setting up first '
'time.')
subparsers.add_parser('get-status', help='Get Tor status in JSON format') subparsers.add_parser('get-status', help='Get Tor status in JSON format')

View File

@ -30,7 +30,8 @@ from plinth import action_utils
AUTO_CONF_FILE = '/etc/apt/apt.conf.d/20auto-upgrades' AUTO_CONF_FILE = '/etc/apt/apt.conf.d/20auto-upgrades'
LOG_FILE = '/var/log/unattended-upgrades/unattended-upgrades.log' LOG_FILE = '/var/log/unattended-upgrades/unattended-upgrades.log'
BUSTER_BACKPORTS_RELEASE_FILE_URL = 'https://deb.debian.org/debian/dists/buster-backports/Release' BUSTER_BACKPORTS_RELEASE_FILE_URL = \
'https://deb.debian.org/debian/dists/buster-backports/Release'
def parse_arguments(): def parse_arguments():

View File

@ -290,7 +290,7 @@ def get_user_groups(username):
groups_part = output.split(' ')[2] groups_part = output.split(' ')[2]
groups = groups_part.split('=')[1] groups = groups_part.split('=')[1]
group_names = [ group_names = [
user.strip('()') for user in re.findall('\(.*?\)', groups) user.strip('()') for user in re.findall(r'\(.*?\)', groups)
] ]
group_names.remove('users') group_names.remove('users')
return group_names return group_names