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 import settings, autocomplete
 from searx.languages import language_codes as languages
 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
 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"""
     """Available choices may change, so user's value may not be in choices anymore"""
 
 
     def _validate_selection(self, selection):
     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))
             raise ValidationException('Invalid language code: "{0}"'.format(selection))
 
 
     def parse(self, data):
     def parse(self, data):
@@ -181,6 +179,7 @@ class SearchLanguageSetting(EnumStringSetting):
                 data = lang
                 data = lang
             else:
             else:
                 data = self.value
                 data = self.value
+        self._validate_selection(data)
         self.value = data
         self.value = data
 
 
 
 

+ 1 - 3
searx/query.py

@@ -22,9 +22,7 @@ import re
 from searx.languages import language_codes
 from searx.languages import language_codes
 from searx.engines import categories, engines, engine_shortcuts
 from searx.engines import categories, engines, engine_shortcuts
 from searx.search import EngineRef
 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:
 class RawTextQuery:

+ 2 - 1
searx/webadapter.py

@@ -1,6 +1,7 @@
 from typing import Dict, List, Optional, Tuple
 from typing import Dict, List, Optional, Tuple
 from searx.exceptions import SearxParameterException
 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.engines import categories, engines
 from searx.search import SearchQuery, EngineRef
 from searx.search import SearchQuery, EngineRef
 from searx.preferences import Preferences
 from searx.preferences import Preferences

+ 2 - 0
searx/webutils.py

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