Work on exhibit tracking

This commit is contained in:
Scott Idem
2022-04-22 15:22:46 -04:00
parent 74e62f5f4c
commit e7ab95fcb7
2 changed files with 100 additions and 6 deletions

View File

@@ -171,7 +171,7 @@ def create_export_file(
rm_id: bool = True, rm_id: bool = True,
export_type: str = 'CSV', # CSV, Excel export_type: str = 'CSV', # CSV, Excel
) -> bool|str: ) -> bool|str:
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
hosted_tmp_path = settings.PATH_HOSTED_TMP_ROOT hosted_tmp_path = settings.PATH_HOSTED_TMP_ROOT
@@ -227,6 +227,37 @@ def create_export_file(
return tmp_file_path # True return tmp_file_path # True
# ### END ### API Lib General ### create_export() ### # ### END ### API Lib General ### create_export() ###
# ### BEGIN ### API Lib General ### return_full_tmp_path() ###
# This is for using with return FileResponse(path=full_tmp_path, filename=filename)
# Updated 2022-04-22
@logger_reset
def return_full_tmp_path(
full_tmp_path: str = None,
subdir_path: str = None,
filename: str = None,
) -> bool|str:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
hosted_tmp_path = settings.PATH_HOSTED_TMP_ROOT
# hosted_tmp_path = 'admin/temp'
log.info(f'Hosted Temp Path: {hosted_tmp_path}')
if full_tmp_path:
file_dest = os.path.join(hosted_tmp_path, full_tmp_path)
return file_dest
elif subdir_path and filename:
subdirectory_dest = os.path.join(hosted_tmp_path, subdir_path)
log.debug(subdirectory_dest)
pathlib.Path(subdirectory_dest).mkdir(parents=True, exist_ok=True)
file_dest_w_subdir = os.path.join(subdirectory_dest, filename)
log.info(f'File Dest With Subdir: {file_dest_w_subdir}')
return file_dest_w_subdir
else:
return False
# ### END ### API Lib General ### return_full_tmp_path() ###
# ### BEGIN ### API Lib General ### send_email() ### # ### BEGIN ### API Lib General ### send_email() ###
# Updated 2021-12-02 # Updated 2021-12-02

View File

@@ -1,9 +1,10 @@
import datetime, time import datetime, time
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Response, status from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Response, status
from fastapi.responses import FileResponse
from pydantic import BaseModel, EmailStr, Field from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging, common_route_params, Common_Route_Params from app.lib_general import create_export_file, return_full_tmp_path, log, logging, common_route_params, Common_Route_Params
from app.config import settings 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.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, get_id_random, redis_lookup_id_random
@@ -229,6 +230,7 @@ async def get_event_exhibit_obj_tracking_list(
file_type: str = 'CSV', # CSV, Excel file_type: str = 'CSV', # CSV, Excel
hidden: str = 'not_hidden', # hidden, not_hidden, all hidden: str = 'not_hidden', # hidden, not_hidden, all
return_file: Optional[bool] = True,
commons: Common_Route_Params = Depends(common_route_params), commons: Common_Route_Params = Depends(common_route_params),
): ):
@@ -245,21 +247,82 @@ async def get_event_exhibit_obj_tracking_list(
hidden = hidden, hidden = hidden,
): ):
event_exhibit_tracking_result_list = [] event_exhibit_tracking_result_list = []
data_dict_list_for_export = []
for event_exhibit_tracking_rec in event_exhibit_tracking_rec_list_result: for event_exhibit_tracking_rec in event_exhibit_tracking_rec_list_result:
if load_event_exhibit_tracking_result := load_event_exhibit_tracking_obj( if load_event_exhibit_tracking_result := load_event_exhibit_tracking_obj(
event_exhibit_tracking_id = event_exhibit_tracking_rec.get('event_exhibit_tracking_id'), event_exhibit_tracking_id = event_exhibit_tracking_rec.get('event_exhibit_tracking_id'),
inc_event_badge = inc_event_badge, # inc_event_badge = inc_event_badge,
inc_event_person = inc_event_person, # inc_event_person = inc_event_person,
): ):
event_exhibit_tracking_result_list.append(load_event_exhibit_tracking_result) event_exhibit_tracking_result_list.append(load_event_exhibit_tracking_result)
data_dict = load_event_exhibit_tracking_result.dict(by_alias=True, exclude_unset=True)
data_dict_list_for_export.append(data_dict)
else: else:
event_exhibit_tracking_result_list.append(None) event_exhibit_tracking_result_list.append(None)
return mk_resp(data=event_exhibit_tracking_result_list, response=commons.response) # Success
column_name_li = [
'event_exhibit_tracking_id_random',
'event_badge_id_random',
# 'event_badge_pronouns',
'event_badge_informal_name',
'event_badge_title_names',
'event_badge_given_name',
'event_badge_middle_name',
'event_badge_family_name',
'event_badge_designations',
'event_badge_professional_title', 'event_badge_display_professional_title',
'event_badge_display_name',
'event_badge_full_name',
'event_badge_affiliations',
'event_badge_display_affiliations',
'event_badge_email',
'event_badge_city',
'event_badge_country_subdivision_code', 'event_badge_state_province_abb',
'event_badge_state_province',
'event_badge_country_alpha_2_code',
'event_badge_country',
'event_badge_location',
'event_badge_display_location',
]
datetime_format='%Y-%m-%d_%H%M'
# current_datetime = datetime.datetime.now() # Servers timezone (Eastern)
current_datetime_utc = datetime.datetime.utcnow()
current_datetime_utc = current_datetime_utc.strftime(datetime_format)
filename = f'exhibit_tracking_list_{current_datetime_utc}'
if file_type == 'CSV':
filename_w_ext = filename+'.csv'
elif file_type == 'Excel':
filename_w_ext = filename+'.xlsx'
if result := create_export_file(data_dict_list=data_dict_list_for_export, column_name_li=column_name_li, subdir_path='event_exhibit', filename=filename, export_type=file_type):
tmp_file_path = result
else:
log.error('Something went wrong while creating or saving the export file')
tmp_file_path = result
log.info(f'Filename: {filename_w_ext}')
if return_file:
if full_tmp_path := return_full_tmp_path(full_tmp_path=tmp_file_path):
return FileResponse(path=full_tmp_path, filename=filename_w_ext) # , media_type='application/octet-stream'
else:
return mk_resp(data=data_dict_list_for_export, tmp_file_path=tmp_file_path, response=commons.response)
# return mk_resp(data=event_exhibit_tracking_result_list, response=commons.response) # Success
elif isinstance(event_exhibit_tracking_rec_list_result, list): elif isinstance(event_exhibit_tracking_rec_list_result, list):
return mk_resp(data=False, status_code=404, response=commons.response) # Not Found return mk_resp(data=False, status_code=404, response=commons.response) # Not Found
else: else:
return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request
# ### END ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_list() ### # ### END ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_export() ###
# ### BEGIN ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_list() ### # ### BEGIN ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_list() ###