mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-09-19 04:59:01 +00:00
frontpage: Read custom shortcuts from multiple locations
Read from /etc/plinth, /usr/share/plinth and /var/lib/plinth. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
parent
4263f9e2c8
commit
5b579ff06d
@ -5,7 +5,7 @@ Manage application shortcuts on front page.
|
|||||||
|
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import pathlib
|
||||||
|
|
||||||
from plinth import app, cfg
|
from plinth import app, cfg
|
||||||
|
|
||||||
@ -129,8 +129,6 @@ class Shortcut(app.FollowerComponent):
|
|||||||
|
|
||||||
def add_custom_shortcuts():
|
def add_custom_shortcuts():
|
||||||
custom_shortcuts = get_custom_shortcuts()
|
custom_shortcuts = get_custom_shortcuts()
|
||||||
if not custom_shortcuts:
|
|
||||||
return
|
|
||||||
|
|
||||||
for shortcut in custom_shortcuts['shortcuts']:
|
for shortcut in custom_shortcuts['shortcuts']:
|
||||||
web_app_url = _extract_web_app_url(shortcut)
|
web_app_url = _extract_web_app_url(shortcut)
|
||||||
@ -161,11 +159,20 @@ def _extract_web_app_url(custom_shortcut):
|
|||||||
|
|
||||||
|
|
||||||
def get_custom_shortcuts():
|
def get_custom_shortcuts():
|
||||||
cfg_dir = os.path.dirname(cfg.config_file)
|
"""Return a merged dictionary of all custom shortcuts."""
|
||||||
shortcuts_file = os.path.join(cfg_dir, 'custom-shortcuts.json')
|
shortcuts_dirs = [cfg.config_dir, cfg.data_dir, cfg.file_root]
|
||||||
if os.path.isfile(shortcuts_file) and os.stat(shortcuts_file).st_size:
|
|
||||||
logger.info('Loading custom shortcuts from %s', shortcuts_file)
|
shortcuts = {'shortcuts': []}
|
||||||
with open(shortcuts_file) as shortcuts:
|
for shortcuts_dir in shortcuts_dirs:
|
||||||
custom_shortcuts = json.load(shortcuts)
|
file_path = pathlib.Path(shortcuts_dir) / 'custom-shortcuts.json'
|
||||||
return custom_shortcuts
|
if not file_path.is_file() or not file_path.stat().st_size:
|
||||||
return None
|
continue
|
||||||
|
|
||||||
|
logger.info('Loading custom shortcuts from %s', file_path)
|
||||||
|
with file_path.open() as file_handle:
|
||||||
|
try:
|
||||||
|
shortcuts['shortcuts'] += json.load(file_handle)['shortcuts']
|
||||||
|
except (KeyError, json.JSONDecodeError):
|
||||||
|
logger.info('Error loading shortcuts from %s', file_path)
|
||||||
|
|
||||||
|
return shortcuts
|
||||||
|
|||||||
@ -40,9 +40,7 @@ def get_shortcuts_as_json(username=None):
|
|||||||
for shortcut in frontpage.Shortcut.list(username)
|
for shortcut in frontpage.Shortcut.list(username)
|
||||||
if shortcut.component_id and shortcut.is_enabled()
|
if shortcut.component_id and shortcut.is_enabled()
|
||||||
]
|
]
|
||||||
custom_shortcuts = frontpage.get_custom_shortcuts()
|
shortcuts += frontpage.get_custom_shortcuts()['shortcuts']
|
||||||
if custom_shortcuts:
|
|
||||||
shortcuts += custom_shortcuts['shortcuts']
|
|
||||||
return {'shortcuts': shortcuts}
|
return {'shortcuts': shortcuts}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ NEXTCLOUD_SHORTCUT = {
|
|||||||
@pytest.fixture(name='custom_shortcuts_file')
|
@pytest.fixture(name='custom_shortcuts_file')
|
||||||
def fixture_custom_shortcuts_file(load_cfg, tmp_path):
|
def fixture_custom_shortcuts_file(load_cfg, tmp_path):
|
||||||
"""Fixture to set path for a custom shortcuts file."""
|
"""Fixture to set path for a custom shortcuts file."""
|
||||||
load_cfg.config_file = str(tmp_path / 'plinth.conf')
|
load_cfg.config_dir = str(tmp_path)
|
||||||
return tmp_path / 'custom-shortcuts.json'
|
return tmp_path / 'custom-shortcuts.json'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user