fix poor, fix 500, sanitize fun stuff

remotes/1693176582716663532/tmp_refs/heads/watchparty
justcool393 2022-11-06 21:28:27 -06:00
parent 0c42a8d269
commit 54fecd99e5
1 changed files with 23 additions and 28 deletions

View File

@ -43,6 +43,8 @@ def remove_background(v):
def settings_personal_post(v):
updated = False
# begin common selectors #
def update_flag(column_name:str, request_name:str):
if not request.values.get(request_name, ''): return False
request_flag = request.values.get(request_name, '') == 'true'
@ -68,9 +70,21 @@ def settings_personal_post(v):
return True
return False
if request.values.get("background", v.background) != v.background:
updated = True
def set_selector_option(column_name:str, api_name:str, valid_values:Iterable[str], error_msg:str="value"):
opt = request.values.get(api_name)
if opt: opt = opt.strip()
if not opt: return False
if opt in valid_values:
setattr(v, column_name, opt)
return True
abort(400, f"'{opt}' is not a valid {error_msg}")
# end common selectors #
background = request.values.get("background", v.background)
if background != v.background and not ".." in background and background.endswith(".webp") and len(background) < 20 and os.path.isfile(background):
v.background = request.values.get("background")
updated = True
elif request.values.get("reddit", v.reddit) != v.reddit:
reddit = request.values.get("reddit")
if reddit in {'old.reddit.com', 'reddit.com', 'i.reddit.com', 'teddit.net', 'libredd.it', 'unddit.com'}:
@ -78,6 +92,7 @@ def settings_personal_post(v):
v.reddit = reddit
elif request.values.get("poor", v.poor) != v.poor:
updated = True
v.poor = request.values.get("poor", v.poor) == 'true'
session['poor'] = v.poor
slur_filter_updated = updated or update_potentially_permanent_flag("slurreplacer", "slurreplacer", "slur replacer", 192)
@ -164,7 +179,6 @@ def settings_personal_post(v):
v=v,
error="Your friends list is too long")
notify_users = NOTIFY_USERS(friends, v)
if notify_users:
@ -190,9 +204,7 @@ def settings_personal_post(v):
v=v,
error="Your enemies list is too long")
notify_users = NOTIFY_USERS(enemies, v)
if notify_users:
cid = notif_comment(f"@{v.username} has added you to their enemies list!")
for x in notify_users:
@ -236,30 +248,13 @@ def settings_personal_post(v):
updated = True
cache.delete_memoized(frontlist)
else: abort(400)
defaultsortingcomments = request.values.get("defaultsortingcomments")
if defaultsortingcomments:
if defaultsortingcomments in COMMENT_SORTS:
v.defaultsortingcomments = defaultsortingcomments
updated = True
else: abort(400, f"{defaultsortingcomments} is not a valid comment sort")
defaultsorting = request.values.get("defaultsorting")
if defaultsorting:
if defaultsorting in SORTS:
v.defaultsorting = defaultsorting
updated = True
else: abort(400, f"{defaultsorting} is not a valid post sort")
defaulttime = request.values.get("defaulttime")
if defaulttime:
if defaulttime in TIME_FILTERS:
v.defaulttime = defaulttime
updated = True
else: abort(400, f"{defaulttime} is not a valid time filter")
updated = updated or set_selector_option("defaultsortingcomments", "defaultsortingcomments", COMMENT_SORTS, "comment sort")
updated = updated or set_selector_option("defaultsorting", "defaultsorting", SORTS, "post sort")
updated = updated or set_selector_option("defaulttime", "defaulttime", TIME_FILTERS, "time filter")
theme = request.values.get("theme")
if theme:
if not updated and theme:
if theme in THEMES:
if theme == "transparent" and not v.background:
abort(409, "You need to set a background to use the transparent theme")
@ -269,7 +264,7 @@ def settings_personal_post(v):
else: abort(400, f"{theme} is not a valid theme")
house = request.values.get("house")
if house and house in HOUSES and FEATURES['HOUSES']:
if not updated and house and house in HOUSES and FEATURES['HOUSES']:
if v.bite: abort(403)
if v.house:
if v.house.replace(' Founder', '') == house: abort(409, f"You're already in House {house}")