Work on event person tracking for exhibitors

This commit is contained in:
Scott Idem
2022-02-14 17:27:26 -05:00
parent 13fe6adbb2
commit 57b3b358ad
5 changed files with 191 additions and 3 deletions

View File

@@ -18,7 +18,7 @@ from . import config
from app.log import log, logging
# Import the routers here first:
from app.routers import api_crud, api, importing, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, event, event_badge, event_badge_template, event_exhibit, event_file, event_importing, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_person_group, membership_person, membership_person_profile, membership_type, membership_person_type, order, order_v3, order_line, order_cart, organization, page, person, person_user, post, post_comment, product, site, site_domain, user, websockets, e_cvent, c_idaa #, e_impexium
from app.routers import api_crud, api, importing, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, event, event_badge, event_badge_template, event_exhibit, event_exhibit_tracking, event_file, event_importing, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_person_group, membership_person, membership_person_profile, membership_type, membership_person_type, order, order_v3, order_line, order_cart, organization, page, person, person_user, post, post_comment, product, site, site_domain, user, websockets, e_cvent, c_idaa #, e_impexium
from app.db_sql import db

View File

@@ -32,6 +32,7 @@ base_fields['contact_id_random'] = xxx_id_random_field_schema
base_fields['cont_edu_cert_id_random'] = xxx_id_random_field_schema
base_fields['cont_edu_cert_person_id_random'] = xxx_id_random_field_schema
base_fields['event_exhibit_id_random'] = xxx_id_random_field_schema
base_fields['event_exhibit_tracking_id_random'] = xxx_id_random_field_schema
base_fields['event_file_id_random'] = xxx_id_random_field_schema
base_fields['event_id_random'] = xxx_id_random_field_schema
base_fields['event_abstract_id_random'] = xxx_id_random_field_schema

View File

