mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-01-28 08:17:58 -05:00
Make it possible to unflair deleted accounts.
This commit is contained in:
@@ -1896,7 +1896,8 @@ class ApiController(RedditController):
|
||||
|
||||
@validatedForm(VFlairManager(),
|
||||
VModhash(),
|
||||
user = VExistingUname("name"),
|
||||
user = VExistingUname("name", allow_deleted=True,
|
||||
prefer_existing=True),
|
||||
text = VFlairText("text"),
|
||||
css_class = VFlairCss("css_class"))
|
||||
def POST_flair(self, form, jquery, user, text, css_class):
|
||||
@@ -1941,7 +1942,8 @@ class ApiController(RedditController):
|
||||
|
||||
@validatedForm(VFlairManager(),
|
||||
VModhash(),
|
||||
user = VExistingUname("name"))
|
||||
user = VExistingUname("name", allow_deleted=True,
|
||||
prefer_existing=True))
|
||||
def POST_deleteflair(self, form, jquery, user):
|
||||
# Check validation.
|
||||
if form.has_errors('name', errors.USER_DOESNT_EXIST, errors.NO_USER):
|
||||
@@ -1978,7 +1980,8 @@ class ApiController(RedditController):
|
||||
line_result.error('row', 'improperly formatted row, ignoring')
|
||||
continue
|
||||
|
||||
user = VExistingUname('name').run(name)
|
||||
user = VExistingUname('name', allow_deleted=True,
|
||||
prefer_existing=True).run(name)
|
||||
if not user:
|
||||
line_result.error('user',
|
||||
"unable to resolve user `%s', ignoring"
|
||||
@@ -2042,7 +2045,8 @@ class ApiController(RedditController):
|
||||
|
||||
@paginated_listing(max_page_size=1000)
|
||||
@validate(VFlairManager(),
|
||||
user = VOptionalExistingUname('name'))
|
||||
user = VOptionalExistingUname('name', allow_deleted=True,
|
||||
prefer_existing=True))
|
||||
def GET_flairlist(self, num, after, reverse, count, user):
|
||||
flair = FlairList(num, after, reverse, '', user)
|
||||
return BoringPage(_("API"), content = flair).render()
|
||||
|
||||
@@ -898,26 +898,37 @@ class VUrl(VRequired):
|
||||
return self.error(errors.BAD_URL)
|
||||
|
||||
class VOptionalExistingUname(VRequired):
|
||||
def __init__(self, item, allow_deleted=False, *a, **kw):
|
||||
def __init__(self, item, allow_deleted=False, prefer_existing=False,
|
||||
*a, **kw):
|
||||
self.allow_deleted = allow_deleted
|
||||
self.prefer_existing = prefer_existing
|
||||
VRequired.__init__(self, item, errors.NO_USER, *a, **kw)
|
||||
|
||||
def run(self, name):
|
||||
if self.prefer_existing:
|
||||
result = self._lookup(name, False)
|
||||
if not result and self.allow_deleted:
|
||||
result = self._lookup(name, True)
|
||||
else:
|
||||
result = self._lookup(name, self.allow_deleted)
|
||||
return result or self.error(errors.USER_DOESNT_EXIST)
|
||||
|
||||
def _lookup(self, name, allow_deleted):
|
||||
if name and name.startswith('~') and c.user_is_admin:
|
||||
try:
|
||||
user_id = int(name[1:])
|
||||
return Account._byID(user_id, True)
|
||||
except (NotFound, ValueError):
|
||||
return self.error(errors.USER_DOESNT_EXIST)
|
||||
return None
|
||||
|
||||
# make sure the name satisfies our user name regexp before
|
||||
# bothering to look it up.
|
||||
name = chkuser(name)
|
||||
if name:
|
||||
try:
|
||||
return Account._by_name(name, allow_deleted=self.allow_deleted)
|
||||
return Account._by_name(name, allow_deleted=allow_deleted)
|
||||
except NotFound:
|
||||
return self.error(errors.USER_DOESNT_EXIST)
|
||||
return None
|
||||
|
||||
class VExistingUname(VOptionalExistingUname):
|
||||
def run(self, name):
|
||||
|
||||
Reference in New Issue
Block a user