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 16:29:27 -04:00
parent 8f6589cf1c
commit 65fd3ebe28
20 changed files with 198 additions and 24 deletions

View File

@@ -650,7 +650,7 @@ def sql_delete(
# If not success and there is a table_name then check the database table passed # If not success and there is a table_name then check the database table passed
# If found in database table then store in Redis and return the ID number # If found in database table then store in Redis and return the ID number
def redis_lookup_id_random(record_id_random:int|str, table_name:str): def redis_lookup_id_random(record_id_random:int|str, table_name:str):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
if isinstance(record_id_random, str) and len(record_id_random) >= 11 and len(record_id_random) <= 22: pass if isinstance(record_id_random, str) and len(record_id_random) >= 11 and len(record_id_random) <= 22: pass
@@ -699,7 +699,7 @@ def redis_lookup_id_random(record_id_random:int|str, table_name:str):
""" """
if select_results := sql_select(sql=sql, data=data): if select_results := sql_select(sql=sql, data=data):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(select_results) log.debug(select_results)
log.debug(type(select_results)) log.debug(type(select_results))
if isinstance(select_results, dict): if isinstance(select_results, dict):

View File

@@ -7,7 +7,7 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v
from ..lib_general import * from ..lib_general import *
from ..db_sql import redis_lookup_id_random, sql_select from ..db_sql import redis_lookup_id_random, sql_select
from .membership_model import Membership_Cfg_Base from ..models.membership_models import Membership_Cfg_Base
# ### BEGIN ### API Account Methods ### load_account_cfg_obj() ### # ### BEGIN ### API Account Methods ### load_account_cfg_obj() ###

View File

@@ -7,11 +7,11 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v
from ..lib_general import * from ..lib_general import *
from ..db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update from ..db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from .event_person_model import Event_Person_New_Base, Event_Person_Base from ..models.event_person_models import Event_Person_New_Base, Event_Person_Base
# ### BEGIN ### API Event Person Methods ### create_event_person_obj() ### # ### BEGIN ### API Event Person Methods ### create_event_person_obj() ###
def create_event_person_obj(event_person_obj_new:Event_Person_Base): def create_event_person_obj(event_person_obj_new:Event_Person_Base) -> int|bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
@@ -33,3 +33,27 @@ def create_event_person_obj(event_person_obj_new:Event_Person_Base):
log.debug(f'Returning the new event_person_id: {event_person_id}') log.debug(f'Returning the new event_person_id: {event_person_id}')
return event_person_id return event_person_id
# ### END ### API Event Person Methods ### create_event_person_obj() ### # ### END ### API Event Person Methods ### create_event_person_obj() ###
# ### BEGIN ### API Event Person Methods ### load_event_person_obj() ###
def load_event_person_obj(event_person_id:int|str, inc_person:bool=False, inc_user:bool=False, inc_event_person_detail:bool=False, inc_event_registration:bool=False, inc_event_badge:bool=False) -> Event_Person_Base|bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_person_id := redis_lookup_id_random(record_id_random=event_person_id, table_name='event_person'): pass
else: return False
if event_person_rec := sql_select(table_name='v_event_person', record_id=event_person_id):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(event_person_rec)
else:
return False
try:
event_person_obj = Event_Person_Base(**event_person_rec)
log.debug(event_person_obj)
except ValidationError as e:
log.error(e.json())
return False
return event_person_obj

View File

@@ -9,7 +9,7 @@ from ..db_sql import redis_lookup_id_random, sql_select
#from .address_model import Address_Base #from .address_model import Address_Base
#from .contact_model import Contact_Base #from .contact_model import Contact_Base
from .membership_model import Membership_Base from ..models.membership_models import Membership_Base
#from .organization_model import Organization_Base #from .organization_model import Organization_Base
#from .person_model import Person_Base #from .person_model import Person_Base
#from .user_model import User_Base #from .user_model import User_Base

View File

@@ -0,0 +1,112 @@
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
class Event_Badge_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
id_random: Optional[str] = Field(
**base_fields['event_badge_id_random'],
alias='event_badge_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
#alias='event_badge_id'
)
# account_id_random: Optional[str]
# account_id: Optional[int]
event_id_random: Optional[str]
event_id: Optional[int]
event_person_id_random: Optional[str]
event_person_id: Optional[int]
person_id_random: Optional[str]
person_id: Optional[int]
pronoun: Optional[str]
given_name: Optional[str]
family_name: Optional[str]
full_name: Optional[str]
email: Optional[str]
degree: Optional[str]
degrees: Optional[str] # Do we want this?
credentials: Optional[str]
title: Optional[str]
affiliation: Optional[str]
affiliations: Optional[str] # Do we want this?
city: Optional[str]
county: Optional[str] # NOTE: This is for a county within a state or province
state_province: Optional[str]
country: Optional[str]
# NOTE: More badge fields need to be added here once things are cleaned up
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_badge_id_random', always=True)
def event_badge_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_badge_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_badge')
return None
@validator('event_id', always=True)
def event_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['event_id_random']:
return redis_lookup_id_random(record_id_random=values['event_id_random'], table_name='event')
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
@validator('person_id', always=True)
def person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['person_id_random']:
return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person')
return None
class Config:
underscore_attrs_are_private = True
fields = base_fields
Event_Badge_Base.update_forward_refs()

View File

@@ -8,6 +8,10 @@ from ..db_sql import redis_lookup_id_random
from ..lib_general import * from ..lib_general import *
from .common_field_schema import base_fields, default_num_bytes from .common_field_schema import base_fields, default_num_bytes
from .event_badge_models import Event_Badge_Base
from .person_model import Person_Base
from .event_registration_models import Event_Registration_Base
from .user_model import User_Base
class Event_Person_New_Base(BaseModel): class Event_Person_New_Base(BaseModel):
@@ -121,6 +125,21 @@ class Event_Person_Base(BaseModel):
user_id_random: Optional[str] user_id_random: Optional[str]
user_id: Optional[int] 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
event_location: Optional[list] # An event_person record can be linked to one or more locations (but unlikely?)
event_presentation: Optional[list] # An event_person record can be linked to one or more presentations
event_presenter: Optional[list] # An event_person record can be linked to one or more presenters (part of multiple presentations)
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
person: Optional[Person_Base] = Person_Base()
user: Optional[User_Base] = User_Base()
priority: Optional[bool] priority: Optional[bool]
sort: Optional[int] sort: Optional[int]
group: Optional[str] group: Optional[str]

View File

@@ -12,7 +12,7 @@ from .user_role_model import User_Role_Base
# ### BEGIN ### API User Methods ### create_user_obj() ### # ### BEGIN ### API User Methods ### create_user_obj() ###
def create_user_obj(user_obj_new:User_Base): def create_user_obj(user_obj_new:User_Base) -> int|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
@@ -66,7 +66,7 @@ def create_user_obj(user_obj_new:User_Base):
# ### BEGIN ### API User Methods ### load_user_obj() ### # ### BEGIN ### API User Methods ### load_user_obj() ###
def load_user_obj(user_id:int|str, inc_roles:bool=False, inc_contact:bool=False, inc_organization:bool=False, inc_person:bool=False) -> User_Base: def load_user_obj(user_id:int|str, inc_roles:bool=False, inc_contact:bool=False, inc_organization:bool=False, inc_person:bool=False) -> User_Out_Base|bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())

