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

Refactor/ooi details #3275

Merged
merged 16 commits into from
Jul 29, 2024
11 changes: 9 additions & 2 deletions rocky/rocky/views/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from datetime import datetime, timezone
from functools import cached_property
from operator import attrgetter
from typing import TypedDict

import structlog
from account.mixins import OrganizationView
Expand Down Expand Up @@ -47,6 +48,12 @@ class OriginData(BaseModel):
params: dict[str, str] | None = None


class Origins(TypedDict):
declarations: list[OriginData]
observations: list[OriginData]
inferences: list[OriginData]


class OOIAttributeError(AttributeError):
pass

Expand Down Expand Up @@ -99,11 +106,11 @@ def get_origins(
self,
reference: Reference,
organization: Organization,
) -> tuple[list[OriginData], list[OriginData], list[OriginData]]:
) -> Origins:
declarations: list[OriginData] = []
observations: list[OriginData] = []
inferences: list[OriginData] = []
results = declarations, observations, inferences
results = Origins({"declarations": declarations, "observations": observations, "inferences": inferences})
underdarknl marked this conversation as resolved.
Show resolved Hide resolved

try:
origins = self.octopoes_api_connector.list_origins(self.observed_at, result=reference)
Expand Down
10 changes: 3 additions & 7 deletions rocky/rocky/views/ooi_detail.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,24 +93,20 @@ def get_context_data(self, **kwargs):
context["boefjes"] = [boefje for boefje in boefjes if boefje.scan_level.value <= max_level]
context["ooi"] = self.ooi

declarations, observations, inferences = self.get_origins(self.ooi.reference, self.organization)
context.update(self.get_origins(self.ooi.reference, self.organization))

inference_params = self.octopoes_api_connector.list_origin_parameters(
{inference.origin.id for inference in inferences},
{inference.origin.id for inference in context["inferences"]},
self.observed_at,
)
inference_params_per_inference = defaultdict(list)
for inference_param in inference_params:
inference_params_per_inference[inference_param.origin_id].append(inference_param)

inference_origin_params: list[tuple] = []
for inference in inferences:
for inference in context["inferences"]:
inference_origin_params.append((inference, inference_params_per_inference[inference.origin.id]))

context["declarations"] = declarations

context["observations"] = observations
context["inferences"] = inferences
context["inference_origin_params"] = inference_origin_params
context["member"] = self.organization_member

Expand Down