Browse Source

[mod] preferences.py: check language setting with a regex instead of match_language

Alexandre Flament 4 years ago
parent
commit
507896c115
4 changed files with 8 additions and 8 deletions
  1. 3 4
      searx/preferences.py
  2. 1 3
      searx/query.py
  3. 2 1
      searx/webadapter.py
  4. 2 0
      searx/webutils.py

+ 3 - 4
searx/preferences.py

@@ -10,7 +10,7 @@ from urllib.parse import parse_qs, urlencode
 
 from searx import settings, autocomplete
 from searx.languages import language_codes as languages
-from searx.utils import match_language
+from searx.webutils import VALID_LANGUAGE_CODE
 
 
 COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5  # 5 years
@@ -162,9 +162,7 @@ class SearchLanguageSetting(EnumStringSetting):
     """Available choices may change, so user's value may not be in choices anymore"""
 
     def _validate_selection(self, selection):
-        if selection != "" and not match_language(
-                # pylint: disable=no-member
-                selection, self.choices, fallback=None):
+        if selection != '' and not VALID_LANGUAGE_CODE.match(selection):
             raise ValidationException('Invalid language code: "{0}"'.format(selection))
 
     def parse(self, data):
@@ -181,6 +179,7 @@ class SearchLanguageSetting(EnumStringSetting):
                 data = lang
             else:
                 data = self.value
+        self._validate_selection(data)
         self.value = data
 
 

+ 1 - 3
searx/query.py

@@ -22,9 +22,7 @@ import re
 from searx.languages import language_codes
 from searx.engines import categories, engines, engine_shortcuts
 from searx.search import EngineRef
-
-
-VALID_LANGUAGE_CODE = re.compile(r'^[a-z]{2,3}(-[a-zA-Z]{2})?$')
+from searx.webutils import VALID_LANGUAGE_CODE
 
 
 class RawTextQuery:

+ 2 - 1
searx/webadapter.py

@@ -1,6 +1,7 @@
 from typing import Dict, List, Optional, Tuple
 from searx.exceptions import SearxParameterException
-from searx.query import RawTextQuery, VALID_LANGUAGE_CODE
+from searx.webutils import VALID_LANGUAGE_CODE
+from searx.query import RawTextQuery
 from searx.engines import categories, engines
 from searx.search import SearchQuery, EngineRef
 from searx.preferences import Preferences

+ 2 - 0
searx/webutils.py

@@ -11,6 +11,8 @@ from codecs import getincrementalencoder
 from searx import logger
 
 
+VALID_LANGUAGE_CODE = re.compile(r'^[a-z]{2,3}(-[a-zA-Z]{2})?$')
+
 logger = logger.getChild('webutils')