70 lines
3.0 KiB
Python
70 lines
3.0 KiB
Python
import datetime, pytz, time
|
|
#from datetime import datetime, time, timedelta
|
|
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 ..lib_general import *
|
|
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 ..models.common_field_schema import default_num_bytes
|
|
from ..models.user_model import User_Base, User_New_Base, User_Out_Base
|
|
from ..models.user_methods import load_user_obj
|
|
from ..models.person_model import Person_Base
|
|
from ..models.person_methods import load_person_obj
|
|
from ..models.response_model import *
|
|
|
|
|
|
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,
|
|
):
|
|
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) # 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)
|