diff --git a/app/models/account_methods.py b/app/models/account_methods.py new file mode 100644 index 0000000..1dc0b0b --- /dev/null +++ b/app/models/account_methods.py @@ -0,0 +1,34 @@ +from __future__ import annotations +import datetime + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator + +from ..lib_general import * +from ..db_sql import sql_select + +from .membership_model import Membership_Cfg_Base + + +# ### BEGIN ### API Account Methods ### load_account_cfg_obj() ### +def load_account_cfg_obj(account_id:int|str, inc_event_cfg:bool=False, inc_fundraising_cfg:bool=False, inc_membership_cfg:bool=False): + 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 inc_membership_cfg: + if membership_cfg_rec := sql_select(table_name='v_membership_cfg', field_name='account_id', field_value=account_id): + #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(membership_cfg_rec) + + #account_rec['membership_cfg'] = membership_cfg_rec + try: + membership_cfg_obj = Membership_Cfg_Base(**membership_cfg_rec) + log.debug(membership_cfg_obj) + except ValidationError as e: + log.error(e.json()) + + return membership_cfg_obj +# ### END ### API Account Methods ### load_account_cfg_obj() ### diff --git a/app/models/membership_model.py b/app/models/membership_model.py index 2d8769d..254830b 100644 --- a/app/models/membership_model.py +++ b/app/models/membership_model.py @@ -32,6 +32,8 @@ class Membership_Cfg_Base(BaseModel): calendar_year_end_buffer_on: Optional[datetime.datetime] = None enable_privacy_view: Optional[bool] = False + renew_warning_hours: Optional[int] + accept_message: Optional[str] reject_message: Optional[str] renew_message: Optional[str] diff --git a/app/routers/account.py b/app/routers/account.py index d10ec51..a1cd4af 100644 --- a/app/routers/account.py +++ b/app/routers/account.py @@ -12,6 +12,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 ..models.account_model import Account_Base +from ..models.account_methods import load_account_cfg_obj from ..models.response_model import * @@ -126,23 +127,30 @@ async def delete_account_obj( return result -@router.get('/{obj_id}/cfg', response_model=Resp_Body_Base) +@router.get('/{account_id}/cfg', response_model=Resp_Body_Base) async def get_account_cfg_obj( - obj_id: str = Query(..., min_length=1, max_length=22), + account_id: str = Query(..., min_length=1, max_length=22), + sys_module: Optional[str] = None, # event, fundraising, membership x_account_id: str = Header(...), 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()) - obj_type = 'account_cfg' - result = get_obj_template( - obj_type=obj_type, - obj_id=obj_id, - by_alias=True, - exclude_unset=True, - ) - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(result) - return result + if sys_module: + if sys_module == 'membership': + membership_cfg_obj = load_account_cfg_obj(account_id=account_id, inc_membership_cfg=True).dict(by_alias=by_alias, exclude_unset=exclude_unset) + data = membership_cfg_obj + return mk_resp(data=data) + else: + obj_type = 'account_cfg' + result = get_obj_template( + obj_type=obj_type, + obj_id=account_id, + by_alias=True, + exclude_unset=True, + ) + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(result) + return result