Working on user and person search by email
This commit is contained in:
@@ -18,7 +18,7 @@ from .lib_general import *
|
||||
from .log import *
|
||||
|
||||
# Import the routers here first:
|
||||
from .routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_registration, event_session, flask_cfg, membership, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, websockets # , items, journals
|
||||
from .routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_registration, event_session, flask_cfg, membership, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets # , items, journals
|
||||
|
||||
from .db_sql import db
|
||||
|
||||
@@ -238,6 +238,11 @@ app.include_router(
|
||||
#dependencies=[Depends(get_account_header)],
|
||||
#responses={404: {'description': 'Not found'}},
|
||||
)
|
||||
app.include_router(
|
||||
user_person.router,
|
||||
prefix='/user_person',
|
||||
tags=['User Person'],
|
||||
)
|
||||
app.include_router(
|
||||
websockets.router,
|
||||
#prefix='/websocket',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import datetime
|
||||
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
|
||||
|
||||
69
app/routers/user_person.py
Normal file
69
app/routers/user_person.py
Normal file
@@ -0,0 +1,69 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user