View File

@@ -15,6 +15,7 @@ from .contact_model import Contact_Base
from .user_role_model import User_Role_Base from .user_role_model import User_Role_Base
# ### BEGIN ### API User Models ### User_New_Base() ###
class User_New_Base(BaseModel): class User_New_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
@@ -127,8 +128,10 @@ class User_New_Base(BaseModel):
class Config: class Config:
underscore_attrs_are_private = True underscore_attrs_are_private = True
fields = base_fields fields = base_fields
# ### END ### API User Models ### User_New_Base() ###
# ### BEGIN ### API User Models ### User_Out_Base() ###
class User_Out_Base(BaseModel): class User_Out_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
@@ -188,9 +191,10 @@ class User_Out_Base(BaseModel):
class Config: class Config:
underscore_attrs_are_private = True underscore_attrs_are_private = True
fields = base_fields fields = base_fields
# ### END ### API User Models ### User_Out_Base() ###
# ### BEGIN ### API User Models ### User_Base() ###
class User_Base(BaseModel): class User_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
@@ -317,6 +321,7 @@ class User_Base(BaseModel):
class Config: class Config:
underscore_attrs_are_private = True underscore_attrs_are_private = True
fields = base_fields fields = base_fields
# ### END ### API User Models ### User_Base() ###
#User_Base.update_forward_refs() #User_Base.update_forward_refs()
#User_Out_Base.update_forward_refs() #User_Out_Base.update_forward_refs()

