diff --git a/app/models/event_abstract_models.py b/app/models/event_abstract_models.py index 4f8a849..cd990e8 100644 --- a/app/models/event_abstract_models.py +++ b/app/models/event_abstract_models.py @@ -52,9 +52,15 @@ class Event_Abstract_Base(BaseModel): # poc_event_person_id: Optional[int] # Maybe change this to primary_event_person? external_id: Optional[str] - grant_id: Optional[str] code: Optional[str] + grant_id_random: Optional[str] + grant_id: Optional[int] + + grant_code: Optional[str] + # grant_type_code: Optional[str] + # grant_json: Optional[Union[Json, None]] + name: Optional[str] description: Optional[str] abstract: Optional[str] @@ -131,6 +137,13 @@ class Event_Abstract_Base(BaseModel): return redis_lookup_id_random(record_id_random=id_random, table_name='event_session') return None + @validator('grant_id', always=True) + def grant_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('grant_id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='grant') + return None + # @validator('poc_event_person_id', always=True) # def poc_event_person_id_lookup(cls, v, values, **kwargs): # log.setLevel(logging.WARNING) @@ -188,7 +201,9 @@ class Event_Abstract_Base_New(Core_Std_Obj_Base): passcode: Optional[str] + grant_id_random: Optional[str] grant_id: Optional[int] + grant_code: Optional[str] grant_type_code: Optional[str] grant_json: Optional[Union[Json, None]] @@ -201,6 +216,13 @@ class Event_Abstract_Base_New(Core_Std_Obj_Base): submitter_json: Optional[Union[Json, None]] coauthors_json: Optional[Union[Json, None]] + @validator('event_person_id', always=True) + def event_person_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('event_person_id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='event_person') + return None + class Config: underscore_attrs_are_private = True allow_population_by_field_name = True @@ -269,14 +291,12 @@ class Event_Abstract_In(Event_Abstract_Base_New): return redis_lookup_id_random(record_id_random=id_random, table_name='event_session') return None - # @validator('poc_event_person_id', always=True) - # def poc_event_person_id_lookup(cls, v, values, **kwargs): - # log.setLevel(logging.WARNING) - # log.debug(locals()) - - # if values['poc_event_person_id_random']: - # return redis_lookup_id_random(record_id_random=values['poc_event_person_id_random'], table_name='poc_event_person') - # return None + @validator('grant_id', always=True) + def grant_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('grant_id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='grant') + return None # ### END ### API Event Abstract Models ### Event_Abstract_In() ### diff --git a/app/models/event_person_models.py b/app/models/event_person_models.py index c717db1..4f7785b 100644 --- a/app/models/event_person_models.py +++ b/app/models/event_person_models.py @@ -80,8 +80,22 @@ class Event_Person_Base(BaseModel): # Including convenience data # This is only for convenience. Probably going to keep unless it causes a problem. + # This block of person data should come from the event_person_profile table + informal_name: Optional[str] + given_name: Optional[str] + middle_name: Optional[str] + family_name: Optional[str] + full_name_override: Optional[str] + full_name: Optional[str] + affiliations: Optional[str] + email: Optional[str] + website_url: Optional[str] + # state_province_name: Optional[str] # Using extended_json for now for AACC abstracts + extended_json: Optional[Union[Json, None]] + event_badge_informal_name: Optional[str] event_badge_given_name: Optional[str] + event_badge_middle_name: Optional[str] event_badge_family_name: Optional[str] event_badge_full_name: Optional[str] event_badge_full_name_override: Optional[str] @@ -92,16 +106,20 @@ class Event_Person_Base(BaseModel): event_badge_country_alpha_2_code: Optional[str] event_badge_country: Optional[str] + # This is the same as the other person data above event_person_informal_name: Optional[str] event_person_given_name: Optional[str] + event_person_middle_name: Optional[str] event_person_family_name: Optional[str] event_person_name_override: Optional[str] event_person_full_name: Optional[str] event_person_affiliations: Optional[str] event_person_email: Optional[str] + event_person_extended_json: Optional[Union[Json, None]] person_informal_name: Optional[str] person_given_name: Optional[str] + person_middle_name: Optional[str] person_family_name: Optional[str] person_display_name: Optional[str] person_full_name: Optional[str] @@ -234,14 +252,54 @@ class Event_Person_New_Base(BaseModel): event_id_random: Optional[str] event_id: Optional[int] + extended_json: Optional[Union[Json, None]] + + # Including convenience data + # This is only for convenience. Probably going to keep unless it causes a problem. + # This block of person data should come from the event_person_profile table + informal_name: Optional[str] + given_name: Optional[str] + middle_name: Optional[str] + family_name: Optional[str] + full_name: Optional[str] + full_name_override: Optional[str] + affiliations: Optional[str] + email: Optional[str] + website_url: Optional[str] + state_province_name: Optional[str] + + event_badge_informal_name: Optional[str] + event_badge_given_name: Optional[str] + event_badge_middle_name: Optional[str] + event_badge_family_name: Optional[str] + event_badge_full_name: Optional[str] + event_badge_full_name_override: Optional[str] + event_badge_affiliations: Optional[str] + event_badge_email: Optional[str] + event_badge_city: Optional[str] + event_badge_state_province: Optional[str] + event_badge_country_alpha_2_code: Optional[str] + event_badge_country: Optional[str] + + # This is the same as the other person data above + event_person_informal_name: Optional[str] + event_person_given_name: Optional[str] + event_person_middle_name: Optional[str] + event_person_family_name: Optional[str] + event_person_name_override: Optional[str] + event_person_full_name: Optional[str] + event_person_affiliations: Optional[str] + event_person_email: Optional[str] + person_given_name: Optional[str] + person_middle_name: Optional[str] person_family_name: Optional[str] person_full_name: Optional[str] person_display_name: Optional[str] - affiliations: Optional[str] # One or more affiliations with organizations, companies, and other groups + # affiliations: Optional[str] # One or more affiliations with organizations, companies, and other groups - email: Optional[str] + # email: Optional[str] #new_password: str = Field(default_factory = lambda:secrets.token_urlsafe(default_num_bytes)) #password: Optional[str]