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,
export_type: str = 'CSV', # CSV, Excel
) -> 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())
hosted_tmp_path = settings.PATH_HOSTED_TMP_ROOT
@@ -227,6 +227,37 @@ def create_export_file(
return tmp_file_path # True
# ### 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() ###
# Updated 2021-12-02

View File

@@ -1,9 +1,10 @@
import datetime, time
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Response, status
from fastapi.responses import FileResponse
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.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.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
hidden: str = 'not_hidden', # hidden, not_hidden, all
return_file: Optional[bool] = True,
commons: Common_Route_Params = Depends(common_route_params),
):
@@ -245,21 +247,82 @@ async def get_event_exhibit_obj_tracking_list(
hidden = hidden,
):
event_exhibit_tracking_result_list = []
data_dict_list_for_export = []
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'),
inc_event_badge = inc_event_badge,
inc_event_person = inc_event_person,
# inc_event_badge = inc_event_badge,
# inc_event_person = inc_event_person,
):
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:
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):
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
# ### 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() ###