"""Subaccount Resource Getters.""" from dataclasses import asdict from typing import Any from ddtrace import tracer from account.constants import constants, tenants from account.logic.resource_getters.attributes import Attributes, Tenant from account.logic.subaccount import lookup_subaccounts_by_uuids class SubaccountByUuidResourceGetter: def __init__(self, subaccount_uuid: str): self.subaccount_uuid = subaccount_uuid @tracer.wrap() def get_attributes(self, *args: Any, **kwargs: Any) -> dict[str, Any]: result = lookup_subaccounts_by_uuids( [self.subaccount_uuid], [constants.FETCH_TENANT_HIERARCHY] ) if not result or not result.message: return {} subaccounts = result.message.get('subaccounts') if not isinstance(subaccounts, list) or not subaccounts: return {} subaccount_data = subaccounts[0] if not subaccount_data or 'uuid' not in subaccount_data: return {} tenant = Tenant( tenant_uuid=subaccount_data['uuid'], tenant_type=tenants.TenantType.SUBACCOUNT, tenant_hierarchy=[ subaccount_data.get('parent_company_uuid'), subaccount_data.get('company_brand_uuid'), subaccount_data.get('vendor_uuid'), ], ) return asdict(Attributes(tenant=tenant, name=self.subaccount_uuid))