View File

@@ -11,8 +11,8 @@ from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from ..models.account_model import Account_Base from ..models.account_models import Account_Base
from ..models.account_methods import load_account_cfg_obj from ..methods.account_methods import load_account_cfg_obj
from ..models.response_model import * from ..models.response_model import *

View File

@@ -10,16 +10,17 @@ from app.db_sql import *
from ..models.response_model import * from ..models.response_model import *
from ..models.account_model import * from ..models.account_models import *
from ..models.account_cfg_model import * from ..models.account_cfg_model import *
from ..models.address_model import * from ..models.address_model import *
from ..models.archive_model import * from ..models.archive_model import *
from ..models.archive_content_model import * from ..models.archive_content_model import *
from ..models.contact_model import * from ..models.contact_model import *
from ..models.event_model import * from ..models.event_models import *
from ..models.event_exhibit_model import * from ..models.event_exhibit_models import *
from ..models.event_registration_model import * from ..models.event_person_models import *
from ..models.membership_model import * from ..models.event_registration_models import *
from ..models.membership_models import *
from ..models.order_model import * from ..models.order_model import *
from ..models.order_cart_model import * from ..models.order_cart_model import *
from ..models.organization_model import * from ..models.organization_model import *

View File

@@ -11,7 +11,7 @@ from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from ..models.event_model import Event_Base from ..models.event_models import Event_Base
from ..models.response_model import * from ..models.response_model import *

View File

@@ -10,7 +10,7 @@ from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from ..models.event_exhibit_model import Event_Exhibit_Base from ..models.event_exhibit_models import Event_Exhibit_Base
from ..models.response_model import * from ..models.response_model import *

View File

@@ -11,8 +11,8 @@ from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from ..models.event_person_model import Event_Person_New_Base, Event_Person_Base from ..models.event_person_models import Event_Person_New_Base, Event_Person_Base
from ..models.event_person_methods import create_event_person_obj from ..methods.event_person_methods import create_event_person_obj, load_event_person_obj
from ..models.person_model import Person_Base from ..models.person_model import Person_Base
from ..models.person_methods import create_person_obj, load_person_obj from ..models.person_methods import create_person_obj, load_person_obj
from ..models.user_model import User_New_Base, User_Base from ..models.user_model import User_New_Base, User_Base
@@ -126,11 +126,24 @@ async def post_event_person_new(
event_person_obj_new = Event_Person_Base(**event_person_new) event_person_obj_new = Event_Person_Base(**event_person_new)
log.debug(event_person_obj_new) log.debug(event_person_obj_new)
event_person_obj = create_event_person_obj(event_person_obj_new=event_person_obj_new) event_person_obj_result = create_event_person_obj(event_person_obj_new=event_person_obj_new)
if isinstance(event_person_obj_result, bool):
log.debug('Returning False something is not right.')
return mk_resp(data=False)
elif isinstance(event_person_obj_result, int):
event_person_id = event_person_obj_result
event_person_obj = load_event_person_obj(event_person_id=event_person_id)
log.debug(event_person_id)
log.debug(event_person_obj)
else:
log.debug('A new event_person was not created')
return mk_resp(data=False)
return_data = {} return_data = {}
return_data['person'] = person_obj return_data['person'] = person_obj
return_data['user'] = user_obj return_data['user'] = user_obj
return_data['event_person'] = event_person_obj return_data['event_person'] = event_person_obj
log.debug(return_data)
return mk_resp(data=return_data) return mk_resp(data=return_data)

View File

@@ -11,7 +11,7 @@ from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from ..models.event_registration_model import Event_Registration_Base from ..models.event_registration_models import Event_Registration_Base
from ..models.response_model import * from ..models.response_model import *

View File

@@ -11,8 +11,8 @@ from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from ..models.membership_model import Membership_Base from ..models.membership_models import Membership_Base
from ..models.membership_methods import load_membership_obj from ..methods.membership_methods import load_membership_obj
from ..models.response_model import * from ..models.response_model import *