diff --git a/app/methods/event_badge_methods.py b/app/methods/event_badge_methods.py index a543b09..15f338f 100644 --- a/app/methods/event_badge_methods.py +++ b/app/methods/event_badge_methods.py @@ -7,6 +7,8 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update from app.lib_general import log, logging +from app.methods.event_badge_template_methods import load_event_badge_template_obj + from app.models.event_badge_models import Event_Badge_Base @@ -18,6 +20,7 @@ def load_event_badge_obj( exclude_unset: bool = True, model_as_dict: bool = False, enabled: str = 'enabled', # enabled, disabled, all + inc_event_badge_template: bool = False, ) -> Event_Badge_Base|dict|bool: # log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -35,8 +38,54 @@ def load_event_badge_obj( log.error(e.json()) return False + # Updated 2021-08-17 + if inc_event_badge_template: + log.info('Need to include event badge template data...') + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + event_id = event_badge_rec.get('event_id', None) + event_badge_template_id = get_event_badge_template_id_w_event_id(event_id=event_id) + if event_badge_template_result := load_event_badge_template_obj( + event_badge_template_id = event_badge_template_id + ): + log.debug(event_badge_template_result) + event_badge_obj.event_badge_template = event_badge_template_result + else: + log.warning('A event_badge object was not returned.') + event_badge_obj.event_badge_template = None + if model_as_dict: return event_badge_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member else: return event_badge_obj # ### END ### API Event Badge Methods ### load_event_badge_obj() ### + + +# ### BEGIN ### API Event Badge Methods ### get_event_badge_template_id_w_event_id() ### +# Updated 2021-09-14 +def get_event_badge_template_id_w_event_id( + event_id: int|str, + ) -> bool|int|None: + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass + else: return False + + data = {} + data['event_id'] = event_id + + sql = f""" + SELECT `event_badge_template`.id AS 'event_badge_template_id', `event_badge_template`.id_random AS 'event_badge_template_id_random', `event_badge_template`.event_id AS event_id + FROM `event_badge_template` AS `event_badge_template` + WHERE `event_badge_template`.event_id = :event_id + LIMIT 1; + """ + + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + if event_badge_template_data_result := sql_select(data=data, sql=sql): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(event_badge_template_data_result) + if event_badge_template_id := event_badge_template_data_result.get('event_badge_template_id', None): return event_badge_template_id + else: return False + else: return None +# ### END ### API Event Badge Methods ### get_event_badge_template_id_w_event_id() ### diff --git a/app/methods/event_badge_template_methods.py b/app/methods/event_badge_template_methods.py index f8e8b93..28eb125 100644 --- a/app/methods/event_badge_template_methods.py +++ b/app/methods/event_badge_template_methods.py @@ -25,7 +25,7 @@ def load_event_badge_template_obj( if event_badge_template_id := redis_lookup_id_random(record_id_random=event_badge_template_id, table_name='event_badge_template'): pass else: return False - if event_badge_template_rec := sql_select(table_name='v_event_badge_template', record_id=event_badge_template_id): pass + if event_badge_template_rec := sql_select(table_name='event_badge_template', record_id=event_badge_template_id): pass else: return False try: diff --git a/app/methods/person_methods.py b/app/methods/person_methods.py index f4d5c70..bd154b3 100644 --- a/app/methods/person_methods.py +++ b/app/methods/person_methods.py @@ -81,14 +81,14 @@ def load_person_obj( contact_id = person_rec.get('contact_id', None) log.debug(contact_id) if contact_result := load_contact_obj( - contact_id = contact_id, - limit = limit, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - enabled = enabled, - inc_address = inc_address, - ): + contact_id = contact_id, + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + inc_address = inc_address, + ): person_obj.contact = contact_result else: person_obj.contact = None diff --git a/app/models/event_badge_models.py b/app/models/event_badge_models.py index 041b3a5..1fdabf0 100644 --- a/app/models/event_badge_models.py +++ b/app/models/event_badge_models.py @@ -8,7 +8,7 @@ from app.db_sql import redis_lookup_id_random from app.lib_general import log, logging from app.models.common_field_schema import base_fields, default_num_bytes - +from app.models.event_badge_template_models import Event_Badge_Template_Base class Event_Badge_Base(BaseModel): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -77,6 +77,9 @@ class Event_Badge_Base(BaseModel): created_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None + # Including other related objects + event_badge_template: Optional[Union[Event_Badge_Template_Base, None]] + _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) #@validator('event_badge_id_random', always=True) diff --git a/app/routers/event_badge.py b/app/routers/event_badge.py index 4743f64..613b280 100644 --- a/app/routers/event_badge.py +++ b/app/routers/event_badge.py @@ -226,6 +226,7 @@ async def get_event_badge_obj( event_badge_id: str = Query(..., min_length=11, max_length=22), limit: int = 5, # For now this covers any included objects or object lists enabled: str = 'enabled', # For now this covers any included objects or object lists + inc_event_badge_template: bool = True, x_account_id: str = Header(...), by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, @@ -244,6 +245,7 @@ async def get_event_badge_obj( exclude_unset = exclude_unset, # model_as_dict = model_as_dict, enabled = enabled, + inc_event_badge_template = inc_event_badge_template, ) event_badge_dict = event_badge_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) return mk_resp(data=event_badge_dict)