More work on abstract submissions and related grants

This commit is contained in:
Scott Idem
2023-06-26 14:52:31 -04:00
parent 702357910a
commit 5b4af4bb34
2 changed files with 89 additions and 11 deletions

View File

@@ -52,9 +52,15 @@ class Event_Abstract_Base(BaseModel):
# poc_event_person_id: Optional[int] # Maybe change this to primary_event_person? # poc_event_person_id: Optional[int] # Maybe change this to primary_event_person?
external_id: Optional[str] external_id: Optional[str]
grant_id: Optional[str]
code: 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] name: Optional[str]
description: Optional[str] description: Optional[str]
abstract: 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 redis_lookup_id_random(record_id_random=id_random, table_name='event_session')
return None 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) # @validator('poc_event_person_id', always=True)
# def poc_event_person_id_lookup(cls, v, values, **kwargs): # def poc_event_person_id_lookup(cls, v, values, **kwargs):
# log.setLevel(logging.WARNING) # log.setLevel(logging.WARNING)
@@ -188,7 +201,9 @@ class Event_Abstract_Base_New(Core_Std_Obj_Base):
passcode: Optional[str] passcode: Optional[str]
grant_id_random: Optional[str]
grant_id: Optional[int] grant_id: Optional[int]
grant_code: Optional[str] grant_code: Optional[str]
grant_type_code: Optional[str] grant_type_code: Optional[str]
grant_json: Optional[Union[Json, None]] 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]] submitter_json: Optional[Union[Json, None]]
coauthors_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: class Config:
underscore_attrs_are_private = True underscore_attrs_are_private = True
allow_population_by_field_name = 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 redis_lookup_id_random(record_id_random=id_random, table_name='event_session')
return None return None
# @validator('poc_event_person_id', always=True) @validator('grant_id', always=True)
# def poc_event_person_id_lookup(cls, v, values, **kwargs): def grant_id_lookup(cls, v, values, **kwargs):
# log.setLevel(logging.WARNING) if isinstance(v, int) and v > 0: return v
# log.debug(locals()) elif id_random := values.get('grant_id_random'):
return redis_lookup_id_random(record_id_random=id_random, table_name='grant')
# if values['poc_event_person_id_random']: return None
# return redis_lookup_id_random(record_id_random=values['poc_event_person_id_random'], table_name='poc_event_person')
# return None
# ### END ### API Event Abstract Models ### Event_Abstract_In() ### # ### END ### API Event Abstract Models ### Event_Abstract_In() ###

View File

@@ -80,8 +80,22 @@ class Event_Person_Base(BaseModel):
# Including convenience data # Including convenience data
# This is only for convenience. Probably going to keep unless it causes a problem. # 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_informal_name: Optional[str]
event_badge_given_name: Optional[str] event_badge_given_name: Optional[str]
event_badge_middle_name: Optional[str]
event_badge_family_name: Optional[str] event_badge_family_name: Optional[str]
event_badge_full_name: Optional[str] event_badge_full_name: Optional[str]
event_badge_full_name_override: 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_alpha_2_code: Optional[str]
event_badge_country: 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_informal_name: Optional[str]
event_person_given_name: Optional[str] event_person_given_name: Optional[str]
event_person_middle_name: Optional[str]
event_person_family_name: Optional[str] event_person_family_name: Optional[str]
event_person_name_override: Optional[str] event_person_name_override: Optional[str]
event_person_full_name: Optional[str] event_person_full_name: Optional[str]
event_person_affiliations: Optional[str] event_person_affiliations: Optional[str]
event_person_email: Optional[str] event_person_email: Optional[str]
event_person_extended_json: Optional[Union[Json, None]]
person_informal_name: Optional[str] person_informal_name: Optional[str]
person_given_name: Optional[str] person_given_name: Optional[str]
person_middle_name: Optional[str]
person_family_name: Optional[str] person_family_name: Optional[str]
person_display_name: Optional[str] person_display_name: Optional[str]
person_full_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_random: Optional[str]
event_id: Optional[int] 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_given_name: Optional[str]
person_middle_name: Optional[str]
person_family_name: Optional[str] person_family_name: Optional[str]
person_full_name: Optional[str] person_full_name: Optional[str]
person_display_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)) #new_password: str = Field(default_factory = lambda:secrets.token_urlsafe(default_num_bytes))
#password: Optional[str] #password: Optional[str]