Work on exhibit tracking
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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() ###
|
||||
|
||||
Reference in New Issue
Block a user