diff --git a/app/methods/account_methods.py b/app/methods/account_methods.py index 32f1f18..2f723a4 100644 --- a/app/methods/account_methods.py +++ b/app/methods/account_methods.py @@ -117,7 +117,7 @@ def load_account_obj( inc_user_list: bool = False, # Priority l2 inc_user_role_list: bool = False, ) -> Account_Base|dict|bool: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + 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 @@ -291,7 +291,7 @@ def load_account_obj( inc_journal_entry_list = inc_journal_entry_list, ) ) - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(journal_dict_list) @@ -366,6 +366,7 @@ def load_account_obj( load_membership_type_obj( membership_type_id = membership_type_rec.get('membership_type_id', None), limit = limit, + enabled = enabled, by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, diff --git a/app/methods/event_location_methods.py b/app/methods/event_location_methods.py index 91f31e1..c6c2b9b 100644 --- a/app/methods/event_location_methods.py +++ b/app/methods/event_location_methods.py @@ -14,8 +14,6 @@ from app.lib_general import log, logging # from app.methods.event_presenter_methods import load_event_presenter_obj # from app.methods.event_session_methods import load_event_session_obj # from app.methods.event_track_methods import load_event_track_obj -# from app.methods.person_methods import load_person_obj -# from app.methods.user_methods import load_user_obj from app.models.event_location_models import Event_Location_Base diff --git a/app/methods/membership_member_methods.py b/app/methods/membership_member_methods.py index cdf6f94..d526b08 100644 --- a/app/methods/membership_member_methods.py +++ b/app/methods/membership_member_methods.py @@ -281,8 +281,8 @@ def load_membership_member_obj( by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, - inc_address = inc_address, - inc_contact = inc_contact, + # inc_address = inc_address, + # inc_contact = inc_contact, # inc_organization = inc_organization, # inc_person = inc_person, ): @@ -304,7 +304,7 @@ def get_membership_member_rec_list( limit: int = 1000, enabled: str = 'enabled', # enabled, disabled, all ) -> list|bool: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass diff --git a/app/methods/order_cfg_methods.py b/app/methods/order_cfg_methods.py new file mode 100644 index 0000000..e06b7c7 --- /dev/null +++ b/app/methods/order_cfg_methods.py @@ -0,0 +1,44 @@ +from __future__ import annotations +import datetime + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator + +from app.db_sql import redis_lookup_id_random, sql_select +from app.lib_general import log, logging + +from app.models.order_cfg_models import Order_Cfg_Base + + +# ### BEGIN ### API Order Cfg Methods ### load_order_cfg_obj() ### +def load_order_cfg_obj( + account_id: int|str, + by_alias: bool = True, + exclude_unset: bool = True, + model_as_dict: bool = False, + ) -> Order_Cfg_Base|dict|bool: + 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 False + + if order_cfg_rec := sql_select( + table_name = 'v_account_cfg_detail', + field_name = 'account_id', + field_value = account_id, + ): pass + else: return False + log.debug(order_cfg_rec) + + try: + order_cfg_obj = Order_Cfg_Base(**order_cfg_rec) + log.debug(order_cfg_obj) + except ValidationError as e: + log.error(e.json()) + + if model_as_dict: + return order_cfg_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member + else: + return order_cfg_obj +# ### END ### API Order Cfg Methods ### load_order_cfg_obj() ### diff --git a/app/methods/order_line_methods.py b/app/methods/order_line_methods.py new file mode 100644 index 0000000..bdbd6f8 --- /dev/null +++ b/app/methods/order_line_methods.py @@ -0,0 +1,185 @@ +from __future__ import annotations +import datetime + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator + +from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update +from app.lib_general import log, logging + + +from app.models.order_line_models import Order_Line_Base + + +# ### BEGIN ### API Order Line Methods ### create_order_line_obj() ### +def create_order_line_obj(order_line_obj_new:Order_Line_Base): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if not order_line_obj_new: + return False + + order_line_obj_data = order_line_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'user', 'created_on', 'updated_on'}) + + if order_line_obj_in_result := sql_insert(data=order_line_obj_data, table_name='order_line', rm_id_random=True, id_random_length=8): pass + else: + return False + + log.debug(order_line_obj_in_result) + + order_line_id = order_line_obj_in_result + + log.debug(f'Returning the new order_line_id: {order_line_id}') + return order_line_id +# ### END ### API Order Line Methods ### create_order_line_obj() ### + + +# ### BEGIN ### API Order Line Methods ### load_order_line_obj() ### +def load_order_line_obj( + order_line_id: int|str, + limit: int = 1000, + by_alias: bool = True, + exclude_unset: bool = True, + model_as_dict: bool = False, + ) -> Order_Line_Base|dict|bool: + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if order_line_id := redis_lookup_id_random(record_id_random=order_line_id, table_name='order_line'): pass + else: return False + + if order_line_rec := sql_select(table_name='v_order_line', record_id=order_line_id): pass + else: return False + + #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(order_line_rec) + + try: + order_line_obj = Order_Line_Base(**order_line_rec) + log.debug(order_line_obj) + except ValidationError as e: + log.error(e.json()) + return False + + if model_as_dict: + return order_line_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member + else: + return order_line_obj +# ### END ### API Order Line Methods ### load_order_line_obj() ### + + +# ### BEGIN ### API Order Line Methods ### update_order_line_obj() ### +def update_order_line_obj( + order_line_id: int|str, # Ideally the int ID should be passed. This allows for updating of the id_random value. + order_line_obj_up: Order_Line_Base, + create_missing_obj: bool = False, + ) -> bool: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if order_line_id := redis_lookup_id_random(record_id_random=order_line_id, table_name='order_line'): pass + else: return False + + order_line_obj_up.id = order_line_id + + log.debug(order_line_obj_up) + # log.debug(order_line_obj_up.dict(by_alias=True, exclude_unset=True)) + log.debug(order_line_obj_up.dict(by_alias=False, exclude_unset=True)) + # log.debug(order_line_obj_up.dict(by_alias=False, exclude_unset=False)) + + #order_line_dict_up = order_line_obj_up.dict(by_alias=False, exclude_unset=True) + + # if order_line_obj_up.person_id and order_line_obj_up.person: + # person_id = order_line_obj_up.person_id + # person_obj_up = order_line_obj_up.person + # log.debug(person_id) + # log.debug(person_obj_up) + # if person_obj_up_result := update_person_obj( + # person_id=person_id, + # person_obj_up=person_obj_up, + # create_missing_obj=create_missing_obj, + # ): + # log.debug(person_obj_up_result) + # else: + # log.debug(person_obj_up_result) + # return False + + # if order_line_obj_up.user_id and order_line_obj_up.user: + # user_id = order_line_obj_up.user_id + # user_obj_up = order_line_obj_up.user + # log.debug(user_id) + # log.debug(user_obj_up) + # if user_obj_up_result := update_user_obj( + # user_id=user_id, + # user_obj_up=user_obj_up, + # create_missing_obj=create_missing_obj, + # ): + # log.debug(user_obj_up_result) + # else: + # log.debug(user_obj_up_result) + # return False + + order_line_dict_up = order_line_obj_up.dict(by_alias=False, exclude_unset=True, exclude={'user'}) + log.debug(order_line_dict_up) + + if order_line_obj_up_result := sql_update(data=order_line_dict_up, table_name='order_line', rm_id_random=True): + log.debug(order_line_obj_up_result) + return True + else: + log.debug(order_line_obj_up_result) + return False +# ### END ### API Order Line Methods ### update_order_line_obj() ### + + +# ### BEGIN ### API Order Line Methods ### get_order_line_rec_list() ### +def get_order_line_rec_list( + for_obj_type: str, + for_obj_id: str, + limit: int = 1000, + ) -> list|bool: + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass + else: return False + data = {} + data[f'{for_obj_type}_id'] = for_obj_id + # data['for_obj_type'] = for_obj_type + sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id' + + # if enabled in ['enabled', 'disabled', 'all']: + # if enabled == 'enabled': + # data['enable'] = True + # sql_enabled = f'AND `tbl`.enable = :enable' + # elif enabled == 'disabled': + # data['enable'] = False + # sql_enabled = f'AND `tbl`.enable = :enable' + # elif enabled == 'all': + # sql_enabled = '' + sql_enabled = '' + + if limit: + data['limit'] = limit + sql_limit = f'LIMIT :limit' + else: + sql_limit = '' + + sql = f""" + SELECT `tbl`.id AS 'order_line_id', `tbl`.id_random AS 'order_line_id_random' + FROM `order_line` AS `tbl` + WHERE + {sql_obj_type_id} + {sql_enabled} + ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC + {sql_limit}; + """ + + if order_line_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + order_line_rec_li = order_line_rec_li_result + else: + order_line_rec_li = [] + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(order_line_rec_li_result) + + return order_line_rec_li +# ### END ### API Order Line Methods ### get_order_line_rec_list() ### diff --git a/app/methods/order_methods.py b/app/methods/order_methods.py index b0b29ca..061b375 100644 --- a/app/methods/order_methods.py +++ b/app/methods/order_methods.py @@ -7,10 +7,15 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v from app.db_sql import redis_lookup_id_random, sql_delete, sql_insert_or_update, sql_select from app.lib_general import log, logging +from app.methods.order_cfg_methods import load_order_cfg_obj +from app.methods.order_line_methods import get_order_line_rec_list, load_order_line_obj +# from app.methods.person_methods import load_person_obj +# from app.methods.user_methods import load_user_obj + from app.models.order_models import Order_Base from app.models.order_line_models import Order_Line_Base # This should go away later. -#from app.models.person_models import Person_Base -#from app.models.user_models import User_Base +# from app.models.person_models import Person_Base +# from app.models.user_models import User_Base # ### BEGIN ### API Order Methods ### save_order_obj() ### @@ -165,46 +170,22 @@ def load_order_obj( exclude_unset: bool = True, model_as_dict: bool = False, enabled: str = 'enabled', # enabled, disabled, all - inc_order_line_list: bool = False, inc_order_cfg: bool = False, - inc_person_obj: bool = False, - inc_user_obj: bool = False, + inc_order_line_list: bool = False, + inc_person: bool = False, + inc_user: bool = False, ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if order_id := redis_lookup_id_random(record_id_random=order_id, table_name='order'): pass - else: - return False + else: return False - if order_rec := sql_select(table_name='v_order', record_id=order_id): - #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(order_rec) + if order_rec := sql_select(table_name='v_order', record_id=order_id): pass + else: return False - if inc_order_line_list: - order_line_data = {} - order_line_data['order_id'] = order_id - if order_line_rec_li := sql_select(table_name='v_order_line', data=order_line_data, as_list=True):#, field_name='order_id', field_value=order_id): - log.debug(order_line_rec_li) - order_rec['order_line_li'] = order_line_rec_li - - if inc_order_cfg: - if order_cfg_rec := sql_select(table_name='v_account_cfg_detail', field_name='account_id', field_value=order_rec.get('account_id', None)): - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(order_cfg_rec) - - order_rec['cfg'] = order_cfg_rec - - if inc_person_obj: - if person_rec := sql_select(table_name='v_person', field_name='person_id', field_value=order_rec.get('person_id', None)): - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(person_rec) - - order_rec['person'] = person_rec - - log.debug(order_rec) - else: - return False + #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(order_rec) try: order_obj = Order_Base(**order_rec) @@ -212,6 +193,76 @@ def load_order_obj( except ValidationError as e: log.error(e.json()) + # Updated 2021-06-18 + if inc_order_line_list: + if order_line_rec_list_result := get_order_line_rec_list( + for_obj_type = 'order', + for_obj_id = order_id, + limit = limit, + ): + order_line_result_list = [] + for order_line_rec in order_line_rec_list_result: + order_line_result_list.append( + load_order_line_obj( + order_line_id = order_line_rec.get('order_line_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + ) + ) + order_obj.order_line_list = order_line_result_list + else: order_obj.order_line_list = [] + + if inc_order_line_list: + order_line_data = {} + order_line_data['order_id'] = order_id + if order_line_rec_li := sql_select(table_name='v_order_line', data=order_line_data, as_list=True):#, field_name='order_id', field_value=order_id): + log.debug(order_line_rec_li) + order_rec['order_line_li'] = order_line_rec_li + + if inc_order_cfg: + if order_cfg_result := load_order_cfg_obj( + order_cfg_id = order_rec.get('order_cfg_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + ): + order_obj.order_cfg = order_cfg_result + else: order_obj.order_cfg = None + + # Updated 2021-06-22 + if inc_person: + from app.methods.person_methods import load_person_obj + if person_result := load_person_obj( + person_id = order_rec.get('person_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + ): + order_obj.person = person_result + else: order_obj.person = None + pass + + # Updated 2021-06-22 + if inc_user: + from app.methods.user_methods import load_user_obj + if user_result := load_user_obj( + user_id = order_rec.get('user_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + ): + order_obj.user = user_result + else: order_obj.user = None + pass + if model_as_dict: return order_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member else: diff --git a/app/methods/person_methods.py b/app/methods/person_methods.py index a67f793..64f41be 100644 --- a/app/methods/person_methods.py +++ b/app/methods/person_methods.py @@ -9,8 +9,9 @@ from app.lib_general import log, logging from app.methods.address_methods import load_address_obj from app.methods.contact_methods import create_contact_obj, load_contact_obj, update_contact_obj +from app.methods.order_methods import load_order_obj, get_order_rec_list from app.methods.organization_methods import load_organization_obj, update_organization_obj -from app.methods.user_methods import create_user_obj, load_user_obj, update_user_obj +# from app.methods.user_methods import create_user_obj, load_user_obj, update_user_obj from app.models.person_models import Person_Base @@ -69,7 +70,17 @@ def load_person_obj( enabled: str = 'enabled', # enabled, disabled, all inc_address: bool = False, # Under contact inc_contact: bool = False, + inc_event_list: bool = False, + inc_journal_list: bool = False, + inc_journal_entry_list: bool = False, + inc_membership_member: bool = False, + inc_order_cfg: bool = False, + inc_order_line_list: bool = False, + inc_order_list: bool = False, + inc_order_cart_list: bool = False, inc_organization: bool = False, + inc_post_list: bool = False, + inc_post_comment_list: bool = False, inc_user: bool = False, ) -> Person_Base|bool: log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -103,6 +114,32 @@ def load_person_obj( person_obj.contact = contact_result else: person_obj.contact = None + # Updated 2021-06-18 + if inc_order_list: + if order_rec_list_result := get_order_rec_list( + for_obj_type = 'person', + for_obj_id = person_id, + limit = limit, + enabled = enabled, + ): + order_result_list = [] + for order_rec in order_rec_list_result: + order_result_list.append( + load_order_obj( + order_id = order_rec.get('order_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + inc_order_cfg = inc_order_cfg, + inc_order_line_list = inc_order_line_list, + inc_user = inc_user, + ) + ) + person_obj.order_list = order_result_list + else: person_obj.order_list = [] + # Updated 2021-06-18 if inc_organization: organization_id = person_rec.get('organization_id', None) @@ -122,18 +159,19 @@ def load_person_obj( # Updated 2021-06-18 if inc_user: - user_id = person_rec.get('user_id', None) - log.debug(user_id) - if user_result := load_user_obj( - user_id = user_id, - limit = limit, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - enabled = enabled, - ): - person_obj.user = user_result - else: person_obj.user = None + # user_id = person_rec.get('user_id', None) + # log.debug(user_id) + # if user_result := load_user_obj( + # user_id = user_id, + # limit = limit, + # by_alias = by_alias, + # exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + # enabled = enabled, + # ): + # person_obj.user = user_result + # else: person_obj.user = None + pass if model_as_dict: return person_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member @@ -167,9 +205,9 @@ def update_person_obj( log.debug(contact_id) log.debug(contact_obj_up) if contact_obj_up_result := update_contact_obj( - contact_id=contact_id, - contact_obj_up=contact_obj_up, - create_missing_obj=create_missing_obj, + contact_id = contact_id, + contact_obj_up = contact_obj_up, + create_missing_obj = create_missing_obj, ): log.debug(contact_obj_up_result) else: @@ -194,9 +232,9 @@ def update_person_obj( log.debug(organization_id) log.debug(organization_obj_up) if organization_obj_up_result := update_organization_obj( - organization_id=organization_id, - organization_obj_up=organization_obj_up, - create_missing_obj=create_missing_obj, + organization_id = organization_id, + organization_obj_up = organization_obj_up, + create_missing_obj = create_missing_obj, ): log.debug(organization_obj_up_result) else: diff --git a/app/methods/post_comment_methods.py b/app/methods/post_comment_methods.py index 7b22da7..3e7cfdb 100644 --- a/app/methods/post_comment_methods.py +++ b/app/methods/post_comment_methods.py @@ -7,7 +7,7 @@ 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.person_methods import load_person_obj +from app.methods.person_methods import load_person_obj # from app.methods.user_methods import load_user_obj from app.models.post_comment_models import Post_Comment_Base @@ -66,33 +66,35 @@ def load_post_comment_obj( log.error(e.json()) return False - # Updated 2021-06-18 + + # Updated 2021-06-22 if inc_person: - from app.methods.person_methods import load_person_obj - person_result = load_person_obj( - person_id = post_comment_rec.get('person_id', None), - limit = limit, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - enabled = enabled, - ) - post_comment_obj.person = person_result - else: post_comment_obj.person = None + # from app.methods.person_methods import load_person_obj + if person_result := load_person_obj( + person_id = post_comment_rec.get('person_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + ): + post_comment_obj.person = person_result + else: post_comment_obj.person = None + # Updated 2021-06-18 if inc_user: - from app.methods.user_methods import load_user_obj - user_result = load_user_obj( - user_id = post_comment_rec.get('user_id', None), - limit = limit, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - enabled = enabled, - ) - post_comment_obj.user = user_result - else: post_comment_obj.user = None + # from app.methods.user_methods import load_user_obj + # user_result = load_user_obj( + # user_id = post_comment_rec.get('user_id', None), + # limit = limit, + # by_alias = by_alias, + # exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + # enabled = enabled, + # ) + # post_comment_obj.user = user_result + pass if model_as_dict: return post_comment_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member diff --git a/app/methods/post_methods.py b/app/methods/post_methods.py index b0b8391..f9157c1 100644 --- a/app/methods/post_methods.py +++ b/app/methods/post_methods.py @@ -7,7 +7,7 @@ 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.person_methods import load_person_obj +from app.methods.person_methods import load_person_obj # from app.methods.post_comment_methods import create_post_comment_obj, update_post_comment_obj from app.methods.post_comment_methods import get_post_comment_rec_list, load_post_comment_obj # from app.methods.user_methods import load_user_obj @@ -70,19 +70,19 @@ def load_post_obj( except ValidationError as e: log.error(e.json()) - # Updated 2021-06-18 + # Updated 2021-06-22 if inc_person: - from app.methods.person_methods import load_person_obj - person_result = load_person_obj( - person_id = post_rec.get('person_id', None), - limit = limit, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - enabled = enabled, - ) - post_obj.person = person_result - else: post_obj.person = None + # from app.methods.person_methods import load_person_obj + if person_result := load_person_obj( + person_id = post_rec.get('person_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + ): + post_obj.person = person_result + else: post_obj.person = None # Updated 2021-06-17 if inc_post_comment_list: @@ -111,17 +111,17 @@ def load_post_obj( # Updated 2021-06-18 if inc_user: - from app.methods.user_methods import load_user_obj - user_result = load_user_obj( - user_id = post_rec.get('user_id', None), - limit = limit, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - enabled = enabled, - ) - post_obj.user = user_result - else: post_obj.user = None + # from app.methods.user_methods import load_user_obj + # user_result = load_user_obj( + # user_id = post_rec.get('user_id', None), + # limit = limit, + # by_alias = by_alias, + # exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + # enabled = enabled, + # ) + # post_obj.user = user_result + pass if model_as_dict: return post_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member @@ -130,90 +130,6 @@ def load_post_obj( # ### END ### API Post Methods ### load_post_obj() ### -# ### BEGIN ### API Post Methods ### load_post_obj_list() ### -def load_post_obj_list( - account_id: int|str|None = None, - user_id: int|str|None = None, - limit: int = 1000, - by_alias: bool = True, - exclude_unset: bool = True, - model_as_dict: bool = False, - enabled: str = 'enabled', # enabled, disabled, all - inc_post_comment_list: bool = False, - inc_person: bool = False, - inc_user: bool = False, - ) -> list|bool: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) - - data = {} - if account_id: - if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass - else: return False - data['account_id'] = account_id - sql_obj_type_id = f'`tbl`.account_id = :account_id' - elif user_id: - if user_id := redis_lookup_id_random(record_id_random=user_id, table_name='user'): pass - else: return False - data['user_id'] = user_id - sql_obj_type_id = f'`tbl`.user_id = :user_id' - - if enabled in ['enabled', 'disabled', 'all']: - if enabled == 'enabled': - data['enable'] = True - sql_enabled = f'AND `tbl`.enable = :enable' - elif enabled == 'disabled': - data['enable'] = False - sql_enabled = f'AND `tbl`.enable = :enable' - elif enabled == 'all': - sql_enabled = '' - # else: tbl_obj['account'] = None - - if limit: - data['limit'] = limit - sql_limit = f'LIMIT :limit' - else: - sql_limit = '' - - sql = f""" - SELECT `tbl`.id AS 'post_id', `tbl`.id_random AS 'post_id_random' - FROM `post` AS `tbl` - WHERE - {sql_obj_type_id} - {sql_enabled} - ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC - {sql_limit}; - """ - - if post_rec_li_result := sql_select(data=data, sql=sql, as_list=True): - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(post_rec_li_result) - post_result_li = [] - for post_rec in post_rec_li_result: - post_id = post_rec.get('post_id', None) - if post_result := load_post_obj( - post_id = post_id, - model_as_dict = model_as_dict, - enabled = enabled, - inc_post_comment_list = inc_post_comment_list, - inc_person = inc_person, - inc_user = inc_user, - ): - log.debug(post_result) - post_result_li.append(post_result) - else: - log.debug(post_result) - post_result_li.append(None) - log.debug(post_result_li) - else: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(post_rec_li_result) - post_result_li = [] - - return post_result_li -# ### END ### API Post Methods ### load_post_obj_list() ### - - # ### BEGIN ### API Post Methods ### update_post_obj() ### def update_post_obj( post_id: int|str, # Ideally the int ID should be passed. This allows for updating of the id_random value. diff --git a/app/methods/site_methods.py b/app/methods/site_methods.py index ea365cf..01dbc05 100644 --- a/app/methods/site_methods.py +++ b/app/methods/site_methods.py @@ -7,9 +7,7 @@ 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.person_methods import load_person_obj from app.methods.site_domain_methods import get_site_domain_rec_list, load_site_domain_obj -# from app.methods.user_methods import load_user_obj from app.models.site_models import Site_Base @@ -57,8 +55,7 @@ def load_site_obj( if site_id := redis_lookup_id_random(record_id_random=site_id, table_name='site'): pass else: return False - if site_rec := sql_select(table_name='v_site', record_id=site_id): - log.debug(site_rec) + if site_rec := sql_select(table_name='v_site', record_id=site_id): pass else: return False log.debug(site_rec) diff --git a/app/methods/user_methods.py b/app/methods/user_methods.py index cb3d599..eeb018f 100644 --- a/app/methods/user_methods.py +++ b/app/methods/user_methods.py @@ -9,8 +9,9 @@ from app.lib_general import log, logging from app.methods.contact_methods import load_contact_obj, update_contact_obj # from app.methods.event_methods import get_event_rec_list +from app.methods.order_methods import load_order_obj, get_order_rec_list from app.methods.organization_methods import load_organization_obj, update_organization_obj -# from app.methods.person_methods import load_person_obj, update_person_obj +from app.methods.person_methods import load_person_obj, update_person_obj from app.methods.post_methods import get_post_rec_list, load_post_obj from app.models.user_models import User_Base, User_New_Base, User_Out_Base @@ -80,14 +81,20 @@ def load_user_obj( model_as_dict: bool = False, enabled: str = 'enabled', # enabled, disabled, all inc_address: bool = False, + # inc_archive_list: bool = False, inc_contact: bool = False, inc_event_list: bool = False, + # inc_hosted_file_list: bool = False, inc_journal_list: bool = False, - inc_membership: bool = False, + inc_journal_entry_list: bool = False, + inc_membership_member: bool = False, + inc_order_cfg: bool = False, + inc_order_line_list: bool = False, inc_order_list: bool = False, inc_order_cart_list: bool = False, inc_organization: bool = False, inc_person: bool = False, + # inc_person_list: bool = False, inc_post_list: bool = False, inc_post_comment_list: bool = False, inc_user_role_list: bool = False, @@ -112,20 +119,20 @@ def load_user_obj( return False # Updated 2021-06-18 - if inc_contact: - contact_id = user_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, - ): - user_obj.contact = contact_result - else: user_obj.contact = None + # if inc_contact: + # contact_id = user_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, + # ): + # user_obj.contact = contact_result + # else: user_obj.contact = None if inc_event_list: from app.methods.event_methods import load_event_obj_list @@ -138,6 +145,33 @@ def load_user_obj( user_obj.event_list = event_dict_list else: user_obj.event_list = [] + # Updated 2021-06-18 + if inc_order_list: + if order_rec_list_result := get_order_rec_list( + for_obj_type = 'user', + for_obj_id = user_id, + limit = limit, + enabled = enabled, + ): + order_result_list = [] + for order_rec in order_rec_list_result: + order_result_list.append( + load_order_obj( + order_id = order_rec.get('order_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + inc_order_cfg = inc_order_cfg, + inc_order_line_list = inc_order_line_list, + inc_person = inc_person, + # inc_user = inc_user, + ) + ) + user_obj.order_list = order_result_list + else: user_obj.order_list = [] + # Updated 2021-06-18 if inc_organization: organization_id = user_rec.get('organization_id', None) @@ -166,8 +200,7 @@ def load_user_obj( model_as_dict = model_as_dict, inc_address = inc_address, inc_contact = inc_contact, - # inc_organization = inc_organization, - # inc_user = inc_user, + inc_organization = inc_organization, ): user_obj.person = person_result else: user_obj.person = None diff --git a/app/models/contact_models.py b/app/models/contact_models.py index b20bfa3..ac680f8 100644 --- a/app/models/contact_models.py +++ b/app/models/contact_models.py @@ -26,6 +26,7 @@ class Contact_Base(BaseModel): ) account_id_random: Optional[str] account_id: Optional[int] + address_id_random: Optional[str] address_id: Optional[int] diff --git a/app/models/membership_member_models.py b/app/models/membership_member_models.py index 163fc6d..7c999c8 100644 --- a/app/models/membership_member_models.py +++ b/app/models/membership_member_models.py @@ -30,12 +30,16 @@ class Membership_Member_Base(BaseModel): account_id_random: Optional[str] account_id: Optional[int] + membership_type_id_random: Optional[str] membership_type_id: Optional[int] # NOTE: This is not optional + person_id_random: Optional[str] person_id: Optional[int] + product_id_random: Optional[str] product_id: Optional[int] # The product they purchased to get this membership + user_id_random: Optional[str] user_id: Optional[int] diff --git a/app/models/order_cfg_models.py b/app/models/order_cfg_models.py new file mode 100644 index 0000000..e6f1adf --- /dev/null +++ b/app/models/order_cfg_models.py @@ -0,0 +1,31 @@ +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 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 + + +class Order_Cfg_Base(BaseModel): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + account_id_random: Optional[str] + account_id: Optional[int] + + _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) + + @validator('account_id', always=True) + def account_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['account_id_random']: + return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account') + return None + +Order_Cfg_Base.update_forward_refs() diff --git a/app/models/person_models.py b/app/models/person_models.py index d9405f7..423a2ad 100644 --- a/app/models/person_models.py +++ b/app/models/person_models.py @@ -10,8 +10,9 @@ from app.lib_general import log, logging from app.models.common_field_schema import base_fields, default_num_bytes # from app.models.account_models import Account_Base from app.models.contact_models import Contact_Base +# from app.models.membership_member_models import Membership_Member_Base from app.models.organization_models import Organization_Base -from app.models.user_models import User_Base +# from app.models.user_models import User_Base class Person_Base(BaseModel): @@ -33,13 +34,16 @@ class Person_Base(BaseModel): ) account_id_random: Optional[str] account_id: Optional[int] - user_id_random: Optional[str] - user_id: Optional[int] - organization_id_random: Optional[str] - organization_id: Optional[int] + contact_id_random: Optional[str] contact_id: Optional[int] + organization_id_random: Optional[str] + organization_id: Optional[int] + + user_id_random: Optional[str] + user_id: Optional[int] + given_name: Optional[str] family_name: Optional[str] middle_name: Optional[str] @@ -59,9 +63,18 @@ class Person_Base(BaseModel): updated_on: Optional[datetime.datetime] = None # Including other related objects + # archive_list: Optional[list] # Archive_Base() + event_list: Optional[list] # Event_Base() # Priority l1 + hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2 + journal_list: Optional[list] # Journal_Base() # Priority l3 contact: Optional[Union[Contact_Base, None]] + # membership_member: Optional[Membership_Member_Base] # Priority l2 + # membership_member_list: Optional[list] # Membership_Base() ???? + order_list: Optional[list] # Order_Base() # Priority l2 + order_cart_list: Optional[list] # Order_Base() # Priority l2 organization: Optional[Union[Organization_Base, None]] - user: Optional[Union[User_Base, None]] + post_list: Optional[list] # Post_Base() # Priority l1 + # user: Optional[Union[User_Base, None]] _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) @@ -93,13 +106,14 @@ class Person_Base(BaseModel): return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account') return None - @validator('user_id', always=True) - def user_id_lookup(cls, v, values, **kwargs): + + @validator('contact_id', always=True) + def contact_id_lookup(cls, v, values, **kwargs): log.setLevel(logging.WARNING) log.debug(locals()) - if values['user_id_random']: - return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user') + if values['contact_id_random']: + return redis_lookup_id_random(record_id_random=values['contact_id_random'], table_name='contact') return None @validator('organization_id', always=True) @@ -111,13 +125,13 @@ class Person_Base(BaseModel): return redis_lookup_id_random(record_id_random=values['organization_id_random'], table_name='organization') return None - @validator('contact_id', always=True) - def contact_id_lookup(cls, v, values, **kwargs): + @validator('user_id', always=True) + def user_id_lookup(cls, v, values, **kwargs): log.setLevel(logging.WARNING) log.debug(locals()) - if values['contact_id_random']: - return redis_lookup_id_random(record_id_random=values['contact_id_random'], table_name='contact') + if values['user_id_random']: + return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user') return None class Config: diff --git a/app/models/response_models.py b/app/models/response_models.py index 71b4017..182dcb7 100644 --- a/app/models/response_models.py +++ b/app/models/response_models.py @@ -41,7 +41,7 @@ def mk_resp( exclude_unset: bool = True, response = None ): - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if data is None: data_out = { 'result': data } diff --git a/app/models/user_models.py b/app/models/user_models.py index af8e0ca..17473a0 100644 --- a/app/models/user_models.py +++ b/app/models/user_models.py @@ -8,11 +8,11 @@ from app.db_sql import redis_lookup_id_random from app.lib_general import log, logging, secure_hash_string from app.models.common_field_schema import base_fields, default_num_bytes -from app.models.contact_models import Contact_Base -# from app.models.membership_models import Membership_Base +# from app.models.contact_models import Contact_Base +# from app.models.membership_member_models import Membership_Member_Base from app.models.organization_models import Organization_Base -# from app.models.person_models import Person_Base # Causes circular import -from app.models.user_role_models import User_Role_Base +from app.models.person_models import Person_Base # Causes circular import +# from app.models.user_role_models import User_Role_Base # ### BEGIN ### API User Models ### User_New_Base() ### @@ -142,10 +142,13 @@ class User_Out_Base(BaseModel): ) account_id_random: Optional[str] #account_id: Optional[int] + contact_id_random: Optional[str] #contact_id: Optional[int] + organization_id_random: Optional[str] #organization_id: Optional[int] + person_id_random: Optional[str] #person_id: Optional[int] @@ -182,20 +185,20 @@ class User_Out_Base(BaseModel): # Including other related objects # from app.models.person_models import Person_Base # Causes circular import - - archive_list: Optional[list] # Archive_Base() - contact: Optional[Contact_Base] - event_list: Optional[list] # Event_Base() # Priority l1 - hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2 + # archive_list: Optional[list] # Archive_Base() + # contact: Optional[Contact_Base] + event_list: Optional[list] # Event_Base() # Priority complete + hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l3 journal_list: Optional[list] # Journal_Base() # Priority l3 - # membership: Optional[Membership_Base] # Priority l2 + # membership_member: Optional[Membership_Member_Base] # Priority l2 + # membership_member_list: Optional[list] # Membership_Base() ??? order_list: Optional[list] # Order_Base() # Priority l2 order_cart_list: Optional[list] # Order_Base() # Priority l2 - organization: Optional[Organization_Base] # Organization_Base() # Priority l3 - person: Optional[dict] # Person_Base() # Priority l2 + organization: Optional[Union[Organization_Base, None]] # Organization_Base() # Priority l3 + # person: Optional[dict] # Person_Base() # Priority l2 + person: Optional[Union[Person_Base, None]] post_list: Optional[list] # Post_Base() # Priority l1 user_role_list: Optional[list] # User_Role_Base() - role_list: Optional[list] = [] # User_Role_Base() # NOTE <- This is a duplicate of above! _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) @@ -223,10 +226,13 @@ class User_Base(BaseModel): ) account_id_random: Optional[str] account_id: Optional[int] - contact_id_random: Optional[str] - contact_id: Optional[int] + + # contact_id_random: Optional[str] + # contact_id: Optional[int] + organization_id_random: Optional[str] organization_id: Optional[int] + person_id_random: Optional[str] person_id: Optional[int] @@ -263,19 +269,22 @@ class User_Base(BaseModel): updated_on: Optional[datetime.datetime] = None # Including other related objects - archive_list: Optional[list] # Archive_Base() - contact: Optional[Contact_Base] + # from app.models.person_models import Person_Base # Causes circular import + # archive_list: Optional[list] # Archive_Base() + # contact: Optional[Contact_Base] event_list: Optional[list] # Event_Base() # Priority l1 hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2 journal_list: Optional[list] # Journal_Base() # Priority l3 - # membership: Optional[Membership_Base] # Priority l2 + # membership_member: Optional[Membership_Member_Base] # Priority l2 + # membership_member_list: Optional[list] # Membership_Base() ??? order_list: Optional[list] # Order_Base() # Priority l2 order_cart_list: Optional[list] # Order_Base() # Priority l2 - organization: Optional[Organization_Base] # Organization_Base() # Priority l3 - person: Optional[dict] # Person_Base() # Priority l2 + organization: Optional[Union[Organization_Base, None]] # Organization_Base() # Priority l3 + # person: Optional[dict] # Person_Base() # Priority l2 + person: Optional[Union[Person_Base, None]] post_list: Optional[list] # Post_Base() # Priority l1 user_role_list: Optional[list] # User_Role_Base() - role_list: Optional[list] = [] # User_Role_Base() # NOTE <- This is a duplicate of above! + # role_list: Optional[list] = [] # User_Role_Base() # NOTE <- This is a duplicate of above! _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) @@ -307,14 +316,14 @@ class User_Base(BaseModel): return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account') return None - @validator('contact_id', always=True) - def contact_id_lookup(cls, v, values, **kwargs): - log.setLevel(logging.WARNING) - log.debug(locals()) + # @validator('contact_id', always=True) + # def contact_id_lookup(cls, v, values, **kwargs): + # log.setLevel(logging.WARNING) + # log.debug(locals()) - if values['contact_id_random']: - return redis_lookup_id_random(record_id_random=values['contact_id_random'], table_name='contact') - return None + # if values['contact_id_random']: + # return redis_lookup_id_random(record_id_random=values['contact_id_random'], table_name='contact') + # return None @validator('organization_id', always=True) def organization_id_lookup(cls, v, values, **kwargs): diff --git a/app/routers/membership_type.py b/app/routers/membership_type.py index 1fc06cb..86c3975 100644 --- a/app/routers/membership_type.py +++ b/app/routers/membership_type.py @@ -181,8 +181,8 @@ async def lookup_membership_type_obj( # ### BEGIN ### API Membership Type ### get_membership_type_obj() ### # Working well as of 2021-06-21. Using as a template for other routes. -@router.get('/{membership_type_id}', response_model=Resp_Body_Base) -async def get_membership_type_obj( +@router.get('/{membership_type_id}/v5', response_model=Resp_Body_Base) +async def get_membership_type_obj_v5( membership_type_id: str = Query(..., min_length=1, max_length=22), enabled: str = 'enabled', # For now this covers any included objects or object lists limit: int = 500, # For now this covers any included objects or object lists diff --git a/app/routers/person.py b/app/routers/person.py index 89f49b7..2c3e4cd 100644 --- a/app/routers/person.py +++ b/app/routers/person.py @@ -129,27 +129,74 @@ async def get_person_obj_li( return result -@router.get('/{person_id}', response_model=Resp_Body_Base) -async def get_person_obj( + +# ### BEGIN ### API Person ### get_person_obj_v5() ### +# Working well as of 2021-06-11. Using as a template for other routes. +@router.get('/{person_id}/v5', response_model=Resp_Body_Base) +async def get_person_obj_v5( person_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 + inc_address: bool = False, # Priority l1 + # inc_archive_list: bool = False, # Priority l3 + inc_contact: bool = False, # Priority l1 + inc_event_list: bool = False, # Priority l1 + # inc_hosted_file_list: bool = False, # Priority l3 + inc_journal_list: bool = False, # Priority l2 + # inc_journal_entry_list: bool = False, # Priority l3 + inc_membership_member: bool = False, # Priority l2 + # inc_membership_list: bool = False, # ??? + inc_order_line_list: bool = False, # Priority l1 + inc_order_list: bool = False, # Priority l1 + inc_order_cart_list: bool = False, # Priority l1 + inc_organization: bool = False, # Priority l1 + # inc_organization_list: bool = False, + inc_post_list: bool = False, # Priority l2 + inc_post_comment_list: bool = False, # Priority l3 + inc_user: bool = False, # Priority l1 x_account_id: str = Header(...), - inc_address: bool = False, - inc_contact: bool = False, - inc_organization: bool = False, by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, ): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - person_obj = load_person_obj( - person_id=person_id, - inc_contact=inc_contact, - inc_address=inc_address, - inc_organization=inc_organization, - ).dict(by_alias=by_alias, exclude_unset=exclude_unset) - data = person_obj - return mk_resp(data=person_obj) + if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass + else: + return mk_resp(data=None, status_code=404) + + if person_dict := load_person_obj( + person_id = person_id, + limit = limit, + model_as_dict = True, # NOTE: returning model as a dict + enabled = enabled, + inc_address = inc_address, + # inc_archive_list = inc_archive_list, + inc_contact = inc_contact, + inc_event_list = inc_event_list, + # inc_hosted_file_list = inc_hosted_file_list, + inc_journal_list = inc_journal_list, + # inc_journal_entry_list = inc_journal_entry_list, + inc_membership_member = inc_membership_member, + # inc_membership_list = inc_membership_list, # ??? + inc_order_line_list = inc_order_line_list, + inc_order_list = inc_order_list, + inc_order_cart_list = inc_order_cart_list, + inc_organization = inc_organization, + # inc_organization_list = inc_organization_list, + inc_post_list = inc_post_list, + inc_post_comment_list = inc_post_comment_list, + inc_user = inc_user, + ): + if isinstance(person_dict, dict): + response_data = person_dict + else: + response_data = person_dict + else: + return mk_resp(data=False, status_code=400) # Bad Request + + return mk_resp(data=response_data) +# ### END ### API Person ### get_person_obj_v5() ### @router.delete('/{obj_id}', response_model=Resp_Body_Base) diff --git a/app/routers/user.py b/app/routers/user.py index 729b2d4..93e2df2 100644 --- a/app/routers/user.py +++ b/app/routers/user.py @@ -559,10 +559,10 @@ async def lookup_username( -# ### BEGIN ### API User ### get_user_obj_new() ### +# ### BEGIN ### API User ### get_user_obj_v5() ### # Working well as of 2021-06-11. Using as a template for other routes. -@router.get('/{user_id}/json', response_model=Resp_Body_Base) -async def get_user_obj_new( +@router.get('/{user_id}/v5', response_model=Resp_Body_Base) +async def get_user_obj_v5( user_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 @@ -573,8 +573,9 @@ async def get_user_obj_new( # inc_hosted_file_list: bool = False, # Priority l3 inc_journal_list: bool = False, # Priority l2 # inc_journal_entry_list: bool = False, # Priority l3 - inc_membership: bool = False, # Priority l2 + inc_membership_member: bool = False, # Priority l2 # inc_membership_list: bool = False, # ??? + inc_order_line_list: bool = False, # Priority l1 inc_order_list: bool = False, # Priority l1 inc_order_cart_list: bool = False, # Priority l1 inc_organization: bool = False, # Priority l1 @@ -582,7 +583,7 @@ async def get_user_obj_new( inc_person: bool = False, # Priority l1 # inc_person_list: bool = False, inc_post_list: bool = False, # Priority l2 - # inc_post_comment_list: bool = False, # Priority l3 + inc_post_comment_list: bool = False, # Priority l3 inc_user_role_list: bool = False, # Priority l1 x_account_id: str = Header(...), by_alias: Optional[bool] = True, @@ -607,8 +608,9 @@ async def get_user_obj_new( # inc_hosted_file_list = inc_hosted_file_list, inc_journal_list = inc_journal_list, # inc_journal_entry_list = inc_journal_entry_list, - inc_membership = inc_membership, + inc_membership_member = inc_membership_member, # inc_membership_list = inc_membership_list, # ??? + inc_order_line_list = inc_order_line_list, inc_order_list = inc_order_list, inc_order_cart_list = inc_order_cart_list, inc_organization = inc_organization, @@ -627,8 +629,7 @@ async def get_user_obj_new( return mk_resp(data=False, status_code=400) # Bad Request return mk_resp(data=response_data) -# ### END ### API User ### get_user_obj_new() ### - +# ### END ### API User ### get_user_obj_v5() ### @router.get('/{user_id}', response_model=Resp_Body_Base)