Skip to content

Commit 976ccd8

Browse files
author
gabino
committed
Refactor Person model to support dynamic metadata and extra fields
1 parent 7704724 commit 976ccd8

1 file changed

Lines changed: 12 additions & 164 deletions

File tree

quienesquien/person.py

Lines changed: 12 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
from pydantic import BaseModel, ConfigDict, Field
1+
from pydantic import BaseModel, ConfigDict, Field, model_validator
22

33

44
class Person(BaseModel):
5+
lista: str = Field(alias='LISTA')
6+
coincidencia: int = Field(alias='COINCIDENCIA')
7+
nombrecomp: str = Field(alias='NOMBRECOMP')
58
id_persona: str | None = Field(default=None, alias='ID_PERSONA')
6-
coincidencia: int | None = Field(default=None, alias='COINCIDENCIA')
79
nombre: str | None = Field(default=None, alias='NOMBRE')
810
paterno: str | None = Field(default=None, alias='PATERNO')
911
materno: str | None = Field(default=None, alias='MATERNO')
@@ -13,169 +15,15 @@ class Person(BaseModel):
1315
default=None, alias='FECHA_NACIMIENTO'
1416
)
1517
sexo: str | None = Field(default=None, alias='SEXO')
16-
lista: str | None = Field(default=None, alias='LISTA')
17-
estatus: str | None = Field(default=None, alias='ESTATUS')
18-
dependencia: str | None = Field(default=None, alias='DEPENDENCIA')
19-
puesto: str | None = Field(default=None, alias='PUESTO')
20-
area: str | None = Field(default=None, alias='AREA')
21-
iddispo: int | None = Field(default=None, alias='IDDISPO')
22-
idrel: str | None = Field(default=None, alias='IDREL')
23-
parentesco: str | None = Field(default=None, alias='PARENTESCO')
24-
razonsoc: str | None = Field(default=None, alias='RAZONSOC')
25-
rfcmoral: str | None = Field(default=None, alias='RFCMORAL')
26-
issste: str | None = Field(default=None, alias='ISSSTE')
27-
imss: str | None = Field(default=None, alias='IMSS')
28-
ingresos: str | None = Field(default=None, alias='INGRESOS')
29-
nombrecomp: str | None = Field(default=None, alias='NOMBRECOMP')
30-
apellidos: str | None = Field(default=None, alias='APELLIDOS')
31-
entidad: str | None = Field(default=None, alias='ENTIDAD')
32-
imagen: str | None = Field(default=None, alias='IMAGEN')
33-
periodo: str | None = Field(default=None, alias='PERIODO')
34-
expediente: str | None = Field(default=None, alias='EXPEDIENTE')
35-
fecha_resolucion: str | None = Field(
36-
default=None, alias='FECHA_RESOLUCION'
37-
)
38-
causa_irregularidad: str | None = Field(
39-
default=None, alias='CAUSA_IRREGULARIDAD'
40-
)
41-
sancion: str | None = Field(default=None, alias='SANCION')
42-
fecha_cargo_ini: str | None = Field(default=None, alias='FECHA_CARGO_INI')
43-
fecha_cargo_fin: str | None = Field(default=None, alias='FECHA_CARGO_FIN')
44-
duracion: str | None = Field(default=None, alias='DURACION')
45-
monto: str | None = Field(default=None, alias='MONTO')
46-
autoridad_sanc: str | None = Field(default=None, alias='AUTORIDAD_SANC')
47-
admon_local: str | None = Field(default=None, alias='ADMON_LOCAL')
48-
numord: str | None = Field(default=None, alias='NUMORD')
49-
rubro: str | None = Field(default=None, alias='RUBRO')
50-
central_obrera: str | None = Field(default=None, alias='CENTRAL_OBRERA')
51-
numsocios: str | None = Field(default=None, alias='NUMSOCIOS')
52-
fecha_vigencia: str | None = Field(default=None, alias='FECHA_VIGENCIA')
53-
titulo: str | None = Field(default=None, alias='TITULO')
54-
domicilio_a: str | None = Field(default=None, alias='DOMICILIO_A')
55-
domicilio_b: str | None = Field(default=None, alias='DOMICILIO_B')
56-
colonia: str | None = Field(default=None, alias='COLONIA')
57-
cp: str | None = Field(default=None, alias='CP')
58-
ciudad: str | None = Field(default=None, alias='CIUDAD')
59-
lada: str | None = Field(default=None, alias='LADA')
60-
telefono: str | None = Field(default=None, alias='TELEFONO')
61-
fax: str | None = Field(default=None, alias='FAX')
62-
email: str | None = Field(default=None, alias='EMAIL')
63-
pais: str | None = Field(default=None, alias='PAIS')
64-
idrequerimiento: str | None = Field(default=None, alias='IDREQUERIMIENTO')
65-
fechaoficio: str | None = Field(default=None, alias='FECHAOFICIO')
66-
buscado_en: str | None = Field(default=None, alias='BUSCADO_EN')
67-
ciudadania: str | None = Field(default=None, alias='CIUDADANIA')
68-
pasaporte: str | None = Field(default=None, alias='PASAPORTE')
69-
cedula: str | None = Field(default=None, alias='CEDULA')
70-
nss: str | None = Field(default=None, alias='NSS')
71-
sancion_info: str | None = Field(default=None, alias='SANCION_INFO')
72-
ine: str | None = Field(default=None, alias='INE')
73-
italian_fiscal_code: str | None = Field(
74-
default=None, alias='ITALIAN_FISCAL_CODE'
75-
)
76-
registration_id: str | None = Field(default=None, alias='REGISTRATION_ID')
77-
national_foreign_id: str | None = Field(
78-
default=None, alias='NATIONAL_FOREIGN_ID'
79-
)
80-
vat_num: str | None = Field(default=None, alias='VAT_NUM')
81-
serial_num: str | None = Field(default=None, alias='SERIAL_NUM')
82-
kenyan_id: str | None = Field(default=None, alias='KENYAN_ID')
83-
dni: str | None = Field(default=None, alias='DNI')
84-
member_eta: str | None = Field(default=None, alias='MEMBER_ETA')
85-
operations_in: str | None = Field(default=None, alias='OPERATIONS_IN')
86-
icty: str | None = Field(default=None, alias='ICTY')
87-
registered_charity_no: str | None = Field(
88-
default=None, alias='REGISTERED_CHARITY_NO'
89-
)
90-
legal_situation: str | None = Field(default=None, alias='LEGAL_SITUATION')
91-
bosian_personal_id: str | None = Field(
92-
default=None, alias='BOSIAN_PERSONAL_ID'
93-
)
94-
parentesco_con: str | None = Field(default=None, alias='PARENTESCO_CON')
95-
le_number: str | None = Field(default=None, alias='LE_NUMBER')
96-
ruc_number: str | None = Field(default=None, alias='RUC_NUMBER')
97-
certificate_no: str | None = Field(default=None, alias='CERTIFICATE_NO')
98-
personal_id_card: str | None = Field(
99-
default=None, alias='PERSONAL_ID_CARD'
100-
)
101-
federal_id_card: str | None = Field(default=None, alias='FEDERAL_ID_CARD')
102-
visa_num: str | None = Field(default=None, alias='VISA_NUM')
103-
nuit: str | None = Field(default=None, alias='NUIT')
104-
nie: str | None = Field(default=None, alias='NIE')
105-
cif: str | None = Field(default=None, alias='CIF')
106-
cuip: str | None = Field(default=None, alias='CUIP')
107-
crn: str | None = Field(default=None, alias='CRN')
108-
fol_merc: str | None = Field(default=None, alias='FOL_MERC')
109-
cr_no: str | None = Field(default=None, alias='CR_NO')
110-
trukish_id_num: str | None = Field(default=None, alias='TRUKISH_ID_NUM')
111-
tribal_member: str | None = Field(default=None, alias='TRIBAL_MEMBER')
112-
refugee_id_card: str | None = Field(default=None, alias='REFUGEE_ID_CARD')
113-
resident_can: str | None = Field(default=None, alias='RESIDENT_CAN')
114-
cnp: str | None = Field(default=None, alias='CNP')
115-
rif: str | None = Field(default=None, alias='RIF')
116-
aircraft: str | None = Field(default=None, alias='AIRCRAFT')
117-
interpol_red_notice: str | None = Field(
118-
default=None, alias='INTERPOL_RED_NOTICE'
119-
)
120-
rtn: str | None = Field(default=None, alias='RTN')
121-
sre: str | None = Field(default=None, alias='SRE')
122-
company_num: str | None = Field(default=None, alias='COMPANY_NUM')
123-
public_reg_num: str | None = Field(default=None, alias='PUBLIC_REG_NUM')
124-
chinese_commercial_code: str | None = Field(
125-
default=None, alias='CHINESE_COMMERCIAL_CODE'
126-
)
127-
gov_gaz_num: str | None = Field(default=None, alias='GOV_GAZ_NUM')
128-
cer_incorp_num: str | None = Field(default=None, alias='CER_INCORP_NUM')
129-
dubai_cha_comm_mem: str | None = Field(
130-
default=None, alias='DUBAI_CHA_COMM_MEM'
131-
)
132-
vessel_num: str | None = Field(default=None, alias='VESSEL')
133-
mmsi: str | None = Field(default=None, alias='MMSI')
134-
international_id: str | None = Field(
135-
default=None, alias='INTERNATIONAL_ID'
136-
)
137-
identification_no: str | None = Field(
138-
default=None, alias='IDENTIFICACION_NO'
139-
)
140-
residente_no: str | None = Field(default=None, alias='RESIDENTE_NO')
141-
licencia_cond: str | None = Field(default=None, alias='LICENCIA_COND')
142-
cartilla_no: str | None = Field(default=None, alias='CARTILLA_NO')
143-
cuit: str | None = Field(default=None, alias='CUIT')
144-
nit: str | None = Field(default=None, alias='NIT')
145-
business_reg_num: str | None = Field(
146-
default=None, alias='BUSINESS_REG_NUM'
147-
)
148-
us_fein: str | None = Field(default=None, alias='US_FEIN')
149-
taxid: str | None = Field(default=None, alias='TAXID')
150-
web: str | None = Field(default=None, alias='WEB')
151-
matricula_merc: str | None = Field(default=None, alias='MATRICULA_MERC')
152-
gafi: str | None = Field(default=None, alias='GAFI')
153-
repife: str | None = Field(default=None, alias='REPIFE')
154-
oced: str | None = Field(default=None, alias='OCED')
155-
organismos: str | None = Field(default=None, alias='ORGANISMOS')
156-
nombrecompsndx: str | None = Field(default=None, alias='nombrecompsndx')
157-
ncampos: str | None = Field(default=None, alias='ncampos')
158-
relacionados: str | None = Field(default=None, alias='RELACIONADOS')
159-
disposicion: str | None = Field(default=None, alias='DISPOSICION')
160-
categoria_riesgo: str | None = Field(
161-
default=None, alias='CATEGORIA_RIESGO'
162-
)
163-
cat_ingresos: str | None = Field(default=None, alias='CAT_INGRESOS')
164-
organo: str | None = Field(default=None, alias='ORGANO')
165-
texto: str | None = Field(default=None, alias='TEXTO')
166-
facebook_descripcion: str | None = Field(
167-
default=None, alias='facebook_DESCRIPCION'
168-
)
169-
instagram_descripcion: str | None = Field(
170-
default=None, alias='instagram_DESCRIPCION'
171-
)
172-
linkedin_descripcion: str | None = Field(
173-
default=None, alias='linkedin_DESCRIPCION'
174-
)
175-
twitter_descripcion: str | None = Field(
176-
default=None, alias='twitter_DESCRIPCION'
177-
)
18+
metadata: dict = Field(default_factory=dict, alias='METADATA')
17819

17920
model_config = ConfigDict(
18021
populate_by_name=True,
22+
extra='allow',
18123
)
24+
25+
@model_validator(mode='after')
26+
def collect_extra_fields(self):
27+
if self.model_extra:
28+
self.metadata.update(self.model_extra)
29+
return self

0 commit comments

Comments
 (0)