Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HJ-97 - Missing QA from HJ-97 #5559

Merged
merged 4 commits into from
Dec 5, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 19 additions & 20 deletions src/fides/api/api/v1/endpoints/system.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@

from fides.api.api import deps
from fides.api.api.v1.endpoints.saas_config_endpoints import instantiate_connection
from fides.api.db.crud import get_resource, get_resource_with_custom_fields
from fides.api.db.crud import (
get_resource,
get_resource_with_custom_fields,
list_resource,
)
from fides.api.db.ctl_session import get_async_db
from fides.api.db.system import (
create_system,
Expand Down Expand Up @@ -396,16 +400,24 @@ async def ls( # pylint: disable=invalid-name
Otherwise all Systems will be returned (this may be a slow operation if there are many systems,
so using the pagination parameters is recommended).
"""

query = select(System)
if not (
size
or page
or search
or data_uses
or data_categories
or data_subjects
or dnd_relevant
or show_hidden
):
return await list_resource(System, db)
andres-torres-marroquin marked this conversation as resolved.
Show resolved Hide resolved

pagination_params = Params(page=page or 1, size=size or 50)
# Need to join with PrivacyDeclaration in order to be able to filter
# by data use, data category, and data subject
if any([data_uses, data_categories, data_subjects]):
query = query.outerjoin(
PrivacyDeclaration, System.id == PrivacyDeclaration.system_id
)
query = select(System).outerjoin(
PrivacyDeclaration, System.id == PrivacyDeclaration.system_id
)
andres-torres-marroquin marked this conversation as resolved.
Show resolved Hide resolved
andres-torres-marroquin marked this conversation as resolved.
Show resolved Hide resolved

# Fetch any system that is relevant for Detection and Discovery, ie any of the following:
# - has connection configurations (has some integration for DnD or SaaS)
Expand Down Expand Up @@ -447,19 +459,6 @@ async def ls( # pylint: disable=invalid-name
# Add a distinct so we only get one row per system
duplicates_removed = filtered_query.distinct(System.id)

if not (
size
or page
or search
or data_uses
or data_categories
or data_subjects
or dnd_relevant
or show_hidden
):
result = await db.execute(duplicates_removed)
return result.scalars().all()

return await async_paginate(db, duplicates_removed, pagination_params)


Expand Down
Loading