@@ -23,6 +23,7 @@ from app.models.event_models import *
from app.models.event_abstract_models import *
from app.models.event_badge_models import *
from app.models.event_exhibit_models import *
from app.models.event_exhibit_tracking_models import *
from app.models.event_file_models import *
from app.models.event_location_models import *
from app.models.event_person_models import *
@@ -80,6 +81,7 @@ obj_type_li['event_badge'] = {'table_name': 'event_badge', 'base_name': Event_Ba
#obj_type_li['event_badge_template'] = {'table_name': 'event_badge_template', 'base_name': Event_Badge_Template_Base}
#obj_type_li['event_device'] = {'table_name': 'event_device', 'base_name': Event_Device_Base}
obj_type_li['event_exhibit'] = {'table_name': 'v_event_exhibit', 'base_name': Event_Exhibit_Base} # NOTE check view name: *_detail?
obj_type_li['event_exhibit_tracking'] = {'table_name': 'v_event_exhibit_tracking', 'base_name': Event_Exhibit_Tracking_Base}
obj_type_li['event_file'] = {'table_name': 'v_event_file', 'base_name': Event_File_Base} # Should this eventually be changed to event_hosted_file
obj_type_li['event_location'] = {'table_name': 'v_event_location', 'base_name': Event_Location_Base}
obj_type_li['event_person'] = {'table_name': 'v_event_person', 'base_name': Event_Person_Base}

View File

@@ -0,0 +1,186 @@
import datetime
#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, common_route_params, Common_Route_Params
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, get_id_random,redis_lookup_id_random
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.event_exhibit_tracking_methods import get_event_exhibit_tracking_rec_list, load_event_exhibit_tracking_obj
from app.models.event_exhibit_tracking_models import Event_Exhibit_Tracking_Base
from app.models.response_models import *
router = APIRouter()
@router.post('/event/exhibit/tracking', response_model=Resp_Body_Base)
async def post_event_exhibit_tracking_obj(
event_exhibit_tracking_obj: Event_Exhibit_Tracking_Base,
x_account_id: str = Header(...),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_exhibit_tracking'
event_exhibit_tracking_obj_data_dict = event_exhibit_tracking_obj.dict(by_alias=False, exclude_unset=True)
result = post_obj_template(
obj_type = obj_type,
data = event_exhibit_tracking_obj_data_dict,
return_obj = True,
by_alias = True,
exclude_unset = True,
)
return result
@router.patch('/event/exhibit/tracking/{event_exhibit_tracking_id}', response_model=Resp_Body_Base)
async def patch_event_exhibit_tracking_obj(
event_exhibit_tracking_obj: Event_Exhibit_Tracking_Base,
event_exhibit_tracking_id: str = Query(..., min_length=1, max_length=22),
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_exhibit_tracking'
event_exhibit_tracking_obj_data_dict = event_exhibit_tracking_obj.dict(by_alias=False, exclude_unset=True)
event_exhibit_tracking_obj_data_dict['id'] = redis_lookup_id_random(record_id_random=event_exhibit_tracking_id, table_name=obj_type)
event_exhibit_tracking_obj_data_dict['id_random'] = event_exhibit_tracking_id
result = patch_obj_template(
obj_type = obj_type,
data = event_exhibit_tracking_obj_data_dict,
obj_id = event_exhibit_tracking_id,
return_obj = True,
by_alias = True,
exclude_unset = True,
)
return result
@router.get('/event/exhibit/tracking/list', response_model=Resp_Body_Base)
async def get_event_exhibit_tracking_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50),
for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_exhibit_tracking'
result = get_obj_li_template(
obj_type=obj_type,
for_obj_type=for_obj_type,
for_obj_id=for_obj_id,
by_alias=True,
exclude_unset=True,
)
return result
@router.get('/event/exhibit/tracking/{obj_id}', response_model=Resp_Body_Base)
async def get_event_exhibit_tracking_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_exhibit_tracking'
result = get_obj_template(
obj_type=obj_type,
obj_id=obj_id,
by_alias=True,
exclude_unset=True,
)
return result
# ### BEGIN ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_list() ###
# Updated 2022-02-14
@router.get('/event/exhibit/{event_exhibit_id}/tracking/list', response_model=Resp_Body_Base)
async def get_event_exhibit_obj_tracking_list(
event_exhibit_id: str = Query(..., min_length=11, max_length=22),
event_person_id: str = Query(None, min_length=11, max_length=22),
inc_event_exhibit: bool = False,
inc_event_person: bool = False,
commons: Common_Route_Params = Depends(common_route_params),
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_exhibit_id := redis_lookup_id_random(record_id_random=event_exhibit_id, table_name='event_exhibit'): pass
else: return mk_resp(data=None, status_code=404, response=commons.response)
if event_person_id:
if event_person_id := redis_lookup_id_random(record_id_random=event_person_id, table_name='event_person'): pass
else: return mk_resp(data=None, status_code=404, response=commons.response)
# Updated 2022-02-14
if event_exhibit_tracking_rec_list_result := get_event_exhibit_tracking_rec_list(
event_exhibit_id = event_exhibit_id,
event_person_id = event_person_id,
enabled = commons.enabled,
limit = commons.limit,
):
event_exhibit_tracking_result_list = []
for event_exhibit_tracking_rec in event_exhibit_tracking_rec_list_result:
if load_event_exhibit_tracking_result := load_event_exhibit_tracking_obj(
event_exhibit_tracking_id = event_exhibit_tracking_rec.get('event_exhibit_tracking_id', None),
enabled = commons.enabled,
limit = commons.limit,
inc_event_exhibit = inc_event_exhibit,
inc_event_person = inc_event_person,
by_alias = commons.by_alias,
exclude_unset = commons.exclude_unset,
# model_as_dict = commons.model_as_dict,
):
event_exhibit_tracking_result_list.append(load_event_exhibit_tracking_result)
else:
event_exhibit_tracking_result_list.append(None)
response_data = event_exhibit_tracking_result_list
elif isinstance(event_exhibit_tracking_rec_list_result, list):
return mk_resp(data=False, status_code=404, response=commons.response) # Not Found
else:
return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request
return mk_resp(data=commons.response_data, response=commons.response)
# ### END ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_list() ###
@router.delete('/event/exhibit/tracking/{obj_id}', response_model=Resp_Body_Base)
async def delete_event_exhibit_tracking_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_exhibit_tracking'
result = delete_obj_template(
obj_type=obj_type,
obj_id=obj_id,
)
return result

View File

@@ -5,9 +5,8 @@ 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, get_id_random,redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template