Files
OSIT-AE-API-FastAPI/app/routers/user_person.py
2021-08-10 18:30:37 -04:00

72 lines
3.1 KiB
Python

import datetime, pytz, time
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, 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 ..log import *
from app.config import settings
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 app.methods.person_methods import load_person_obj
from app.methods.user_methods import load_user_obj
from app.models.common_field_schema import default_num_bytes
from app.models.person_models import Person_Base
from app.models.response_models import *
from app.models.user_models import User_Base, User_New_Base, User_Out_Base
router = APIRouter()
# Look up a user and person with an email address for a client account
@router.get('/lookup_email', response_model=Resp_Body_Base)
async def lookup_email(
account_id: Union[int,str],
email: str = Query(..., min_length=2, max_length=50),
x_account_id: str = Header(...),
inc_roles: bool = False,
inc_contact: bool = False,
inc_organization: bool = False,
inc_person: bool = False,
inc_user: bool = False,
by_alias: bool = True,
exclude_unset: bool = True,
response: Response = Response,
):
log.setLevel(logging.DEBUG) # 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=False, status_code=404, response=response) # Not Found
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
data = {}
data['account_id'] = account_id
data['email'] = email
log.debug(data)
sql = f"""
SELECT DISTINCT account_id_random, user_id_random, person_id_random, contact_id_random, contact_address_id_random, user_username, user_name, user_email, person_given_name, person_family_name, person_full_name, contact_email
FROM
(SELECT account_id_random, user_id_random, person_id_random, contact_id_random, contact_address_id_random, user_username, user_name, user_email, person_given_name, person_family_name, person_full_name, contact_email
FROM v_link_user_person
WHERE v_link_user_person.account_id = :account_id AND v_link_user_person.user_email = :email
UNION
SELECT account_id_random, user_id_random, person_id_random, contact_id_random, contact_address_id_random, user_username, user_name, user_email, person_given_name, person_family_name, person_full_name, contact_email
FROM v_link_person_user
WHERE v_link_person_user.account_id = :account_id AND v_link_person_user.contact_email = :email) AS user_person_union
"""
log.debug(sql)
user_person_obj_li_result = sql_select(data=data, sql=sql, as_list=True)
data = user_person_obj_li_result
return mk_resp(data=data)