From bf4e3827e00864157df69e61838f75cd0a400980 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 13 Apr 2022 15:49:37 -0400 Subject: [PATCH] General clean up. --- app/methods/event_presentation_methods.py | 4 +- app/models/event_badge_models.py | 4 + app/routers/event_reports.py | 112 ++++++++++++++++++++++ 3 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 app/routers/event_reports.py diff --git a/app/methods/event_presentation_methods.py b/app/methods/event_presentation_methods.py index b63940d..4e48f2b 100644 --- a/app/methods/event_presentation_methods.py +++ b/app/methods/event_presentation_methods.py @@ -228,7 +228,7 @@ def load_event_presentation_obj( # ### END ### API Event Presentation Methods ### load_event_presentation_obj() ### -# ### BEGIN ### API Event Presenter Methods ### get_event_presentation_rec_list() ### +# ### BEGIN ### API Event Presentation Methods ### get_event_presentation_rec_list() ### @logger_reset def get_event_presentation_rec_list( event_person_id: str = None, @@ -311,7 +311,7 @@ def get_event_presentation_rec_list( log.debug(len(event_presentation_rec_li)) return event_presentation_rec_li -# ### END ### API Event Presenter Methods ### get_event_presentation_rec_list() ### +# ### END ### API Event Presentation Methods ### get_event_presentation_rec_list() ### # ### BEGIN ### API Event Presentation Methods ### get_event_id_w_event_session_id() ### diff --git a/app/models/event_badge_models.py b/app/models/event_badge_models.py index 92bc5da..8797a3e 100644 --- a/app/models/event_badge_models.py +++ b/app/models/event_badge_models.py @@ -117,6 +117,10 @@ class Event_Badge_Base(BaseModel): agree_to_tc: Optional[bool] # Agree to terms and conditions allow_tracking: Optional[bool] # Allow tracking for lead retrival and other marketing + print_first_datetime: Optional[datetime.datetime] = None + print_last_datetime: Optional[datetime.datetime] = None + print_count: Optional[int] + priority: Optional[bool] sort: Optional[int] group: Optional[str] diff --git a/app/routers/event_reports.py b/app/routers/event_reports.py new file mode 100644 index 0000000..eace506 --- /dev/null +++ b/app/routers/event_reports.py @@ -0,0 +1,112 @@ +import datetime +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_presenter_methods import get_event_presenter_url_list + +from app.models.response_models import Resp_Body_Base, mk_resp + + +router = APIRouter() + + +# ### BEGIN ### API Event Reports ### event_id_rpt_presenter_links() ### +# Updated 2022-04-12 +@router.get('/event/{event_id}/rpt_presenter_links', response_model=Resp_Body_Base) +async def event_id_rpt_presenter_links( + event_id: str = Query(..., min_length=11, max_length=22), + + commons: Common_Route_Params = Depends(common_route_params), + ): + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass + else: return mk_resp(data=None, status_code=404, response=commons.response) + + + if order_line_rec_list_result := get_order_line_rec_list( + for_obj_type = obj_type, + for_obj_id = obj_id, + from_datetime = from_datetime, + to_datetime = to_datetime, + product_for_type = prod_type, + status = status, + full_detail = full_detail, + # enabled = enabled, + limit = limit, + ): + order_line_result_list = [] + data_dict_list_for_export = [] + for order_line_rec in order_line_rec_list_result: + if not full_detail: + if load_order_line_result := load_order_obj_line( + order_line_id = order_line_rec.get('order_line_id', None), + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + ): + order_line_result_list.append(load_order_line_result) + else: + order_line_result_list.append(None) + else: # Uses a different view: v_order_line_full_detail + if load_order_line_result := load_order_obj_line_full_detail( + order_line_rec = order_line_rec, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = False, + ): + if create_export: + data_dict = load_order_line_result.dict(by_alias=by_alias, exclude_unset=exclude_unset) + data_dict_list_for_export.append(data_dict) + order_line_result_list.append(load_order_line_result) + else: + order_line_result_list.append(None) + response_data = order_line_result_list + elif isinstance(order_line_rec_list_result, list) or order_line_rec_list_result is None: # Empty list or None + log.info('No results') + return mk_resp(data=None, status_code=404, response=response) # Not Found + else: + log.warning('Likely bad request') + return mk_resp(data=False, status_code=400, response=response) # Bad Request + + if create_export: + # column_name_li = ['order_id_random', 'order_line_id_random', '', 'product_name', 'quantity', 'amount', 'dollar_amount', 'person_email'] + + # column_name_li = ['order_line_id_random', 'order_id_random', 'product_id_random', 'product_type', 'product_name', 'product_unit_price', 'product_recurring', 'curr_product_id_random', 'curr_product_type', 'curr_product_type_name', 'curr_product_name', 'name', 'quantity', 'amount', 'dollar_amount', 'recurring', 'message', 'person_id_random', 'person_given_name', 'person_family_name', 'person_display_name', 'person_full_name', 'person_contact_email', 'person_contact_cc_email', 'person_contact_phone_mobile', 'person_contact_phone_home', 'person_contact_phone_office', 'person_contact_phone_land', 'person_contact_phone_fax', 'person_contact_phone_other', 'person_contact_address_name', 'person_contact_address_organization_name', 'person_contact_address_line_1', 'person_contact_address_line_2', 'person_contact_address_line_3', 'person_contact_address_city', 'person_contact_address_country_subdivision_code', 'person_contact_address_state_province', 'person_contact_address_postal_code', 'person_contact_address_country_alpha_2_code', 'person_contact_address_country_name', 'person_contact_address_country', 'order_status', 'order_created_on', 'order_updated_on', 'created_on', 'updated_on'] + + column_name_li = [ + 'event_presenter_id_random', + 'event_id_random', + 'events_session_id_random', + 'events_presentation_id_random', + 'event_presenter_given_name', + 'event_presenter_family_name', + 'event_presenter_email', + 'event_presenter_created_on', 'event_presenter_updated_on' + ] + + + # column_name_li = [] + 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'order_line_list_{current_datetime_utc}' + if result := create_export_file(data_dict_list=data_dict_list_for_export, column_name_li=column_name_li, subdir_path='order_line', filename=filename, export_type='Excel'): + tmp_file_path = result + else: + log.error('Something went wrong while creating or saving the export file') + tmp_file_path = result + else: tmp_file_path = None + + return mk_resp(data=response_data, tmp_file_path=tmp_file_path, response=response) +# ### END ### API Event Reports ### get_obj_id_order_line_list() ###