def format_itens_equipamentos(data): """ Formata os dados dos itens de equipamentos em um formato específico. Retorna o formato: [ { "equipamento_nome": "string", "tipo_equipamento_nome": "string", "setor_nome": "string", "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "itens": [ { "itens_equipamentos_ns": "string", "itens_equipamentos_patrimonio": "string", "itens_equipamentos_data_compra": "2024-11-15", "itens_equipamentos_prazo_garantia": "2024-11-15", "itens_equipamentos_voltagem": "0", "itens_equipamentos_valor_aquisicao": 1, "itens_equipamentos_rfid_uid": "stringst", "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "itens_equipamentos_manutencao": true/false, } ] } ] """ formatted_response = [] # Mapeia os dados em uma estrutura agrupada for item in data: equipamento = item.relacao_equipamento tipo_equipamento = equipamento.relacao_tipo_equipamento setor = tipo_equipamento.relacao_setor # Procura se já existe uma entrada para o equipamento equipamento_entry = next( (entry for entry in formatted_response if entry["equipamento_uuid"] == equipamento.uuid), None ) # Cria uma nova entrada caso não exista if not equipamento_entry: equipamento_entry = { "equipamento_nome": equipamento.equipamento_nome, "equipamento_uuid": equipamento.uuid, "equipamento_fk_tipo_equipamento": equipamento.fk_tipo_equipamento_uuid, "tipo_equipamento_nome": tipo_equipamento.tipo_equipamento_nome, "tipo_equipamento_uuid": tipo_equipamento.uuid, "tipo_equipamento_fk_setor": tipo_equipamento.fk_setor_uuid, "setor_nome": setor.setor_nome, "setor_uuid": setor.uuid, "itens": [] } formatted_response.append(equipamento_entry) # Adiciona o item à lista de itens do equipamento equipamento_entry["itens"].append({ "itens_equipamentos_ns": item.itens_equipamentos_ns, "itens_equipamentos_patrimonio": item.itens_equipamentos_patrimonio, "itens_equipamentos_data_compra": item.itens_equipamentos_data_compra, "itens_equipamentos_prazo_garantia": item.itens_equipamentos_prazo_garantia, "itens_equipamentos_voltagem": item.itens_equipamentos_voltagem, "itens_equipamentos_valor_aquisicao": item.itens_equipamentos_valor_aquisicao, "itens_equipamentos_rfid_uid": item.itens_equipamentos_rfid_uid, "itens_equipamentos_manutencao": item.itens_equipamentos_manutencao, "uuid": item.uuid }) return formatted_response # Dicionário de mapeamento para os formatadores formatters_map = { "itens_equipamentos": format_itens_equipamentos, # Adicione outros formatadores aqui conforme necessário }