156 lines
2.7 KiB
Python
156 lines
2.7 KiB
Python
from dataclasses import dataclass, asdict
|
|
from typing import List, Optional, Dict, Any
|
|
|
|
|
|
@dataclass
|
|
class PeriodoDTO:
|
|
inicio: str
|
|
fim: Optional[str]
|
|
ativo: bool
|
|
anos_decorridos: float
|
|
|
|
|
|
@dataclass
|
|
class CoordenacaoCapesDTO:
|
|
codigo: str
|
|
tipo: str
|
|
area_avaliacao: str
|
|
periodo: PeriodoDTO
|
|
areas_adicionais: List[str]
|
|
ja_coordenou_antes: bool
|
|
presidente: bool
|
|
|
|
|
|
@dataclass
|
|
class ConsultoriaDTO:
|
|
codigo: str
|
|
situacao: str
|
|
periodo: PeriodoDTO
|
|
areas: List[str]
|
|
anos_consecutivos: int
|
|
retornos: int
|
|
|
|
|
|
@dataclass
|
|
class InscricaoDTO:
|
|
codigo: str
|
|
tipo: str
|
|
premio: str
|
|
ano: int
|
|
situacao: str
|
|
|
|
|
|
@dataclass
|
|
class AvaliacaoComissaoDTO:
|
|
codigo: str
|
|
tipo: str
|
|
premio: str
|
|
ano: int
|
|
comissao_tipo: str
|
|
|
|
|
|
@dataclass
|
|
class PremiacaoDTO:
|
|
codigo: str
|
|
tipo: str
|
|
nome_premio: str
|
|
ano: int
|
|
papel: Optional[str] = None
|
|
|
|
|
|
@dataclass
|
|
class BolsaCNPQDTO:
|
|
codigo: str
|
|
nivel: str
|
|
area: str
|
|
|
|
|
|
@dataclass
|
|
class ParticipacaoDTO:
|
|
codigo: str
|
|
tipo: str
|
|
descricao: str
|
|
ano: Optional[int]
|
|
|
|
|
|
@dataclass
|
|
class OrientacaoDTO:
|
|
codigo: str
|
|
tipo: str
|
|
nivel: str
|
|
ano: Optional[int]
|
|
coorientacao: bool = False
|
|
premiada: bool = False
|
|
premiacao_tipo: Optional[str] = None
|
|
|
|
|
|
@dataclass
|
|
class MembroBancaDTO:
|
|
codigo: str
|
|
tipo: str
|
|
nivel: str
|
|
ano: Optional[int]
|
|
|
|
|
|
@dataclass
|
|
class PontuacaoAtuacaoDTO:
|
|
codigo: str
|
|
base: int
|
|
tempo: int
|
|
bonus: int
|
|
total: int
|
|
quantidade: int
|
|
|
|
|
|
@dataclass
|
|
class PontuacaoBlocoDTO:
|
|
bloco: str
|
|
total: int
|
|
atuacoes: List[PontuacaoAtuacaoDTO]
|
|
|
|
|
|
@dataclass
|
|
class PontuacaoCompletaDTO:
|
|
bloco_a: PontuacaoBlocoDTO
|
|
bloco_c: PontuacaoBlocoDTO
|
|
bloco_d: PontuacaoBlocoDTO
|
|
pontuacao_total: int
|
|
|
|
|
|
@dataclass
|
|
class ConsultorResumoDTO:
|
|
id_pessoa: int
|
|
nome: str
|
|
anos_atuacao: float
|
|
ativo: bool
|
|
veterano: bool
|
|
pontuacao_total: int
|
|
bloco_a: int
|
|
bloco_c: int
|
|
bloco_d: int
|
|
rank: Optional[int] = None
|
|
|
|
|
|
@dataclass
|
|
class ConsultorDetalhadoDTO:
|
|
id_pessoa: int
|
|
nome: str
|
|
anos_atuacao: float
|
|
ativo: bool
|
|
veterano: bool
|
|
coordenador_ppg: bool
|
|
coordenacoes_capes: List[CoordenacaoCapesDTO]
|
|
consultoria: Optional[ConsultoriaDTO]
|
|
inscricoes: List[InscricaoDTO]
|
|
avaliacoes_comissao: List[AvaliacaoComissaoDTO]
|
|
premiacoes: List[PremiacaoDTO]
|
|
bolsas_cnpq: List[BolsaCNPQDTO]
|
|
participacoes: List[ParticipacaoDTO]
|
|
orientacoes: List[OrientacaoDTO]
|
|
membros_banca: List[MembroBancaDTO]
|
|
pontuacao: PontuacaoCompletaDTO
|
|
rank: Optional[int] = None
|
|
|
|
def to_dict(self) -> Dict[str, Any]:
|
|
return asdict(self)
|