Add more comments about source parsing

This commit is contained in:
2023-02-10 07:20:36 +00:00
parent 7d0ebf87bd
commit 2050e6cb47
2 changed files with 13 additions and 0 deletions

View File

@@ -98,6 +98,7 @@ def parse_source(user, query_params, raise_error=False):
if "source" in query_params:
source = query_params["source"]
# Validate permissions for restricted sources
if source in settings.SOURCES_RESTRICTED:
if not user.has_perm("core.restricted_sources"):
message = f"Access denied: {source}"
@@ -105,6 +106,8 @@ def parse_source(user, query_params, raise_error=False):
raise QueryError(message)
message_class = "danger"
return {"message": message, "class": message_class}
# Check validity of source
elif source not in settings.MAIN_SOURCES:
message = f"Invalid source: {source}"
if raise_error:
@@ -118,11 +121,17 @@ def parse_source(user, query_params, raise_error=False):
if source:
sources = [source]
else:
# Here we need to populate what "all" means for the user.
# They may only have access to a subset of the sources.
# We build a custom source list with ones they have access
# to, and then remove "all" from the list.
sources = list(settings.MAIN_SOURCES)
if user.has_perm("core.restricted_sources"):
# If the user can use restricted sources, add them in.
for source_iter in settings.SOURCES_RESTRICTED:
sources.append(source_iter)
# Get rid of "all", it's just a meta-source
if "all" in sources:
sources.remove("all")