mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Refactor _normalize_domain_path into DomainQuestion + PathQuestion normalizers
This commit is contained in:
parent
4cc2c9787d
commit
26a4992961
2 changed files with 30 additions and 23 deletions
|
@ -55,6 +55,8 @@ from yunohost.utils import packages
|
||||||
from yunohost.utils.config import (
|
from yunohost.utils.config import (
|
||||||
ConfigPanel,
|
ConfigPanel,
|
||||||
ask_questions_and_parse_answers,
|
ask_questions_and_parse_answers,
|
||||||
|
DomainQuestion,
|
||||||
|
PathQuestion
|
||||||
)
|
)
|
||||||
from yunohost.utils.i18n import _value_for_locale
|
from yunohost.utils.i18n import _value_for_locale
|
||||||
from yunohost.utils.error import YunohostError, YunohostValidationError
|
from yunohost.utils.error import YunohostError, YunohostValidationError
|
||||||
|
@ -441,8 +443,11 @@ def app_change_url(operation_logger, app, domain, path):
|
||||||
old_path = app_setting(app, "path")
|
old_path = app_setting(app, "path")
|
||||||
|
|
||||||
# Normalize path and domain format
|
# Normalize path and domain format
|
||||||
old_domain, old_path = _normalize_domain_path(old_domain, old_path)
|
|
||||||
domain, path = _normalize_domain_path(domain, path)
|
domain = DomainQuestion.normalize(domain)
|
||||||
|
old_domain = DomainQuestion.normalize(old_domain)
|
||||||
|
path = PathQuestion.normalize(path)
|
||||||
|
old_path = PathQuestion.normalize(old_path)
|
||||||
|
|
||||||
if (domain, path) == (old_domain, old_path):
|
if (domain, path) == (old_domain, old_path):
|
||||||
raise YunohostValidationError(
|
raise YunohostValidationError(
|
||||||
|
@ -1459,7 +1464,8 @@ def app_register_url(app, domain, path):
|
||||||
permission_sync_to_user,
|
permission_sync_to_user,
|
||||||
)
|
)
|
||||||
|
|
||||||
domain, path = _normalize_domain_path(domain, path)
|
domain = DomainQuestion.normalize(domain)
|
||||||
|
path = PathQuestion.normalize(path)
|
||||||
|
|
||||||
# We cannot change the url of an app already installed simply by changing
|
# We cannot change the url of an app already installed simply by changing
|
||||||
# the settings...
|
# the settings...
|
||||||
|
@ -2381,7 +2387,9 @@ def _validate_and_normalize_webpath(args_dict, app_folder):
|
||||||
|
|
||||||
domain = domain_args[0][1]
|
domain = domain_args[0][1]
|
||||||
path = path_args[0][1]
|
path = path_args[0][1]
|
||||||
domain, path = _normalize_domain_path(domain, path)
|
|
||||||
|
domain = DomainQuestion.normalize(domain)
|
||||||
|
path = PathQuestion.normalize(path)
|
||||||
|
|
||||||
# Check the url is available
|
# Check the url is available
|
||||||
_assert_no_conflicting_apps(domain, path)
|
_assert_no_conflicting_apps(domain, path)
|
||||||
|
@ -2415,24 +2423,6 @@ def _validate_and_normalize_webpath(args_dict, app_folder):
|
||||||
_assert_no_conflicting_apps(domain, "/", full_domain=True)
|
_assert_no_conflicting_apps(domain, "/", full_domain=True)
|
||||||
|
|
||||||
|
|
||||||
def _normalize_domain_path(domain, path):
|
|
||||||
|
|
||||||
# We want url to be of the format :
|
|
||||||
# some.domain.tld/foo
|
|
||||||
|
|
||||||
# Remove http/https prefix if it's there
|
|
||||||
if domain.startswith("https://"):
|
|
||||||
domain = domain[len("https://") :]
|
|
||||||
elif domain.startswith("http://"):
|
|
||||||
domain = domain[len("http://") :]
|
|
||||||
|
|
||||||
# Remove trailing slashes
|
|
||||||
domain = domain.rstrip("/").lower()
|
|
||||||
path = "/" + path.strip("/")
|
|
||||||
|
|
||||||
return domain, path
|
|
||||||
|
|
||||||
|
|
||||||
def _get_conflicting_apps(domain, path, ignore_app=None):
|
def _get_conflicting_apps(domain, path, ignore_app=None):
|
||||||
"""
|
"""
|
||||||
Return a list of all conflicting apps with a domain/path (it can be empty)
|
Return a list of all conflicting apps with a domain/path (it can be empty)
|
||||||
|
@ -2445,7 +2435,8 @@ def _get_conflicting_apps(domain, path, ignore_app=None):
|
||||||
|
|
||||||
from yunohost.domain import _assert_domain_exists
|
from yunohost.domain import _assert_domain_exists
|
||||||
|
|
||||||
domain, path = _normalize_domain_path(domain, path)
|
domain = DomainQuestion.normalize(domain)
|
||||||
|
path = PathQuestion.normalize(path)
|
||||||
|
|
||||||
# Abort if domain is unknown
|
# Abort if domain is unknown
|
||||||
_assert_domain_exists(domain)
|
_assert_domain_exists(domain)
|
||||||
|
|
|
@ -728,6 +728,10 @@ class PathQuestion(Question):
|
||||||
argument_type = "path"
|
argument_type = "path"
|
||||||
default_value = ""
|
default_value = ""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def normalize(value, option={}):
|
||||||
|
return "/" + value.strip("/")
|
||||||
|
|
||||||
|
|
||||||
class BooleanQuestion(Question):
|
class BooleanQuestion(Question):
|
||||||
argument_type = "boolean"
|
argument_type = "boolean"
|
||||||
|
@ -837,6 +841,18 @@ class DomainQuestion(Question):
|
||||||
error=m18n.n("domain_name_unknown", domain=self.value),
|
error=m18n.n("domain_name_unknown", domain=self.value),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def normalize(value, option={}):
|
||||||
|
if value.startswith("https://"):
|
||||||
|
value = value[len("https://"):]
|
||||||
|
elif value.startswith("http://"):
|
||||||
|
value = value[len("http://"):]
|
||||||
|
|
||||||
|
# Remove trailing slashes
|
||||||
|
value = value.rstrip("/").lower()
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
class UserQuestion(Question):
|
class UserQuestion(Question):
|
||||||
argument_type = "user"
|
argument_type = "user"
|
||||||
|
|
Loading…
Add table
Reference in a new issue