From 35e91784727b062322a255a870b26de8f55f8128 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 28 Sep 2021 13:22:27 -0400 Subject: [PATCH] Work on event patch and list, account list, and minor changes --- app/methods/account_methods.py | 49 ++++++++ app/methods/event_cfg_methods.py | 68 +++++++++++ app/methods/event_methods.py | 123 +++++++++++++++----- app/models/event_cfg_models.py | 19 ++-- app/models/event_models.py | 3 +- app/routers/account.py | 190 +++++++++++-------------------- app/routers/event.py | 180 ++++++++++++++++++++++------- 7 files changed, 436 insertions(+), 196 deletions(-) diff --git a/app/methods/account_methods.py b/app/methods/account_methods.py index 789302b..e0c92fc 100644 --- a/app/methods/account_methods.py +++ b/app/methods/account_methods.py @@ -571,6 +571,55 @@ def load_account_obj( # ### END ### API Account Methods ### load_account_obj() ### +# ### BEGIN ### API Account Methods ### get_account_rec_list() ### +# Updated 2021-09-28 +def get_account_rec_list( + limit: int = 25, + enabled: str = 'enabled', # enabled, disabled, all + ) -> list|bool: + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + data = {} + + if limit: + data['limit'] = limit + sql_limit = f'LIMIT :limit' + else: + sql_limit = '' + + if enabled in ['enabled', 'disabled', 'all']: + if enabled == 'enabled': + data['enable'] = True + sql_enabled = f'`account`.enable = :enable' + elif enabled == 'disabled': + data['enable'] = False + sql_enabled = f'`account`.enable = :enable' + elif enabled == 'all': + sql_enabled = '' + else: + log.warning(f'Unexpected value for enabled: {enabled}') + return False + + sql = f""" + SELECT `account`.id AS 'account_id', `account`.id_random AS 'account_id_random' + FROM `account` AS `account` + WHERE + {sql_enabled} + ORDER BY `account`.created_on DESC, `account`.updated_on DESC + {sql_limit}; + """ + + if account_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + account_rec_li = account_rec_li_result + else: + account_rec_li = [] + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(account_rec_li_result) + + return account_rec_li +# ### END ### API Account Methods ### get_account_rec_list() ### + # ### BEGIN ### API Account Methods ### load_account_obj_membership_type() ### # Working well as of 2021-06-11. Using as a template for other load objects. diff --git a/app/methods/event_cfg_methods.py b/app/methods/event_cfg_methods.py index 9043467..0005054 100644 --- a/app/methods/event_cfg_methods.py +++ b/app/methods/event_cfg_methods.py @@ -56,3 +56,71 @@ def load_event_cfg_obj( else: return event_cfg_obj # ### END ### API Event Cfg Methods ### load_event_cfg_obj() ### + + +# ### BEGIN ### API Event Cfg Methods ### create_update_event_cfg_obj_v4() ### +# Updated 2021-09-28 +def create_update_event_cfg_obj_v4( + event_cfg_dict_obj: Event_Base|dict, + event_cfg_id: int|str|None = None, + event_id: int|str|None = None, + create_sub_obj: bool = False, # Is this needed for a config? + fail_any: bool = False, # Fail if any thing goes wrong for sub objects + return_outline: bool = False, + ) -> int|bool: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + log.info('Checking requirements...') + if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass + else: return False + + log.debug(type(event_cfg_dict_obj)) + if isinstance(event_cfg_dict_obj, dict): + event_cfg_dict = event_cfg_dict_obj + if event_id: + event_cfg_dict['event_id'] = event_id + # if event_cfg_id: + # event_cfg_dict['event_cfg_id'] = event_cfg_id + try: + event_cfg_obj = Event_Cfg_Base(**event_cfg_dict) + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(event_cfg_obj) + except ValidationError as e: + log.error(e.json()) + return False + else: + event_cfg_obj = event_cfg_dict_obj + if event_id: + # NOTE: Can't update the ID alias if it was never set. + event_cfg_obj.id = event_id + + event_cfg_dict = event_cfg_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'registration_cfg', 'created_on', 'updated_on'}) # NOTE this exclude list should be reviewed again + + if event_id: + if event_cfg_dict_up_result := sql_update(data=event_cfg_dict, table_name='event', rm_id_random=True): pass # NOTE: This is not using the event_cfg table at this time. -STI 2021-09-28 + else: + log.warning(f'Event (Cfg) not updated. Event ID: {event_id}') + log.debug(event_cfg_dict_up_result) + return False + log.debug(event_cfg_dict_up_result) + else: # NOTE NOTE NOTE NOTE: This section is for future use NOTE NOTE NOTE NOTE + if event_cfg_dict_in_result := sql_insert(data=event_cfg_dict, table_name='event', rm_id_random=True, id_random_length=default_num_bytes): pass # NOTE: This is not using the event_cfg table at this time. -STI 2021-09-28 + else: + log.warning(f'Event (Cfg) not created.') + log.debug(event_cfg_dict_in_result) + return False + log.debug(event_cfg_dict_in_result) + + event_id = event_cfg_dict_in_result + + event_outline = {} + event_outline['event_id'] = event_id + + if return_outline: + log.debug(f'Returning the Event Cfg Outline: {event_cfg_outline}') + return event_cfg_outline + else: + log.debug(f'Returning the Event (Cfg) ID: {event_id}') + return event_id +# ### END ### API Event Cfg Methods ### create_update_event_cfg_obj_v4() ### diff --git a/app/methods/event_methods.py b/app/methods/event_methods.py index 621f82a..267c6ab 100644 --- a/app/methods/event_methods.py +++ b/app/methods/event_methods.py @@ -9,11 +9,12 @@ from app.lib_general import log, logging from app.methods.address_methods import load_address_obj from app.methods.contact_methods import load_contact_obj -from app.methods.event_cfg_methods import load_event_cfg_obj +from app.methods.event_cfg_methods import create_update_event_cfg_obj_v4, load_event_cfg_obj from app.methods.event_session_methods import get_event_session_rec_list, load_event_session_obj from app.methods.person_methods import create_update_person_obj_v4b, load_person_obj from app.methods.user_methods import create_user_obj, load_user_obj, update_user_obj +from app.models.common_field_schema import default_num_bytes from app.models.event_models import Event_Base from app.models.event_cfg_models import Event_Cfg_Base @@ -598,29 +599,91 @@ def get_account_id_w_event_id( # ### BEGIN ### API Event Methods ### update_event_obj() ### +# Updated 2021-09-28 +# NOTE: This has been partially moved to v4 to allowe for create_update conversion. def update_event_obj( event_id: int|str, # Ideally the int ID should be passed. This allows for updating of the id_random value. - event_obj_up: Event_Base, + event_obj_up: Event_Base, # NOTE: rename from event_obj_up to event_dict_obj + account_id: int|str|None = None, create_sub_obj: bool = False, + fail_any: bool = False, # Fail if any thing goes wrong for sub objects + return_outline: bool = False, ) -> bool: log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) + log.info('Checking requirements...') if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass else: return False account_id = get_account_id_w_event_id(event_id=event_id) - event_obj_up.id = event_id + log.debug(type(event_obj_up)) # NOTE: rename from event_obj_up to event_dict_obj + if isinstance(event_obj_up, dict): + event_dict = event_obj_up + if event_id: + event_dict['event_id'] = event_id + if account_id: + event_dict['account_id'] = account_id + try: + event_obj = Event_Base(**event_dict) + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(event_obj) + except ValidationError as e: + log.error(e.json()) + return False + else: + event_obj = event_obj_up + if event_id: + # NOTE: Can't update the ID alias if it was never set. + event_obj.id = event_id + if account_id: + event_obj.account_id = account_id - log.debug(event_obj_up) - # log.debug(event_obj_up.dict(by_alias=True, exclude_unset=True)) - log.debug(event_obj_up.dict(by_alias=False, exclude_unset=True)) - # log.debug(event_obj_up.dict(by_alias=False, exclude_unset=False)) + event_dict = event_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'address_location', 'contact_1', 'contact_2', 'contact_3', 'event_cfg', 'event_abstract_list', 'event_badge_list', 'event_exhibit_list', 'event_file_list', 'event_location_list', 'event_person_list', 'event_presentation_list', 'event_presenter_list', 'event_session_list', 'event_track_list', 'poc_person', 'created_on', 'updated_on'}) # NOTE this exclude list should be reviewed again - if event_obj_up.poc_person_id and event_obj_up.poc_person: - poc_person_id = event_obj_up.poc_person_id - poc_person_obj_up = event_obj_up.poc_person + if event_id: + if event_dict_up_result := sql_update(data=event_dict, table_name='event', rm_id_random=True): pass + else: + log.warning(f'Event not updated. Event ID: {event_id}') + log.debug(event_dict_up_result) + return False + log.debug(event_dict_up_result) + else: # NOTE NOTE NOTE NOTE: This section is for future use when creating create_update_event_obj_vX NOTE NOTE NOTE NOTE + if event_dict_in_result := sql_insert(data=event_dict, table_name='event', rm_id_random=True, id_random_length=default_num_bytes): pass + else: + log.warning(f'Event not created.') + log.debug(event_dict_in_result) + return False + log.debug(event_dict_in_result) + + event_id = event_dict_in_result + + event_outline = {} + event_outline['event_id'] = event_id + + log.debug(event_obj) + # log.debug(event_obj.dict(by_alias=True, exclude_unset=True)) + log.debug(event_obj.dict(by_alias=False, exclude_unset=True)) + # log.debug(event_obj.dict(by_alias=False, exclude_unset=False)) + + if event_obj.event_cfg: + event_cfg_obj = event_obj.event_cfg + if create_update_event_cfg_obj_up_result := create_update_event_cfg_obj_v4( + event_cfg_dict_obj = event_cfg_obj, + event_id = event_id, + fail_any = fail_any, + return_outline = return_outline, + ): + log.debug(create_update_event_cfg_obj_up_result) + else: + log.debug(create_update_event_cfg_obj_up_result) + return False + + if event_obj.poc_person_id and event_obj.poc_person: + event_outline['poc_person_id'] = None + poc_person_id = event_obj.poc_person_id + poc_person_obj_up = event_obj.poc_person log.debug(poc_person_id) log.debug(poc_person_obj_up) if poc_person_obj_up_result := create_update_person_obj_v4b( @@ -632,23 +695,24 @@ def update_event_obj( else: log.debug(poc_person_obj_up_result) return False - elif event_obj_up.poc_person and not event_obj_up.poc_person.id: + elif event_obj.poc_person and not event_obj.poc_person.id: # NOTE: This will blindly create a new person even if there was one associated but the event.poc_person_id was not found. - poc_person_obj_in = event_obj_up.poc_person + poc_person_obj_in = event_obj.poc_person log.debug(poc_person_obj_in) if poc_person_obj_in_result := create_update_person_obj_v4b(account_id=account_id, person_dict_obj=poc_person_obj_in): # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(poc_person_obj_in_result) - event_obj_up.poc_person_id = poc_person_obj_in_result + event_obj.poc_person_id = poc_person_obj_in_result else: # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(poc_person_obj_in_result) return False - if event_obj_up.user_id and event_obj_up.user: + if event_obj.user_id and event_obj.user: + event_outline['user_id'] = None log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - user_id = event_obj_up.user_id - user_obj_up = event_obj_up.user + user_id = event_obj.user_id + user_obj_up = event_obj.user log.debug(user_id) log.debug(user_obj_up) if user_obj_up_result := update_user_obj( @@ -660,26 +724,33 @@ def update_event_obj( else: log.debug(user_obj_up_result) return False - elif event_obj_up.user and not event_obj_up.user.id: + elif event_obj.user and not event_obj.user.id: # NOTE: This will blindly create a new user even if there was one associated but the event.user_id was not found. - user_obj_in = event_obj_up.user + user_obj_in = event_obj.user log.debug(user_obj_in) if user_obj_in_result := create_user_obj(account_id=account_id, user_obj_new=user_obj_in): # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(user_obj_in_result) - event_obj_up.user_id = user_obj_in_result + event_obj.user_id = user_obj_in_result else: # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(user_obj_in_result) return False - event_dict_up = event_obj_up.dict(by_alias=False, exclude_unset=True, exclude={'event_abstract_list', 'event_badge', 'event_exhibit_list', 'event_file_list', 'event_location_list', 'event_presentation_list', 'event_presenter_list', 'event_registration', 'event_session', 'event_track', 'person', 'user'}) - log.debug(event_dict_up) + # event_dict_up = event_obj.dict(by_alias=False, exclude_unset=True, exclude={'event_abstract_list', 'event_badge', 'event_exhibit_list', 'event_file_list', 'event_location_list', 'event_presentation_list', 'event_presenter_list', 'event_registration', 'event_session', 'event_track', 'person', 'user'}) + # log.debug(event_dict_up) - if event_obj_up_result := sql_update(data=event_dict_up, table_name='event', rm_id_random=True): - log.debug(event_obj_up_result) - return True + # if event_obj_result := sql_update(data=event_dict_up, table_name='event', rm_id_random=True): + # log.debug(event_obj_result) + # return True + # else: + # log.debug(event_obj_result) + # return False + + if return_outline: + log.debug(f'Returning the Event Outline: {event_outline}') + return event_outline else: - log.debug(event_obj_up_result) - return False + log.debug(f'Returning the Event ID: {event_id}') + return event_id # ### END ### API Event Methods ### update_event_obj() ### diff --git a/app/models/event_cfg_models.py b/app/models/event_cfg_models.py index ed7b346..ed9f540 100644 --- a/app/models/event_cfg_models.py +++ b/app/models/event_cfg_models.py @@ -15,14 +15,17 @@ class Event_Cfg_Base(BaseModel): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - # id_random: Optional[str] = Field( - # **base_fields['event_cfg_id_random'], - # alias = 'event_cfg_id_random', - # default_factory = lambda:secrets.token_urlsafe(default_num_bytes), - # ) - # id: Optional[int] = Field( - # #alias = 'event_cfg_id' - # ) + id_random: Optional[str] = Field( + # **base_fields['event_cfg_id_random'], + alias = 'event_cfg_id_random', + # default_factory = lambda:secrets.token_urlsafe(default_num_bytes), + ) + id: Optional[int] = Field( + alias = 'event_cfg_id' + ) + + event_id_random: Optional[str] + event_id: Optional[int] enable: Optional[bool] enable_from: Optional[datetime.datetime] diff --git a/app/models/event_models.py b/app/models/event_models.py index 7e55792..242c38b 100644 --- a/app/models/event_models.py +++ b/app/models/event_models.py @@ -114,10 +114,11 @@ class Event_Base(BaseModel): # access_key: Optional[str] # Maybe use in the future? - enable: Optional[bool] + enable: Optional[bool] # Also in Event_Cfg_Base model enable_from: Optional[datetime.datetime] = None enable_to: Optional[datetime.datetime] = None + hide: Optional[bool] # Also in Event_Cfg_Base model priority: Optional[bool] sort: Optional[int] group: Optional[str] diff --git a/app/routers/account.py b/app/routers/account.py index 9cd45f0..631ba3e 100644 --- a/app/routers/account.py +++ b/app/routers/account.py @@ -9,7 +9,7 @@ from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template -from app.methods.account_methods import load_account_obj, load_account_obj_membership_type +from app.methods.account_methods import get_account_rec_list, load_account_obj from app.methods.account_cfg_methods import load_account_cfg_obj from app.methods.event_methods import get_event_rec_list, load_event_obj # from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj @@ -76,27 +76,80 @@ async def patch_account_obj( return result +# ### BEGIN ### API Account ### get_account_obj_li() ### +# Updated 2021-09-28 @router.get('/list', response_model=Resp_Body_Base) async def get_account_obj_li( - for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), - for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), + # inc_address: bool = False, + # inc_address_list: bool = False, + inc_archive_list: bool = False, + # inc_contact: bool = False, + # inc_contact_list: bool = False, + inc_event_list: bool = False, + inc_hosted_file_list: bool = False, + inc_journal_list: bool = False, + inc_membership_person_list: bool = False, + inc_order_list: bool = False, + inc_organization_list: bool = False, + inc_page_list: bool = False, + inc_person_list: bool = False, + inc_post_list: bool = False, + inc_product_list: bool = False, + inc_site_list: bool = False, + inc_site_domain_list: bool = False, + inc_user_list: bool = False, x_account_id: str = Header(...), - by_alias: Optional[bool] = True, + return_obj: bool = True, + limit: int = 25, + enabled: str = 'enabled', + by_alias: bool = True, exclude_unset: Optional[bool] = True, response: Response = Response, ): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'account' - result = get_obj_li_template( - obj_type=obj_type, - for_obj_type=for_obj_type, - for_obj_id=for_obj_id, - by_alias=True, - exclude_unset=True, - ) - return result + # Updated 2021-09-28 + if account_rec_list_result := get_account_rec_list( + limit = limit, + enabled = enabled, + ): + account_result_list = [] + for account_rec in account_rec_list_result: + if load_account_result := load_account_obj( + account_id = account_rec.get('account_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + enabled = enabled, + # inc_address = inc_address, + # inc_address_list = inc_address_list, + # inc_archive_list = inc_archive_list, + # inc_contact = inc_contact, + # inc_contact_list = inc_contact_list, + inc_event_list = inc_event_list, + # inc_hosted_file_list = inc_hosted_file_list, + # inc_journal_list = inc_journal_list, + inc_membership_person_list = inc_membership_person_list, + # inc_order_list = inc_order_list, + # inc_organization_list = inc_organization_list, + inc_page_list = inc_page_list, + inc_person_list = inc_person_list, + inc_post_list = inc_post_list, + # inc_product_list = inc_product_list, + inc_site_list = inc_site_list, + inc_site_domain_list = inc_site_domain_list, + inc_user_list = inc_user_list, + ): + account_result_list.append(load_account_result) + else: + account_result_list.append(None) + response_data = account_result_list + else: + return mk_resp(data=False, status_code=400, response=response) # Bad Request + + return mk_resp(data=response_data) # ### BEGIN ### API Account ### get_account_obj_new() ### @@ -185,8 +238,7 @@ async def get_account_obj_new( log.debug(locals()) if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass - else: - return mk_resp(data=None, status_code=404) + else: return mk_resp(data=None, status_code=404) if account_result := load_account_obj( account_id = account_id, @@ -281,112 +333,6 @@ async def get_account_obj_new( # ### END ### API Account ### get_account_obj_new() ### -# ### BEGIN ### API Account ### get_account_obj_event_list() ### -# Working well as of 2021-06-30. Using as a template for other routes. -@router.get('/{account_id}/event/list', response_model=Resp_Body_Base) -async def get_account_obj_event_list( - account_id: str = Query(..., min_length=1, max_length=22), - limit: int = 500, # For now this covers any included objects or object lists - enabled: str = 'enabled', # For now this covers any included objects or object lists - conference: bool = False, # Events with badges, sessions, presentations, presenters, registration, etc - # inc_account_cfg: bool = False, - inc_address: bool = False, # Under event and under contact - # inc_address_location: bool = False, - inc_contact: bool = False, - # inc_event_abstract_list: bool = False, - # inc_event_badge_list: bool = False, - inc_event_cfg: bool = False, - # inc_event_device_list: bool = False, - # inc_event_exhibit_list: bool = False, - inc_event_file_list: bool = False, - # inc_event_location: bool = False, - inc_event_location_list: bool = False, - # inc_event_person: bool = False, - inc_event_person_list: bool = False, - inc_event_presentation_list: bool = False, - # inc_event_presenter_cat: bool = False, - inc_event_presenter_list: bool = False, - # inc_event_registration_cfg: bool = False, - # inc_event_registration_list: bool = False, - inc_event_session_list: bool = False, - # inc_event_track: bool = False, - # inc_event_track_list: bool = False, - # inc_order_list: bool = False, - inc_organization: bool = False, - inc_person: bool = False, - inc_poc_event_person: bool = False, - inc_product: bool = False, - inc_product_list: bool = False, - inc_user: bool = False, - x_account_id: str = Header(...), - by_alias: Optional[bool] = True, - exclude_unset: Optional[bool] = True, - response: Response = Response, - ): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) - - if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass - else: return mk_resp(data=None, status_code=404) - - response_data = None - # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - - # Updated 2021-06-30 - if event_rec_list_result := get_event_rec_list( - for_obj_type = 'account', - for_obj_id = account_id, - limit = limit, - enabled = enabled, - conference = conference, - ): - event_result_list = [] - for event_rec in event_rec_list_result: - if load_event_result := load_event_obj( - event_id = event_rec.get('event_id', None), - limit = limit, - by_alias = by_alias, - exclude_unset = exclude_unset, - # model_as_dict = model_as_dict, - enabled = enabled, - inc_address = inc_address, - inc_contact = inc_contact, - # inc_event_abstract_list = inc_event_abstract_list, - # inc_event_badge_list = inc_event_badge_list, - inc_event_cfg = inc_event_cfg, - # inc_event_device_list = inc_event_device_list, - # inc_event_exhibit_list = inc_event_exhibit_list, - inc_event_file_list = inc_event_file_list, - # inc_event_location = inc_event_location, - inc_event_location_list = inc_event_location_list, - # inc_event_person = inc_event_person, - inc_event_person_list = inc_event_person_list, - inc_event_presentation_list = inc_event_presentation_list, - # inc_event_presenter_cat = inc_event_presenter_cat, - inc_event_presenter_list = inc_event_presenter_list, - # inc_event_registration_cfg = inc_event_registration_cfg, - # inc_event_registration_list = inc_event_registration_list, - inc_event_session_list = inc_event_session_list, - # inc_event_track = inc_event_track, - # inc_event_track_list = inc_event_track_list, - # inc_order_list = inc_order_list, - inc_organization = inc_organization, - inc_person = inc_person, - # inc_product = inc_product, - # inc_product_list = inc_product_list, - inc_user = inc_user, - ): - event_result_list.append(load_event_result) - else: - event_result_list.append(None) - response_data = event_result_list - else: - return mk_resp(data=False, status_code=400, response=response) # Bad Request - - return mk_resp(data=response_data) -# ### END ### API Account ### get_account_obj_event_list() ### - - @router.delete('/{obj_id}', response_model=Resp_Body_Base) async def delete_account_obj( obj_id: str = Query(..., min_length=1, max_length=22), diff --git a/app/routers/event.py b/app/routers/event.py index 58857e6..b56c681 100644 --- a/app/routers/event.py +++ b/app/routers/event.py @@ -42,72 +42,70 @@ async def post_event_obj( return result -@router.patch('/event/{obj_id}', response_model=Resp_Body_Base) -async def patch_event_obj( - obj_id: str = Query(..., min_length=1, max_length=22), - obj: Event_Base = None, - x_account_id: Optional[str] = Header(..., ), - return_obj: Optional[bool] = True, - by_alias: Optional[bool] = True, - exclude_unset: Optional[bool] = True, - response: Response = Response, - ): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) +# @router.patch('/event/{obj_id}', response_model=Resp_Body_Base) +# async def patch_event_obj( +# obj_id: str = Query(..., min_length=1, max_length=22), +# obj: Event_Base = None, +# x_account_id: Optional[str] = Header(..., ), +# return_obj: Optional[bool] = True, +# by_alias: Optional[bool] = True, +# exclude_unset: Optional[bool] = True, +# response: Response = Response, +# ): +# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL +# log.debug(locals()) - obj_type = 'event' - obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) - obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=obj_type) - obj_data_dict['id_random'] = obj_id - result = patch_obj_template( - obj_type=obj_type, - data=obj_data_dict, - obj_id=obj_id, - return_obj=True, - by_alias=True, - exclude_unset=True, - ) - return result +# obj_type = 'event' +# obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) +# obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=obj_type) +# obj_data_dict['id_random'] = obj_id +# result = patch_obj_template( +# obj_type=obj_type, +# data=obj_data_dict, +# obj_id=obj_id, +# return_obj=True, +# by_alias=True, +# exclude_unset=True, +# ) +# return result -# ### BEGIN ### API Event ### patch_event_json() ### -@router.patch('/event/{event_id}/json', response_model=Resp_Body_Base) -async def patch_event_json( +# ### BEGIN ### API Event ### patch_event() ### +@router.patch('/event/{event_id}', response_model=Resp_Body_Base) +async def patch_event( event_obj: Event_Base, - event_id: str = Query(..., min_length=1, max_length=22), + event_id: str = Query(..., min_length=11, max_length=22), create_sub_obj: bool = False, x_account_id: Optional[str] = Header(..., ), return_obj: Optional[bool] = True, + inc_event_cfg: bool = False, by_alias: Optional[bool] = True, - include: Optional[list] = [], - exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, exclude_none: Optional[bool] = True, response: Response = Response, ): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # 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 mk_resp(data=None, status_code=404) + else: return mk_resp(data=None, status_code=404) if event_obj_up_result := update_event_obj( - event_id=event_id, - event_obj_up=event_obj, - create_sub_obj=create_sub_obj, + event_id = event_id, + event_obj_up = event_obj, + create_sub_obj = create_sub_obj, ): log.debug(event_obj_up_result) if return_obj: - event_obj = load_event_obj(event_id=event_id) + event_obj = load_event_obj(event_id=event_id, inc_event_cfg=inc_event_cfg) event_dict = event_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) return mk_resp(data=event_dict) else: return mk_resp(data=event_obj_up_result) else: return mk_resp(data=False, status_code=400, response=response) # Bad Request -# ### END ### API Event ### patch_event_json() ### +# ### END ### API Event ### patch_event() ### # @router.get('/event/list', response_model=Resp_Body_Base) @@ -346,6 +344,110 @@ async def get_event_obj( # ### END ### API Event ### get_event_obj() ### +# ### BEGIN ### API Event ### get_account_obj_event_list() ### +# Updated 2021-09-28 +@router.get('/account/{account_id}/event/list', response_model=Resp_Body_Base) +async def get_account_obj_event_list( + account_id: str = Query(..., min_length=1, max_length=22), + limit: int = 500, # For now this covers any included objects or object lists + enabled: str = 'enabled', # For now this covers any included objects or object lists + conference: bool = False, # Events with badges, sessions, presentations, presenters, registration, etc + # inc_account_cfg: bool = False, + inc_address: bool = False, # Under event and under contact + # inc_address_location: bool = False, + inc_contact: bool = False, + # inc_event_abstract_list: bool = False, + # inc_event_badge_list: bool = False, + inc_event_cfg: bool = False, + # inc_event_device_list: bool = False, + # inc_event_exhibit_list: bool = False, + inc_event_file_list: bool = False, + # inc_event_location: bool = False, + inc_event_location_list: bool = False, + # inc_event_person: bool = False, + inc_event_person_list: bool = False, + inc_event_presentation_list: bool = False, + # inc_event_presenter_cat: bool = False, + inc_event_presenter_list: bool = False, + # inc_event_registration_cfg: bool = False, + # inc_event_registration_list: bool = False, + inc_event_session_list: bool = False, + # inc_event_track: bool = False, + # inc_event_track_list: bool = False, + # inc_order_list: bool = False, + inc_organization: bool = False, + inc_person: bool = False, + inc_poc_event_person: bool = False, + inc_product: bool = False, + inc_product_list: bool = False, + inc_user: bool = False, + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + response: Response = Response, + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass + else: return mk_resp(data=None, status_code=404) + + response_data = None + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + + # Updated 2021-09-28 + if event_rec_list_result := get_event_rec_list( + account_id = account_id, + limit = limit, + enabled = enabled, + conference = conference, + ): + event_result_list = [] + for event_rec in event_rec_list_result: + if load_event_result := load_event_obj( + event_id = event_rec.get('event_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + enabled = enabled, + inc_address = inc_address, + inc_contact = inc_contact, + # inc_event_abstract_list = inc_event_abstract_list, + # inc_event_badge_list = inc_event_badge_list, + inc_event_cfg = inc_event_cfg, + # inc_event_device_list = inc_event_device_list, + # inc_event_exhibit_list = inc_event_exhibit_list, + inc_event_file_list = inc_event_file_list, + # inc_event_location = inc_event_location, + inc_event_location_list = inc_event_location_list, + # inc_event_person = inc_event_person, + inc_event_person_list = inc_event_person_list, + inc_event_presentation_list = inc_event_presentation_list, + # inc_event_presenter_cat = inc_event_presenter_cat, + inc_event_presenter_list = inc_event_presenter_list, + # inc_event_registration_cfg = inc_event_registration_cfg, + # inc_event_registration_list = inc_event_registration_list, + inc_event_session_list = inc_event_session_list, + # inc_event_track = inc_event_track, + # inc_event_track_list = inc_event_track_list, + # inc_order_list = inc_order_list, + inc_organization = inc_organization, + inc_person = inc_person, + # inc_product = inc_product, + # inc_product_list = inc_product_list, + inc_user = inc_user, + ): + event_result_list.append(load_event_result) + else: + event_result_list.append(None) + response_data = event_result_list + else: + return mk_resp(data=False, status_code=400, response=response) # Bad Request + + return mk_resp(data=response_data) +# ### END ### API Event ### get_account_obj_event_list() ### + # ### BEGIN ### API Event Methods ### get_person_event_obj_li() ### # Updated 2021-07-12