import datetime from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status from pydantic import BaseModel, EmailStr, Field from typing import Dict, List, Optional, Set, Union from app.lib_general import log, logging from app.config import settings from app.db_sql import redis_lookup_id_random 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.membership_person_profile_methods import load_membership_person_profile_obj from app.models.membership_person_profile_models import Membership_Person_Profile_Base, Membership_Person_Profile_Base_Up from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() @router.post('/membership/person/profile', response_model=Resp_Body_Base) async def post_membership_person_profile_obj( obj: Membership_Person_Profile_Base, x_account_id: 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 = 'membership_person_profile' obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) result = post_obj_template( obj_type=obj_type, data=obj_data_dict, return_obj=True, by_alias=True, exclude_unset=True, ) return result @router.patch('/membership/person/profile/{obj_id}', response_model=Resp_Body_Base) async def patch_membership_person_profile_obj( obj_id: str = Path(min_length=11, max_length=22), obj: Membership_Person_Profile_Base_Up = 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.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) obj_type = 'membership_person_profile' 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 Membership Profile ### get_membership_person_obj_profile() ### # Updated 2021-07-13 @router.get('/membership/person/{membership_person_id}/profile', response_model=Resp_Body_Base) async def get_membership_person_obj_profile( membership_person_id: str = Path(min_length=11, max_length=22), inc_membership_cfg: 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 membership_person_id := redis_lookup_id_random(record_id_random=membership_person_id, table_name='membership_person'): pass else: return mk_resp(data=None, status_code=404) if membership_person_profile_result := load_membership_person_profile_obj( membership_person_id = membership_person_id, inc_membership_cfg = inc_membership_cfg, by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = True, ): response_data = membership_person_profile_result else: return mk_resp(data=False, status_code=400, response=response) # Bad Request return mk_resp(data=response_data) # ### END ### API Membership Profile ### get_membership_person_obj_profile() ###