Working on membership, person, and user

This commit is contained in:
Scott Idem
2021-06-25 18:49:08 -04:00
parent ca43cc4dce
commit f55d9c2c62
10 changed files with 768 additions and 333 deletions

View File

@@ -1,20 +1,18 @@
import datetime
#from datetime import datetime, time, timedelta
import datetime, pytz, time
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
#from ..log import *
from app.config import settings
from app.db_sql import *
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
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.organization_methods import load_organization_obj
from app.methods.organization_methods import create_update_organization_obj, load_organization_obj
from app.models.organization_models import Organization_Base
from app.models.response_models import *
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
@@ -70,6 +68,83 @@ async def patch_organization_obj(
return result
# ### BEGIN ### API Organization ### post_organization_json() ###
# Updated 2021-06-25
@router.post('/json', response_model=Resp_Body_Base)
async def post_organization_json(
organization_obj: Organization_Base,
# organization_id: str = Query(..., min_length=1, max_length=22),
# create_missing_obj: bool = False,
process_contact: bool = False,
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# if organization_id := redis_lookup_id_random(record_id_random=organization_id, table_name='organization'): pass
# else: return mk_resp(data=None, status_code=404)
if organization_obj_in_result := create_update_organization_obj(
organization_id = None,
organization_obj = organization_obj,
process_contact = process_contact,
):
log.debug(organization_obj_in_result)
if return_obj:
organization_obj = load_organization_obj(organization_id=organization_obj_in_result)
organization_dict = organization_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
return mk_resp(data=organization_dict)
else:
return mk_resp(data=organization_obj_in_result)
else:
return mk_resp(data=False, status_code=400) # Bad Request
# ### END ### API Organization ### post_organization_json() ###
# ### BEGIN ### API Organization ### patch_organization_json() ###
# Updated 2021-06-25
@router.patch('/{organization_id}/json', response_model=Resp_Body_Base)
async def patch_organization_json(
organization_obj: Organization_Base,
organization_id: str = Query(..., min_length=1, max_length=22),
process_contact: bool = False,
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if organization_id := redis_lookup_id_random(record_id_random=organization_id, table_name='organization'): pass
else: return mk_resp(data=None, status_code=404)
if organization_obj_up_result := create_update_organization_obj(
organization_id = organization_id,
organization_obj = organization_obj,
process_contact = process_contact,
):
log.debug(organization_obj_up_result)
if return_obj:
organization_obj = load_organization_obj(organization_id=organization_id)
organization_dict = organization_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
return mk_resp(data=organization_dict)
else:
return mk_resp(data=organization_obj_up_result)
else:
return mk_resp(data=False, status_code=400) # Bad Request
# ### END ### API Organization ### patch_organization_json() ###
@router.get('/list', response_model=Resp_Body_Base)
async def get_organization_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50),

View File

@@ -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.person_methods import load_person_obj, update_person_obj
from app.methods.person_methods import create_update_person_obj, load_person_obj, update_person_obj
from app.models.person_models import Person_Base
from app.models.response_models import Resp_Body_Base, mk_resp
@@ -68,12 +68,15 @@ async def patch_person_obj(
return result
# ### BEGIN ### API Person ### patch_person_json() ###
@router.patch('/{person_id}/json', response_model=Resp_Body_Base)
async def patch_person_json(
# ### BEGIN ### API Person ### post_person_json() ###
# Updated 2021-06-25
@router.post('/json', response_model=Resp_Body_Base)
async def post_person_json(
person_obj: Person_Base,
person_id: str = Query(..., min_length=1, max_length=22),
create_missing_obj: bool = False,
# person_id: str = Query(..., min_length=1, max_length=22),
# create_missing_obj: bool = False,
process_contact: bool = False,
process_organization: bool = False,
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
@@ -82,19 +85,58 @@ async def patch_person_json(
exclude_unset: Optional[bool] = True,
exclude_none: 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())
# 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_obj_in_result := create_update_person_obj(
person_id = None,
person_obj = person_obj,
process_contact = process_contact,
process_organization = process_organization,
):
log.debug(person_obj_in_result)
if return_obj:
person_obj = load_person_obj(person_id=person_obj_in_result)
person_dict = person_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
return mk_resp(data=person_dict)
else:
return mk_resp(data=person_obj_in_result)
else:
return mk_resp(data=False, status_code=400) # Bad Request
# ### END ### API Person ### post_person_json() ###
# ### BEGIN ### API Person ### patch_person_json() ###
# Updated 2021-06-25
@router.patch('/{person_id}/json', response_model=Resp_Body_Base)
async def patch_person_json(
person_obj: Person_Base,
person_id: str = Query(..., min_length=1, max_length=22),
process_contact: bool = False,
process_organization: bool = False,
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
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_obj_up_result := update_person_obj(
person_id=person_id,
person_obj_up=person_obj,
create_missing_obj=create_missing_obj,
):
else: return mk_resp(data=None, status_code=404)
if person_obj_up_result := create_update_person_obj(
person_id = person_id,
person_obj = person_obj,
process_contact = process_contact,
process_organization = process_organization,
):
log.debug(person_obj_up_result)
if return_obj:
person_obj = load_person_obj(person_id=person_id)
@@ -107,6 +149,7 @@ async def patch_person_json(
# ### END ### API Person ### patch_person_json() ###
@router.get('/list', response_model=Resp_Body_Base)
async def get_person_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50),
@@ -129,11 +172,10 @@ async def get_person_obj_li(
return result
# ### 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(
# ### BEGIN ### API Person ### get_person_obj() ###
# Working well as of 2021-06-25. Using as a template for other routes.
@router.get('/{person_id}', response_model=Resp_Body_Base)
async def get_person_obj(
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
@@ -196,7 +238,7 @@ async def get_person_obj_v5(
return mk_resp(data=False, status_code=400) # Bad Request
return mk_resp(data=response_data)
# ### END ### API Person ### get_person_obj_v5() ###
# ### END ### API Person ### get_person_obj() ###
@router.delete('/{obj_id}', response_model=Resp_Body_Base)

View File

@@ -559,7 +559,7 @@ async def lookup_username(
# ### BEGIN ### API User ### get_user_obj() ###
# Working well as of 2021-06-11. Using as a template for other routes.
# Working well as of 2021-06-25. Using as a template for other routes.
@router.get('/{user_id}', response_model=Resp_Body_Base)
async def get_user_obj(
user_id: str = Query(..., min_length=1, max_length=22),