User prefs: return sr.name instead of Subreddit for themes

This resolves as an error in serializing the user prefs into json for the api.
This commit is contained in:
MelissaCole
2016-01-15 12:17:24 -08:00
parent 1ffeeb5bc9
commit 0bbc1e465c
2 changed files with 13 additions and 6 deletions

View File

@@ -83,8 +83,10 @@ PREFS_VALIDATORS = dict(
pref_use_global_defaults=VBoolean("use_global_defaults"),
pref_creddit_autorenew=VBoolean("creddit_autorenew"),
pref_enable_default_themes=VBoolean("enable_default_themes", False),
pref_default_theme_sr=VSRByName("theme_selector", False),
pref_other_theme=VSRByName("other_theme", False),
pref_default_theme_sr=VSRByName("theme_selector", required=False,
return_srname=True),
pref_other_theme=VSRByName("other_theme", required=False,
return_srname=True),
pref_beta=VBoolean('beta'),
pref_legacy_search=VBoolean('legacy_search'),
pref_threaded_modmail=VBoolean('threaded_modmail', False),
@@ -140,8 +142,9 @@ def filter_prefs(prefs, user):
prefs['pref_highlight_new_comments'] = True
# check stylesheet override
if feature.is_enabled('stylesheets_everywhere', user=user):
override_sr = prefs['pref_default_theme_sr']
if (feature.is_enabled('stylesheets_everywhere', user=user) and
prefs['pref_default_theme_sr']):
override_sr = Subreddit._by_name(prefs['pref_default_theme_sr'])
if not override_sr:
del prefs['pref_default_theme_sr']
if prefs['pref_enable_default_themes']:

View File

@@ -720,8 +720,9 @@ class VAvailableSubredditName(VSubredditName):
class VSRByName(Validator):
def __init__(self, sr_name, required=True):
def __init__(self, sr_name, required=True, return_srname=False):
self.required = required
self.return_srname = return_srname
Validator.__init__(self, sr_name)
def run(self, sr_name):
@@ -732,7 +733,10 @@ class VSRByName(Validator):
sr_name = sr_path_rx.sub('\g<name>', sr_name.strip())
try:
sr = Subreddit._by_name(sr_name)
return sr
if self.return_srname:
return sr.name
else:
return sr
except NotFound:
self.set_error(errors.SUBREDDIT_NOEXIST, code=400)