mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-05-27 10:44:33 +00:00
searx: Safe Search setting
Signed-off-by: Joseph Nuthalapati <njoseph@thoughtworks.com> Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
parent
26a53e6649
commit
619c3cf79c
@ -43,6 +43,16 @@ def parse_arguments():
|
|||||||
subparsers.add_parser(
|
subparsers.add_parser(
|
||||||
'setup', help="Perform post-installation operations for Searx")
|
'setup', help="Perform post-installation operations for Searx")
|
||||||
|
|
||||||
|
safe_search = subparsers.add_parser(
|
||||||
|
'set-safe-search',
|
||||||
|
help='Set the default filter for safe search on Searx')
|
||||||
|
safe_search.add_argument(
|
||||||
|
'filter', type=int,
|
||||||
|
help='Filter results. 0: None, 1: Moderate, 2: Strict')
|
||||||
|
|
||||||
|
subparsers.add_parser('get-safe-search',
|
||||||
|
help='Print the value of the safe search setting.')
|
||||||
|
|
||||||
subparsers.required = True
|
subparsers.required = True
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
@ -79,6 +89,23 @@ def _set_timeout(settings):
|
|||||||
settings['outgoing']['request_timeout'] = 20.0
|
settings['outgoing']['request_timeout'] = 20.0
|
||||||
|
|
||||||
|
|
||||||
|
def subcommand_set_safe_search(arguments):
|
||||||
|
"""Set safe search filter for search results."""
|
||||||
|
value = arguments.filter
|
||||||
|
settings = read_settings()
|
||||||
|
settings['search']['safe_search'] = value
|
||||||
|
write_settings(settings)
|
||||||
|
|
||||||
|
|
||||||
|
def subcommand_get_safe_search(_):
|
||||||
|
"""Print the value of the safe search setting."""
|
||||||
|
if os.path.exists(SETTINGS_FILE):
|
||||||
|
settings = read_settings()
|
||||||
|
print(settings['search']['safe_search'])
|
||||||
|
else:
|
||||||
|
print(0)
|
||||||
|
|
||||||
|
|
||||||
def read_settings():
|
def read_settings():
|
||||||
with open(SETTINGS_FILE, 'rb') as settings_file:
|
with open(SETTINGS_FILE, 'rb') as settings_file:
|
||||||
return yaml.load(settings_file)
|
return yaml.load(settings_file)
|
||||||
|
|||||||
@ -94,6 +94,12 @@ def add_shortcut():
|
|||||||
url='/searx', login_required=True)
|
url='/searx', login_required=True)
|
||||||
|
|
||||||
|
|
||||||
|
def get_safe_search_setting():
|
||||||
|
"""Get the current value of the safe search setting for Seax."""
|
||||||
|
value = actions.superuser_run('searx', ['get-safe-search'])
|
||||||
|
return int(value.strip())
|
||||||
|
|
||||||
|
|
||||||
def is_enabled():
|
def is_enabled():
|
||||||
"""Return whether the module is enabled."""
|
"""Return whether the module is enabled."""
|
||||||
return (action_utils.webserver_is_enabled('searx-freedombox')
|
return (action_utils.webserver_is_enabled('searx-freedombox')
|
||||||
|
|||||||
32
plinth/modules/searx/forms.py
Normal file
32
plinth/modules/searx/forms.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#
|
||||||
|
# This file is part of FreedomBox.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
"""
|
||||||
|
Plinth form for configuring Searx.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django import forms
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from plinth.forms import ServiceForm
|
||||||
|
|
||||||
|
|
||||||
|
class SearxForm(ServiceForm):
|
||||||
|
"""Searx configuration form."""
|
||||||
|
safe_search = forms.ChoiceField(label="Safe Search", help_text=_(
|
||||||
|
'Select the default family filter to apply to your search results.'),
|
||||||
|
choices=((0, 'None'), (1, 'Moderate'),
|
||||||
|
(2, 'Strict')))
|
||||||
@ -20,13 +20,8 @@ URLs for the Searx module.
|
|||||||
|
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
|
||||||
from plinth.modules import searx
|
from .views import SearxServiceView
|
||||||
from plinth.views import ServiceView
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^apps/searx/$',
|
url(r'^apps/searx/$', SearxServiceView.as_view(), name='index'),
|
||||||
ServiceView.as_view(
|
|
||||||
service_id='searx', diagnostics_module_name='searx',
|
|
||||||
description=searx.description, clients=searx.clients,
|
|
||||||
show_status_block=False), name='index'),
|
|
||||||
]
|
]
|
||||||
|
|||||||
62
plinth/modules/searx/views.py
Normal file
62
plinth/modules/searx/views.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#
|
||||||
|
# This file is part of FreedomBox.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
"""
|
||||||
|
Plinth views for Searx.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django.contrib import messages
|
||||||
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
|
from plinth import actions, views
|
||||||
|
from plinth.errors import ActionError
|
||||||
|
from plinth.modules.searx import clients, description, get_safe_search_setting
|
||||||
|
|
||||||
|
from .forms import SearxForm
|
||||||
|
|
||||||
|
|
||||||
|
class SearxServiceView(views.ServiceView):
|
||||||
|
"""Serve configuration page."""
|
||||||
|
clients = clients
|
||||||
|
description = description
|
||||||
|
diagnostics_module_name = 'searx'
|
||||||
|
service_id = 'searx'
|
||||||
|
form_class = SearxForm
|
||||||
|
show_status_block = False
|
||||||
|
|
||||||
|
def get_initial(self):
|
||||||
|
"""Return the status of the service to fill in the form."""
|
||||||
|
initial = super().get_initial()
|
||||||
|
initial['safe_search'] = get_safe_search_setting()
|
||||||
|
return initial
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
"""Apply the changes submitted in the form."""
|
||||||
|
form_data = form.cleaned_data
|
||||||
|
|
||||||
|
if form_data['safe_search']:
|
||||||
|
try:
|
||||||
|
actions.superuser_run(
|
||||||
|
'searx',
|
||||||
|
['set-safe-search',
|
||||||
|
str(form_data['safe_search'])])
|
||||||
|
messages.success(self.request,
|
||||||
|
_('Safe search setting updated'))
|
||||||
|
except ActionError as e:
|
||||||
|
messages.error(self.request,
|
||||||
|
_('Failed to update safe search setting'))
|
||||||
|
|
||||||
|
return super().form_valid(form)
|
||||||
Loading…
x
Reference in New Issue
Block a user