diff --git a/app/models/event_session_models.py b/app/models/event_session_models.py index 57025f9..6763c0b 100644 --- a/app/models/event_session_models.py +++ b/app/models/event_session_models.py @@ -47,12 +47,10 @@ class Event_Session_Base(BaseModel): poc_event_person_id_random: Optional[str] poc_event_person_id: Optional[int] + poc_person_id_random: Optional[str] poc_person_id: Optional[int] poc_kv_json: Optional[Union[Json, None]] - # poc_person_id_random: Optional[str] # Not used or needed? - # poc_person_id: Optional[int] # Not used or needed? - # type_id_random: Optional[str] # Not used or needed? # type_id: Optional[int] # Not used or needed? type_code: Optional[str] # None, poster (image, video), assume presentation (PPT, Key, PDF, etc) @@ -158,8 +156,15 @@ class Event_Session_Base(BaseModel): event_presentation_list: Optional[list[Event_Presentation_Base]] # Optional[Event_Presentation_Base] event_presenter_list: Optional[list] # Optional[Event_Presenter_Base] event_track: Optional[Event_Track_Base] + poc_event_person: Optional[Event_Person_Base] # NOTE: Using thi will probably create an import loop + poc_person: Optional[Person_Base] + poc_person_given_name: Optional[str] + poc_person_family_name: Optional[str] + poc_person_full_name: Optional[str] + poc_person_primary_email: Optional[str] + proposal_json: Optional[Union[Json, None]] _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) @@ -192,6 +197,13 @@ class Event_Session_Base(BaseModel): return redis_lookup_id_random(record_id_random=id_random, table_name='event_track') return None + @validator('poc_person_id', always=True) + def poc_person_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('poc_person_id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='person') + return None + class Config: underscore_attrs_are_private = True allow_population_by_field_name = True