Improve error messages for invalid multi names.

This commit is contained in:
Max Goodman
2013-05-08 16:10:19 -07:00
parent a5479b0ac9
commit 8007496321
2 changed files with 31 additions and 4 deletions

View File

@@ -121,7 +121,8 @@ error_list = dict((
('BAD_JSONP_CALLBACK', _('that jsonp callback contains invalid characters')),
('INVALID_PERMISSION_TYPE', _("permissions don't apply to that type of user")),
('INVALID_PERMISSIONS', _('invalid permissions string')),
('BAD_MULTI_NAME', _('that name isn\'t going to work')),
('BAD_MULTI_PATH', _('invalid multi path')),
('BAD_MULTI_NAME', _('%(reason)s')),
('MULTI_NOT_FOUND', _('that multireddit doesn\'t exist')),
('MULTI_CANNOT_EDIT', _('you can\'t change that multireddit')),
('MULTI_TOO_MANY_SUBREDDITS', _('no more space for subreddits in that multireddit')),

View File

@@ -2184,6 +2184,9 @@ class VJSON(Validator):
}
multi_name_rx = subreddit_rx
multi_name_chars_rx = re.compile(r"[^A-Za-z0-9_]")
class VMultiPath(Validator):
@classmethod
def normalize(self, path):
@@ -2201,10 +2204,33 @@ class VMultiPath(Validator):
require(m == 'm')
username = chkuser(username)
require(username)
require(subreddit_rx.match(name))
return {'path': path, 'username': username, 'name': name}
except RequirementException:
self.set_error('BAD_MULTI_NAME', code=400)
self.set_error('BAD_MULTI_PATH', code=400)
return
try:
require(multi_name_rx.match(name))
except RequirementException:
invalid_char = multi_name_chars_rx.search(name)
if invalid_char:
char = invalid_char.group()
if char == ' ':
reason = _('no spaces allowed')
else:
reason = _("invalid character: '%s'") % char
elif name[0] == '_':
reason = _("can't start with a '_'")
elif len(name) < 3:
reason = _('that name is too short')
elif len(name) > 21:
reason = _('that name is too long')
else:
reason = _("that name isn't going to work")
self.set_error('BAD_MULTI_NAME', {'reason': reason}, code=400)
return
return {'path': path, 'username': username, 'name': name}
def param_docs(self):
return {