Working on event_person and session proposals. Also general clean up of models and methods.

This commit is contained in:
Scott Idem
2021-05-27 23:10:53 -04:00
parent 65fd3ebe28
commit 486236f0a8
10 changed files with 281 additions and 14 deletions

View File

@@ -35,6 +35,7 @@ base_fields['event_badge_id_random'] = xxx_id_random_field_schema
base_fields['event_device_id_random'] = xxx_id_random_field_schema
base_fields['event_location_id_random'] = xxx_id_random_field_schema
base_fields['event_person_id_random'] = xxx_id_random_field_schema
base_fields['event_person_detail_id_random'] = xxx_id_random_field_schema
base_fields['event_presentation_id_random'] = xxx_id_random_field_schema
base_fields['event_presenter_id_random'] = xxx_id_random_field_schema
base_fields['event_registration_id_random'] = xxx_id_random_field_schema

View File

@@ -0,0 +1,80 @@
from __future__ import annotations
import datetime, hashlib, logging, os, pytz, redis, secrets
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from ..db_sql import redis_lookup_id_random
from ..lib_general import *
from .common_field_schema import base_fields, default_num_bytes
#from .event_presentation_models import Event_Presentation_Base
#from .event_presenter_models import Event_Presenter_Base
from .event_session_models import Event_Session_Base
class Event_Person_Detail_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
id_random: Optional[str] = Field(
**base_fields['event_person_detail_id_random'],
alias='event_person_detail_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
#alias='event_person_detail_id'
)
event_person_id_random: Optional[str]
event_person_id: Optional[int]
#event_abstract: Optional[Event_Abstract_Base]
#event_exhibit: Optional[Event_Exhibit_Base]
#event_file: Optional[Event_File_Base]
#event_location: Optional[Event_Location_Base]
#event_presentation: Optional[Event_Presentation_Base]
#event_presenter: Optional[Event_Presenter_Base]
event_session: Optional[Event_Session_Base]
#event_track: Optional[Event_Track_Base]
priority: Optional[bool]
sort: Optional[int]
group: Optional[str]
notes: Optional[str]
created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('event_person_detail_id_random', always=True)
def event_person_detail_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True)
def event_person_detail_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
log.debug(values['id_random'])
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='event_person_detail')
return None
@validator('event_person_id', always=True)
def event_person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['event_person_id_random']:
return redis_lookup_id_random(record_id_random=values['event_person_id_random'], table_name='event_person')
return None
class Config:
underscore_attrs_are_private = True
fields = base_fields

View File

@@ -8,9 +8,11 @@ from ..db_sql import redis_lookup_id_random
from ..lib_general import *
from .common_field_schema import base_fields, default_num_bytes
from .event_models import Event_Base
from .event_badge_models import Event_Badge_Base
from .person_model import Person_Base
from .event_person_detail_models import Event_Person_Detail_Base
from .event_registration_models import Event_Registration_Base
from .person_model import Person_Base
from .user_model import User_Base
@@ -125,9 +127,6 @@ class Event_Person_Base(BaseModel):
user_id_random: Optional[str]
user_id: Optional[int]
event_badge: Optional[dict] # Should be Event_Badge_Base()
event_registration: Optional[dict] # Should be Event_Registration_Base()
event_abstract: Optional[list] # An event_person record can be linked to one or more abstracts
event_exhibit: Optional[list] # An event_person record can be linked to one or more exhibits
event_file: Optional[list] # An event_person record can be linked to one or more files
@@ -137,6 +136,10 @@ class Event_Person_Base(BaseModel):
event_session: Optional[list] # An event_person record can be linked to one or more sessions
event_track: Optional[list] # An event_person record can be linked to one or more tracks
event: Optional[Event_Base] = Event_Base()
event_badge: Optional[Event_Badge_Base] = Event_Badge_Base()
event_person_detail: Optional[Event_Person_Detail_Base] = Event_Person_Detail_Base()
event_registration: Optional[Event_Registration_Base] = Event_Registration_Base()
person: Optional[Person_Base] = Person_Base()
user: Optional[User_Base] = User_Base()

View File

@@ -7,12 +7,12 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v
from ..lib_general import *
from ..db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from .user_model import User_Base, User_Out_Base, User_New_Base
from .user_model import User_Base, User_New_Base, User_Out_Base
from .user_role_model import User_Role_Base
# ### BEGIN ### API User Methods ### create_user_obj() ###
def create_user_obj(user_obj_new:User_Base) -> int|bool:
def create_user_obj(user_obj_new:User_New_Base) -> int|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())