91 lines
4.3 KiB
Python
91 lines
4.3 KiB
Python
import sys
|
|
import os
|
|
from typing import Optional, Union
|
|
from pydantic import BaseModel, Field, root_validator
|
|
|
|
# Mock base_fields
|
|
base_fields = {
|
|
'event_file_id_random': {},
|
|
'hosted_file_id_random': {},
|
|
'obj_id_random': {},
|
|
'event_id_random': {},
|
|
'event_exhibit_id_random': {},
|
|
'event_location_id_random': {},
|
|
'event_presentation_id_random': {},
|
|
'event_presenter_id_random': {},
|
|
'event_session_id_random': {},
|
|
'event_track_id_random': {},
|
|
}
|
|
|
|
class Event_File_Base(BaseModel):
|
|
id: Optional[Union[int, str]] = Field(None, **base_fields['event_file_id_random'])
|
|
event_file_id: Optional[Union[int, str]] = Field(None, **base_fields['event_file_id_random'])
|
|
hosted_file_id: Optional[Union[int, str]] = Field(None, **base_fields['hosted_file_id_random'])
|
|
for_id: Optional[Union[int, str]] = Field(None, **base_fields['obj_id_random'])
|
|
event_id: Optional[Union[int, str]] = Field(None, **base_fields['event_id_random'])
|
|
event_exhibit_id: Optional[Union[int, str]] = Field(None, **base_fields['event_exhibit_id_random'])
|
|
event_location_id: Optional[Union[int, str]] = Field(None, **base_fields['event_location_id_random'])
|
|
event_presentation_id: Optional[Union[int, str]] = Field(None, **base_fields['event_presentation_id_random'])
|
|
event_presenter_id: Optional[Union[int, str]] = Field(None, **base_fields['event_presenter_id_random'])
|
|
event_session_id: Optional[Union[int, str]] = Field(None, **base_fields['event_session_id_random'])
|
|
event_track_id: Optional[Union[int, str]] = Field(None, **base_fields['event_track_id_random'])
|
|
|
|
id_random: Optional[str] = Field(None, alias='event_file_id_random', exclude=True)
|
|
hosted_file_id_random: Optional[str] = Field(None, exclude=True)
|
|
for_id_random: Optional[str] = Field(None, exclude=True)
|
|
event_id_random: Optional[str] = Field(None, exclude=True)
|
|
event_exhibit_id_random: Optional[str] = Field(None, exclude=True)
|
|
event_location_id_random: Optional[str] = Field(None, exclude=True)
|
|
event_presentation_id_random: Optional[str] = Field(None, exclude=True)
|
|
event_presenter_id_random: Optional[str] = Field(None, exclude=True)
|
|
event_session_id_random: Optional[str] = Field(None, exclude=True)
|
|
event_track_id_random: Optional[str] = Field(None, exclude=True)
|
|
|
|
@root_validator(pre=True)
|
|
def map_v3_ids(cls, values):
|
|
rid = values.get('id_random') or values.get('event_file_id_random')
|
|
if rid and isinstance(rid, str):
|
|
values['id'] = rid
|
|
values['event_file_id'] = rid
|
|
|
|
if h_rid := values.get('hosted_file_id_random'): values['hosted_file_id'] = h_rid
|
|
if f_rid := values.get('for_id_random'): values['for_id'] = f_rid
|
|
if e_rid := values.get('event_id_random'): values['event_id'] = e_rid
|
|
if ex_rid := values.get('event_exhibit_id_random'): values['event_exhibit_id'] = ex_rid
|
|
if loc_rid := values.get('event_location_id_random'): values['event_location_id'] = loc_rid
|
|
if pres_rid := values.get('event_presentation_id_random'): values['event_presentation_id'] = pres_rid
|
|
if pr_rid := values.get('event_presenter_id_random'): values['event_presenter_id'] = pr_rid
|
|
if s_rid := values.get('event_session_id_random'): values['event_session_id'] = s_rid
|
|
if t_rid := values.get('event_track_id_random'): values['event_track_id'] = t_rid
|
|
|
|
id_fields = [
|
|
'id', 'event_file_id', 'hosted_file_id', 'for_id', 'event_id',
|
|
'event_exhibit_id', 'event_location_id', 'event_presentation_id',
|
|
'event_presenter_id', 'event_session_id', 'event_track_id'
|
|
]
|
|
for k in id_fields:
|
|
val = values.get(k)
|
|
if val is not None and not isinstance(val, str):
|
|
values[k] = None
|
|
|
|
return values
|
|
|
|
# Data from DB
|
|
raw_data = {
|
|
"id": "2982",
|
|
"id_random": "a2pPIT_W28o",
|
|
"hosted_file_id": "2726",
|
|
"for_type": "event_presenter",
|
|
"for_id": "1629",
|
|
"event_id": "1",
|
|
"event_session_id": "543",
|
|
"event_presentation_id": "1118",
|
|
"event_presenter_id": "1629",
|
|
"event_file_id_random": "a2pPIT_W28o",
|
|
"hosted_file_id_random": "lFmI035vUqqzqEomJw-sLA",
|
|
"for_id_random": "uSEvog3bHJo" # Populated by methods.py
|
|
}
|
|
|
|
print("Input Data:", raw_data)
|
|
obj = Event_File_Base(**raw_data)
|
|
print("\nOutput Data (dict):", obj.dict()) |