Files
OSIT-AE-API-FastAPI/app/routers/event_person.py
2021-05-28 03:23:52 -04:00

161 lines
6.2 KiB
Python

import datetime
#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 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 ..methods.event_person_methods import create_event_person_obj, load_event_person_obj
from ..methods.person_methods import create_person_obj, load_person_obj
from ..methods.user_methods import create_user_obj, load_user_obj
from ..models.event_person_models import Event_Person_New_Base, Event_Person_Base
from ..models.person_models import Person_Base
from ..models.response_models import *
from ..models.user_models import User_New_Base, User_Base
router = APIRouter()
@router.post('/new', response_model=Resp_Body_Base)
async def post_event_person_new(
event_person_new_init: Event_Person_New_Base,
x_account_id: str = Header(...),
return_obj: bool = True,
inc_event: bool = False, # Not ready yet. Placeholder.
inc_event_badge: bool = False, # Not ready yet. Placeholder.
inc_event_person_detail: bool = False, # Not ready yet. Placeholder.
inc_event_registration: bool = False, # Not ready yet. Placeholder.
inc_person: bool = False,
inc_user: bool = False,
by_alias: bool = True,
exclude_unset: bool = True,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
account_id_random = event_person_new_init.account_id_random
event_id_random = event_person_new_init.event_id_random
given_name = event_person_new_init.person_given_name
family_name = event_person_new_init.person_family_name
if full_name := event_person_new_init.person_full_name:
pass
elif given_name and family_name:
full_name = f'{given_name} {family_name}'
elif given_name:
full_name = f'{given_name}'
email = event_person_new_init.email
if new_password := event_person_new_init.new_password:
pass
else:
new_password = secrets.token_urlsafe(default_num_bytes)
organization_name = event_person_new_init.organization_name
# New person
person_new = {}
person_new['account_id_random'] = account_id_random
person_new['given_name'] = given_name
person_new['family_name'] = family_name
person_new['full_name'] = full_name
person_new['organization_name'] = organization_name
# New person contact
person_new['contact'] = {}
person_new['contact']['account_id_random'] = account_id_random
person_new['contact']['email'] = email
person_new['contact']['name'] = full_name
# New person contact address
person_new['contact']['address'] = {}
person_new['contact']['address']['account_id_random'] = account_id_random
person_new['contact']['address']['name'] = full_name
person_obj_new = Person_Base(**person_new)
log.debug(person_obj_new)
create_person_obj_result = create_person_obj(person_obj_new=person_obj_new)
if isinstance(create_person_obj_result, int):
person_id = create_person_obj_result
person_obj = load_person_obj(person_id=person_id, inc_contact=True, inc_address=True, inc_organization=True)
log.debug(person_obj)
else:
log.debug('A new person was not created')
return mk_resp(data=False)
#return mk_resp(data=person_obj)
# New user
user_new = {}
user_new['account_id_random'] = account_id_random
user_new['name'] = full_name
user_new['username'] = email
user_new['email'] = email
user_new['new_password'] = new_password
user_new['contact_id_random'] = person_obj.contact.id_random
user_new['person_id_random'] = person_obj.id_random
user_obj_new = User_New_Base(**user_new)
log.debug(user_obj_new)
create_user_obj_result = create_user_obj(user_obj_new=user_obj_new)
if isinstance(create_user_obj_result, bool):
log.debug('Returning False since multiple users were found with the same username.')
return mk_resp(data=False)
elif isinstance(create_user_obj_result, int):
user_id = create_user_obj_result
user_obj = load_user_obj(user_id=user_id) # Not including roles, contact, or organization
log.debug(user_obj)
else:
log.debug('A new user was not created')
return mk_resp(data=False)
#return mk_resp(data=user_obj)
# New event person
event_person_new = {}
event_person_new['account_id_random'] = account_id_random
event_person_new['event_id_random'] = event_id_random
event_person_new['person_id_random'] = person_obj.id_random
event_person_new['user_id_random'] = user_obj.id_random
event_person_obj_new = Event_Person_Base(**event_person_new)
log.debug(event_person_obj_new)
event_person_obj_result = create_event_person_obj(event_person_obj_new=event_person_obj_new)
if isinstance(event_person_obj_result, bool):
log.debug('Returning False something is not right.')
return mk_resp(data=False)
elif isinstance(event_person_obj_result, int):
event_person_id = event_person_obj_result
event_person_obj = load_event_person_obj(
event_person_id=event_person_id,
inc_event=inc_event, # Not ready yet. Placeholder.
inc_event_badge=inc_event_badge, # Not ready yet. Placeholder.
inc_event_person_detail=inc_event_person_detail, # Not ready yet. Placeholder.
inc_event_registration=inc_event_registration, # Not ready yet. Placeholder.
inc_person=False, # Already loaded above
inc_user=False # Already loaded above
)
log.debug(event_person_id)
log.debug(event_person_obj)
event_person_obj.person = person_obj
event_person_obj.user = user_obj
log.debug(event_person_obj)
else:
log.debug('A new event_person was not created')
return mk_resp(data=False)
log.debug(event_person_obj)
return mk_resp(data=event_person_obj)