from marshmallow import Schema, fields from atlas_um import pgdb class DNAAccountDetail(Schema): id = fields.Method("get_id") products = fields.Method("get_products") def get_id(self, obj): dna_account = None try: dna_account = obj["result"].value except (KeyError, AttributeError): # nosec pass if isinstance(dna_account, pgdb.DNAAccount): return dna_account.sub def get_products(self, obj): dna_account = None try: dna_account = obj["result"].value except (KeyError, AttributeError): # nosec pass if not isinstance(dna_account, pgdb.DNAAccount): return [] resource_groups = list(dna_account.enabled_resource_groups) try: resource_groups.extend( arg for arg in obj["args"] if isinstance(arg, pgdb.ResourceGroup) ) except (KeyError, AttributeError): # nosec pass return list( sorted(set(group.external_id for group in resource_groups)) )