test uppercase character before valid domain name for better error message

This commit is contained in:
2014-12-07 14:51:51 +01:00
parent bc65caa4dc
commit 85297d8c4d
5 changed files with 360 additions and 255 deletions

View File

@ -409,6 +409,7 @@ class DomainnameOption(Option):
extra['_allow_ip'] = allow_ip
extra['_allow_without_dot'] = allow_without_dot
extra['_domain_re'] = re.compile(r'^[a-z\d][a-z\d\-]*$')
extra['_has_upper'] = re.compile('[A-Z]')
super(DomainnameOption, self).__init__(name, doc, default=default,
default_multi=default_multi,
@ -452,9 +453,11 @@ class DomainnameOption(Option):
def _second_level_validation(self, value, warnings_only):
def _valid_char(val):
if self._get_extra('_has_upper').search(val):
raise ValueError(_('some characters are uppercase'))
if not self._get_extra('_domain_re').search(val):
if warnings_only:
raise ValueError(_('same characters may cause problems'))
raise ValueError(_('some characters may cause problems'))
else:
raise ValueError(_('invalid domainname'))
#not for IP