mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-04-05 03:00:15 -04:00
Improve error messages for invalid multi names.
This commit is contained in:
@@ -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')),
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user