diff --git a/app/main.py b/app/main.py index 7124277..3ce596a 100644 --- a/app/main.py +++ b/app/main.py @@ -18,7 +18,7 @@ from . import config from app.log import log, logging # Import the routers here first: -# from app.routers import aether_cfg, api_crud, api, importing, sql, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, data_store, event, event_abstract, event_badge, event_badge_importing, event_badge_template, event_device, 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, fundraising, 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, qr, site, site_domain, user, websockets_redis, e_confex, e_cvent, c_idaa, e_impexium, e_stripe +from app.routers import aether_cfg, api_crud, api, importing, sql, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, data_store, event, event_abstract, event_badge, event_badge_importing, event_badge_template, event_device, 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, fundraising, 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, qr, site, site_domain, user, websockets_redis, e_confex, e_cvent, c_idaa, e_impexium, e_stripe from app.db_sql import sql_select # , sql_connect @@ -85,516 +85,516 @@ else: # return config.Settings() -# app.mount('/static', StaticFiles(directory='static'), name='static') +app.mount('/static', StaticFiles(directory='static'), name='static') -# # Set up each route once the router has been imported -# app.include_router( -# aether_cfg.router, -# tags=['Aether Config'], -# ) -# app.include_router( -# api_crud.router, -# prefix='/crud', -# tags=['CRUD'], -# #dependencies=[Depends(get_token_header)], -# #dependencies=[Depends(get_account_header)], -# #responses={404: {'description': 'Not found'}}, -# ) -# app.include_router( -# api.router, -# prefix='/api', -# tags=['API'], -# ) +# Set up each route once the router has been imported +app.include_router( + aether_cfg.router, + tags=['Aether Config'], +) +app.include_router( + api_crud.router, + prefix='/crud', + tags=['CRUD'], + #dependencies=[Depends(get_token_header)], + #dependencies=[Depends(get_account_header)], + #responses={404: {'description': 'Not found'}}, +) +app.include_router( + api.router, + prefix='/api', + tags=['API'], +) +app.include_router( + flask_cfg.router, + prefix='/flask_cfg', + tags=['Flask CFG'], +) +app.include_router( + importing.router, + prefix='/importing', + tags=['Importing'], +) +app.include_router( + sql.router, + # prefix='/sql', + tags=['SQL'], +) # app.include_router( # flask_cfg.router, -# prefix='/flask_cfg', -# tags=['Flask CFG'], -# ) -# app.include_router( -# importing.router, -# prefix='/importing', -# tags=['Importing'], -# ) -# app.include_router( -# sql.router, -# # prefix='/sql', -# tags=['SQL'], -# ) -# # app.include_router( -# # flask_cfg.router, -# # prefix='/redis', -# # tags=['Redis'], -# # ) - -# app.include_router( -# account.router, -# # prefix='/account', -# tags=['Account'], -# ) -# app.include_router( -# activity_log.router, -# prefix='/activity_log', -# tags=['Activity Log'], -# ) -# app.include_router( -# address.router, -# prefix='/address', -# tags=['Address'], -# ) -# app.include_router( -# archive.router, -# # prefix='/archive', -# tags=['Archive'], -# ) -# app.include_router( -# archive_content.router, -# prefix='/archive/content', -# tags=['Archive Content'], -# ) -# app.include_router( -# contact.router, -# prefix='/contact', -# tags=['Contact'], -# ) -# app.include_router( -# cont_edu_cert.router, -# tags=['Cont Edu Cert'], -# ) -# app.include_router( -# cont_edu_cert_person.router, -# tags=['Cont Edu Cert Person'], -# ) -# app.include_router( -# data_store.router, -# # prefix='/data_store', -# tags=['Data Store'], -# ) -# app.include_router( -# event.router, -# # prefix='/event', -# tags=['Event'], -# ) -# app.include_router( -# event_abstract.router, -# tags=['Event Abstract'], -# ) -# app.include_router( -# event_badge.router, -# tags=['Event Badge'], -# ) -# app.include_router( -# event_badge_importing.router, -# tags=['Event Badge Importing'], -# ) -# app.include_router( -# event_badge_template.router, -# # prefix='/event/badge/template', -# tags=['Event Badge Template'], -# ) -# app.include_router( -# event_device.router, -# # prefix='/event/device', -# tags=['Event Device'], -# ) -# app.include_router( -# event_exhibit.router, -# # prefix='/event/exhibit', -# tags=['Event Exhibit'], -# ) -# app.include_router( -# event_exhibit_tracking.router, -# # prefix='/event/exhibit/tracking', -# tags=['Event Exhibit Tracking'], -# ) -# app.include_router( -# event_file.router, -# # prefix='/event/file', -# tags=['Event File'], -# ) -# app.include_router( -# event_importing.router, -# # prefix='/event/importing', -# tags=['Event Importing'], -# ) -# app.include_router( -# event_location.router, -# # prefix='/event/location', -# tags=['Event Location'], -# ) -# app.include_router( -# event_person.router, -# # prefix='/event/person', -# tags=['Event Person'], -# ) -# app.include_router( -# event_person.router, -# prefix='/event/person/detail', -# tags=['Event Person Detail'], -# ) -# app.include_router( -# event_person_tracking.router, -# tags=['Event Person Tracking'], -# ) -# app.include_router( -# event_presentation.router, -# # prefix='/event/presentation', -# tags=['Event Presentation'], -# ) -# app.include_router( -# event_presenter.router, -# prefix='/event/presenter', -# tags=['Event Presenter'], -# ) -# app.include_router( -# event_registration.router, -# prefix='/event/registration', -# tags=['Event Registration'], -# ) -# app.include_router( -# event_session.router, -# # prefix='/event/session', -# tags=['Event Session'], -# ) -# app.include_router( -# fundraising.router, -# tags=['Fundraising'], -# ) -# app.include_router( -# hosted_file.router, -# prefix='/hosted_file', -# tags=['Hosted File'], -# ) -# app.include_router( -# journal.router, -# prefix='/journal', -# tags=['Journal'], -# ) -# app.include_router( -# journal_entry.router, -# # prefix='/journal/entry', -# tags=['Journal Entry'], -# ) -# app.include_router( -# log_client_viewing.router, -# # prefix='/log/client_viewing', -# tags=['Log Client Viewing'], -# ) -# app.include_router( -# lookup.router, -# prefix='/lu', -# tags=['Lookup'], -# ) -# app.include_router( -# membership_cfg.router, -# tags=['Membership Config'], -# ) -# app.include_router( -# membership_group.router, -# tags=['Membership Group'], -# ) -# app.include_router( -# membership_person_group.router, -# tags=['Membership Group Person'], -# ) -# app.include_router( -# membership_person_profile.router, -# tags=['Membership Person Profile'], -# ) -# app.include_router( -# membership_person.router, -# tags=['Membership Person'], -# ) -# app.include_router( -# membership_type.router, -# tags=['Membership Type'], -# ) -# app.include_router( -# membership_person_type.router, -# tags=['Membership Type Person'], -# ) -# app.include_router( -# order.router, -# # prefix='/order', -# tags=['Order'], -# ) -# app.include_router( -# order_v3.router, -# # prefix='/order', -# tags=['Order v3'], -# ) -# app.include_router( -# order_line.router, -# # prefix='/order', -# tags=['Order Line'], -# ) -# app.include_router( -# order_cart.router, -# prefix='/order/cart', -# tags=['Order Cart'], -# ) -# app.include_router( -# organization.router, -# prefix='/organization', -# tags=['Organization'], -# ) -# app.include_router( -# page.router, -# prefix='/page', -# tags=['Page'], -# ) -# app.include_router( -# person.router, -# tags=['Person'], -# ) -# app.include_router( -# person_user.router, -# prefix='/person_user', -# tags=['Person User'], -# ) -# app.include_router( -# post.router, -# # prefix='/post', -# tags=['Post'], -# ) -# app.include_router( -# post_comment.router, -# prefix='/post/comment', -# tags=['Post Comment'], -# ) -# app.include_router( -# product.router, -# # prefix='/product', -# tags=['Product'], -# ) -# app.include_router( -# qr.router, -# tags=['QR'], -# ) -# app.include_router( -# site.router, -# # prefix='/site', -# tags=['Site'], -# ) -# app.include_router( -# site_domain.router, -# # prefix='/site/domain', -# tags=['Site Domain'], -# ) -# app.include_router( -# user.router, -# tags=['User'], -# ) -# # app.include_router( -# # websockets.router, -# # # prefix='/websocket', -# # tags=['Websockets'], -# # # dependencies=[Depends(get_token_header)], -# # # responses={404: {'description': 'Not found'}}, -# # ) -# app.include_router( -# websockets_redis.router, -# tags=['Websockets (Redis)'], -# ) -# app.include_router( -# e_confex.router, -# prefix='/e/confex', -# tags=['External Service: Confex'], -# ) -# app.include_router( -# e_cvent.router, -# prefix='/e/cvent', -# tags=['External Service: Cvent'], -# ) -# app.include_router( -# e_impexium.router, -# prefix='/e/impexium', -# tags=['External Service: Impexium'], -# ) -# app.include_router( -# e_stripe.router, -# prefix='/e/stripe', -# tags=['External Service: Stripe'], +# prefix='/redis', +# tags=['Redis'], # ) +app.include_router( + account.router, + # prefix='/account', + tags=['Account'], +) +app.include_router( + activity_log.router, + prefix='/activity_log', + tags=['Activity Log'], +) +app.include_router( + address.router, + prefix='/address', + tags=['Address'], +) +app.include_router( + archive.router, + # prefix='/archive', + tags=['Archive'], +) +app.include_router( + archive_content.router, + prefix='/archive/content', + tags=['Archive Content'], +) +app.include_router( + contact.router, + prefix='/contact', + tags=['Contact'], +) +app.include_router( + cont_edu_cert.router, + tags=['Cont Edu Cert'], +) +app.include_router( + cont_edu_cert_person.router, + tags=['Cont Edu Cert Person'], +) +app.include_router( + data_store.router, + # prefix='/data_store', + tags=['Data Store'], +) +app.include_router( + event.router, + # prefix='/event', + tags=['Event'], +) +app.include_router( + event_abstract.router, + tags=['Event Abstract'], +) +app.include_router( + event_badge.router, + tags=['Event Badge'], +) +app.include_router( + event_badge_importing.router, + tags=['Event Badge Importing'], +) +app.include_router( + event_badge_template.router, + # prefix='/event/badge/template', + tags=['Event Badge Template'], +) +app.include_router( + event_device.router, + # prefix='/event/device', + tags=['Event Device'], +) +app.include_router( + event_exhibit.router, + # prefix='/event/exhibit', + tags=['Event Exhibit'], +) +app.include_router( + event_exhibit_tracking.router, + # prefix='/event/exhibit/tracking', + tags=['Event Exhibit Tracking'], +) +app.include_router( + event_file.router, + # prefix='/event/file', + tags=['Event File'], +) +app.include_router( + event_importing.router, + # prefix='/event/importing', + tags=['Event Importing'], +) +app.include_router( + event_location.router, + # prefix='/event/location', + tags=['Event Location'], +) +app.include_router( + event_person.router, + # prefix='/event/person', + tags=['Event Person'], +) +app.include_router( + event_person.router, + prefix='/event/person/detail', + tags=['Event Person Detail'], +) +app.include_router( + event_person_tracking.router, + tags=['Event Person Tracking'], +) +app.include_router( + event_presentation.router, + # prefix='/event/presentation', + tags=['Event Presentation'], +) +app.include_router( + event_presenter.router, + prefix='/event/presenter', + tags=['Event Presenter'], +) +app.include_router( + event_registration.router, + prefix='/event/registration', + tags=['Event Registration'], +) +app.include_router( + event_session.router, + # prefix='/event/session', + tags=['Event Session'], +) +app.include_router( + fundraising.router, + tags=['Fundraising'], +) +app.include_router( + hosted_file.router, + prefix='/hosted_file', + tags=['Hosted File'], +) +app.include_router( + journal.router, + prefix='/journal', + tags=['Journal'], +) +app.include_router( + journal_entry.router, + # prefix='/journal/entry', + tags=['Journal Entry'], +) +app.include_router( + log_client_viewing.router, + # prefix='/log/client_viewing', + tags=['Log Client Viewing'], +) +app.include_router( + lookup.router, + prefix='/lu', + tags=['Lookup'], +) +app.include_router( + membership_cfg.router, + tags=['Membership Config'], +) +app.include_router( + membership_group.router, + tags=['Membership Group'], +) +app.include_router( + membership_person_group.router, + tags=['Membership Group Person'], +) +app.include_router( + membership_person_profile.router, + tags=['Membership Person Profile'], +) +app.include_router( + membership_person.router, + tags=['Membership Person'], +) +app.include_router( + membership_type.router, + tags=['Membership Type'], +) +app.include_router( + membership_person_type.router, + tags=['Membership Type Person'], +) +app.include_router( + order.router, + # prefix='/order', + tags=['Order'], +) +app.include_router( + order_v3.router, + # prefix='/order', + tags=['Order v3'], +) +app.include_router( + order_line.router, + # prefix='/order', + tags=['Order Line'], +) +app.include_router( + order_cart.router, + prefix='/order/cart', + tags=['Order Cart'], +) +app.include_router( + organization.router, + prefix='/organization', + tags=['Organization'], +) +app.include_router( + page.router, + prefix='/page', + tags=['Page'], +) +app.include_router( + person.router, + tags=['Person'], +) +app.include_router( + person_user.router, + prefix='/person_user', + tags=['Person User'], +) +app.include_router( + post.router, + # prefix='/post', + tags=['Post'], +) +app.include_router( + post_comment.router, + prefix='/post/comment', + tags=['Post Comment'], +) +app.include_router( + product.router, + # prefix='/product', + tags=['Product'], +) +app.include_router( + qr.router, + tags=['QR'], +) +app.include_router( + site.router, + # prefix='/site', + tags=['Site'], +) +app.include_router( + site_domain.router, + # prefix='/site/domain', + tags=['Site Domain'], +) +app.include_router( + user.router, + tags=['User'], +) # app.include_router( -# c_idaa.router, -# prefix='/c/idaa', -# tags=['Client: IDAA'], +# websockets.router, +# # prefix='/websocket', +# tags=['Websockets'], +# # dependencies=[Depends(get_token_header)], +# # responses={404: {'description': 'Not found'}}, # ) +app.include_router( + websockets_redis.router, + tags=['Websockets (Redis)'], +) +app.include_router( + e_confex.router, + prefix='/e/confex', + tags=['External Service: Confex'], +) +app.include_router( + e_cvent.router, + prefix='/e/cvent', + tags=['External Service: Cvent'], +) +app.include_router( + e_impexium.router, + prefix='/e/impexium', + tags=['External Service: Impexium'], +) +app.include_router( + e_stripe.router, + prefix='/e/stripe', + tags=['External Service: Stripe'], +) + +app.include_router( + c_idaa.router, + prefix='/c/idaa', + tags=['Client: IDAA'], +) -# # BEGIN: CORS -# # NOTE: Eventually this should query the DB for the specific list based on the cfg table and or site_domain table. That way it is dynamic and only allowing those defined in the DB. No wildcards or regex. -# # NOTE: Need to include .localhost for less browser restrictions! Mainly for audio and video. -# app.add_middleware( -# CORSMiddleware, -# # allow_origins = origins, -# allow_origins = config.settings.ORIGINS, -# allow_origin_regex = config.settings.ORIGINS_REGEX, -# # allow_origin_regex = 'https://.*\.oneskyit\.com', -# allow_credentials = True, -# allow_methods = ['*'], -# allow_headers = ['*'], -# #expose_headers = [], -# #max_age = 600, -# ) -# # END: CORS +# BEGIN: CORS +# NOTE: Eventually this should query the DB for the specific list based on the cfg table and or site_domain table. That way it is dynamic and only allowing those defined in the DB. No wildcards or regex. +# NOTE: Need to include .localhost for less browser restrictions! Mainly for audio and video. +app.add_middleware( + CORSMiddleware, + # allow_origins = origins, + allow_origins = config.settings.ORIGINS, + allow_origin_regex = config.settings.ORIGINS_REGEX, + # allow_origin_regex = 'https://.*\.oneskyit\.com', + allow_credentials = True, + allow_methods = ['*'], + allow_headers = ['*'], + #expose_headers = [], + #max_age = 600, +) +# END: CORS -# @app.on_event('startup') -# async def startup(): -# log.setLevel(logging.INFO) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL -# log.debug(locals()) +@app.on_event('startup') +async def startup(): + log.setLevel(logging.INFO) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) -# log.info('The Aether FastAPI API is starting up...') -# #await database.connect() + log.info('The Aether FastAPI API is starting up...') + #await database.connect() -# @app.on_event('shutdown') -# async def shutdown(): -# log.setLevel(logging.INFO) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL -# log.debug(locals()) +@app.on_event('shutdown') +async def shutdown(): + log.setLevel(logging.INFO) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) -# log.info('The Aether FastAPI API is shutting down...') -# #await database.disconnect() + log.info('The Aether FastAPI API is shutting down...') + #await database.disconnect() -# #Add the processing time to the response header. -# @app.middleware('http') -# async def add_process_time_header(request: Request, call_next): -# import time -# start_time = time.time() -# response = await call_next(request) -# process_time = time.time() - start_time -# response.headers['X-Process-Time'] = str(process_time) -# return response +#Add the processing time to the response header. +@app.middleware('http') +async def add_process_time_header(request: Request, call_next): + import time + start_time = time.time() + response = await call_next(request) + process_time = time.time() - start_time + response.headers['X-Process-Time'] = str(process_time) + return response -# # ### BEGIN ### API Main ### fastapi_root() ### -# @app.get('/', tags=['Root'], response_class=PlainTextResponse) -# async def fastapi_root(response: Response = Response): -# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL -# log.debug(locals()) +# ### BEGIN ### API Main ### fastapi_root() ### +@app.get('/', tags=['Root'], response_class=PlainTextResponse) +async def fastapi_root(response: Response = Response): + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) -# # log.info(config.settings.APP_NAME) -# log.info('One Sky IT\'s Aether API root (FastAPI)') + # log.info(config.settings.APP_NAME) + log.info('One Sky IT\'s Aether API root (FastAPI)') -# log.info('***') -# log.debug('This is debug') # 10 DEBUG -# log.info('This is info') # 20 INFO -# log.warning('This is a warning') # 30 WARNING (and WARN) -# log.error('This is an error') # 40 ERROR -# log.exception('This is an exception') # 40 ERROR -# log.critical('This is critical') # 50 CRITICAL -# log.info('^^^') + log.info('***') + log.debug('This is debug') # 10 DEBUG + log.info('This is info') # 20 INFO + log.warning('This is a warning') # 30 WARNING (and WARN) + log.error('This is an error') # 40 ERROR + log.exception('This is an exception') # 40 ERROR + log.critical('This is critical') # 50 CRITICAL + log.info('^^^') -# response_data = {} -# response_data['message'] = 'This is One Sky IT\'s Aether API root (FastAPI).' + response_data = {} + response_data['message'] = 'This is One Sky IT\'s Aether API root (FastAPI).' -# current_datetime = datetime.datetime.now() -# current_datetime_string = current_datetime.isoformat() + current_datetime = datetime.datetime.now() + current_datetime_string = current_datetime.isoformat() -# timezone = pytz.timezone("America/New_York") -# current_datetime_tz = timezone.localize(current_datetime) -# current_datetime_tz_string = current_datetime_tz.isoformat() + timezone = pytz.timezone("America/New_York") + current_datetime_tz = timezone.localize(current_datetime) + current_datetime_tz_string = current_datetime_tz.isoformat() -# current_datetime_utc = datetime.datetime.utcnow() -# current_datetime_utc_string = current_datetime_utc.isoformat() + current_datetime_utc = datetime.datetime.utcnow() + current_datetime_utc_string = current_datetime_utc.isoformat() -# current_datetime_utc_localize = pytz.utc.localize(current_datetime_utc) -# current_datetime_utc_localize_string = current_datetime_utc_localize.isoformat() + current_datetime_utc_localize = pytz.utc.localize(current_datetime_utc) + current_datetime_utc_localize_string = current_datetime_utc_localize.isoformat() -# current_datetime_utc_localize_pst = current_datetime_utc_localize.astimezone(pytz.timezone("America/Los_Angeles")) -# current_datetime_utc_localize_pst_string = current_datetime_utc_localize_pst.isoformat() + current_datetime_utc_localize_pst = current_datetime_utc_localize.astimezone(pytz.timezone("America/Los_Angeles")) + current_datetime_utc_localize_pst_string = current_datetime_utc_localize_pst.isoformat() -# response_data['datetime'] = current_datetime_string -# response_data['datetime_tz'] = current_datetime_tz_string -# response_data['datetime_utc'] = current_datetime_utc_string -# response_data['datetime_utc_localize'] = current_datetime_utc_localize_string -# response_data['datetime_utc_localize_pst'] = current_datetime_utc_localize_pst_string + response_data['datetime'] = current_datetime_string + response_data['datetime_tz'] = current_datetime_tz_string + response_data['datetime_utc'] = current_datetime_utc_string + response_data['datetime_utc_localize'] = current_datetime_utc_localize_string + response_data['datetime_utc_localize_pst'] = current_datetime_utc_localize_pst_string -# response_data['url_safe_string_4_bytes_1'] = secrets.token_urlsafe(4) + response_data['url_safe_string_4_bytes_1'] = secrets.token_urlsafe(4) -# response_data['url_safe_string_8_bytes_1'] = secrets.token_urlsafe(8) -# response_data['url_safe_string_8_bytes_2'] = secrets.token_urlsafe(8) -# response_data['url_safe_string_8_bytes_3'] = secrets.token_urlsafe(8) -# response_data['url_safe_string_8_bytes_4'] = secrets.token_urlsafe(8) -# response_data['url_safe_string_8_bytes_5'] = secrets.token_urlsafe(8) + response_data['url_safe_string_8_bytes_1'] = secrets.token_urlsafe(8) + response_data['url_safe_string_8_bytes_2'] = secrets.token_urlsafe(8) + response_data['url_safe_string_8_bytes_3'] = secrets.token_urlsafe(8) + response_data['url_safe_string_8_bytes_4'] = secrets.token_urlsafe(8) + response_data['url_safe_string_8_bytes_5'] = secrets.token_urlsafe(8) -# response_data['url_safe_string_16_bytes_1'] = secrets.token_urlsafe(16) -# response_data['url_safe_string_16_bytes_2'] = secrets.token_urlsafe(16) -# response_data['url_safe_string_16_bytes_3'] = secrets.token_urlsafe(16) -# response_data['url_safe_string_16_bytes_4'] = secrets.token_urlsafe(16) -# response_data['url_safe_string_16_bytes_5'] = secrets.token_urlsafe(16) + response_data['url_safe_string_16_bytes_1'] = secrets.token_urlsafe(16) + response_data['url_safe_string_16_bytes_2'] = secrets.token_urlsafe(16) + response_data['url_safe_string_16_bytes_3'] = secrets.token_urlsafe(16) + response_data['url_safe_string_16_bytes_4'] = secrets.token_urlsafe(16) + response_data['url_safe_string_16_bytes_5'] = secrets.token_urlsafe(16) -# response_data['hex_string_4_bytes_1'] = secrets.token_hex(4) -# response_data['hex_string_8_bytes_1'] = secrets.token_hex(8) -# response_data['hex_string_16_bytes_1'] = secrets.token_hex(16) -# response_data['hex_string_32_bytes_1'] = secrets.token_hex(32) + response_data['hex_string_4_bytes_1'] = secrets.token_hex(4) + response_data['hex_string_8_bytes_1'] = secrets.token_hex(8) + response_data['hex_string_16_bytes_1'] = secrets.token_hex(16) + response_data['hex_string_32_bytes_1'] = secrets.token_hex(32) -# log.debug(json.dumps(response_data, indent=4)) -# return json.dumps(response_data, indent=4) # , sort_keys=True -# # ### END ### API Main ### fastapi_root() ### + log.debug(json.dumps(response_data, indent=4)) + return json.dumps(response_data, indent=4) # , sort_keys=True +# ### END ### API Main ### fastapi_root() ### -# # ### BEGIN ### API Main ### generate_id_random() ### -# # NOTE: This is just a quick utility function to generate a bunch of random IDs. -# # Updated 2022-03-30 -# @app.get('/generate_id_random', tags=['Root'], response_class=PlainTextResponse) -# async def generate_id_random(response: Response = Response): -# log.setLevel(logging.INFO) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL -# log.debug(locals()) +# ### BEGIN ### API Main ### generate_id_random() ### +# NOTE: This is just a quick utility function to generate a bunch of random IDs. +# Updated 2022-03-30 +@app.get('/generate_id_random', tags=['Root'], response_class=PlainTextResponse) +async def generate_id_random(response: Response = Response): + log.setLevel(logging.INFO) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) -# response_data = {} + response_data = {} -# html_list = '' + html_list = '' -# return HTMLResponse(content=html_list, status_code=200) -# # ### END ### API Main ### generate_id_random() ### + return HTMLResponse(content=html_list, status_code=200) +# ### END ### API Main ### generate_id_random() ### -# # ### BEGIN ### API Main ### sql_test() ### -# # ### TEST TEST TEST ### # -# @app.get('/sql_test', tags=['Testing'], response_class=PlainTextResponse) -# async def sql_test(response: Response = Response): -# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL -# log.debug(locals()) +# ### BEGIN ### API Main ### sql_test() ### +# ### TEST TEST TEST ### # +@app.get('/sql_test', tags=['Testing'], response_class=PlainTextResponse) +async def sql_test(response: Response = Response): + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARN, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) -# return mk_resp(data=False, status_code=501, response=response) + return mk_resp(data=False, status_code=501, response=response) -# log.info('Getting all accounts from DB...') + log.info('Getting all accounts from DB...') -# sql = text( -# """ -# SELECT id, id_random, name, enable -# FROM `account` -# """ -# ) -# try: -# result = db.execute(sql) -# except Exception as e: -# log.error('*** An exception happened. ***') -# log.error(repr(e)) -# log.error('***') -# log.error(str(e)) -# log.error('^^^ exception ^^^') -# else: -# if result.rowcount: -# record_li = [dict(record) for record in result.fetchall()] -# log.debug(record_li) -# else: -# log.error('No records found. Something went wrong.') + sql = text( + """ + SELECT id, id_random, name, enable + FROM `account` + """ + ) + try: + result = db.execute(sql) + except Exception as e: + log.error('*** An exception happened. ***') + log.error(repr(e)) + log.error('***') + log.error(str(e)) + log.error('^^^ exception ^^^') + else: + if result.rowcount: + record_li = [dict(record) for record in result.fetchall()] + log.debug(record_li) + else: + log.error('No records found. Something went wrong.') -# log.info('Got the account list') + log.info('Got the account list') -# response_data = {} -# response_data['message'] = 'This is the Aether API using FastAPI.' -# response_data['data'] = record_li + response_data = {} + response_data['message'] = 'This is the Aether API using FastAPI.' + response_data['data'] = record_li -# return json.dumps(response_data, indent=4) # , sort_keys=True -# # ### END ### API Main ### sql_test() ### + return json.dumps(response_data, indent=4) # , sort_keys=True +# ### END ### API Main ### sql_test() ### diff --git a/app/routers/hosted_file.py b/app/routers/hosted_file.py index d98b8c2..6dcabee 100644 --- a/app/routers/hosted_file.py +++ b/app/routers/hosted_file.py @@ -3,7 +3,7 @@ from fastapi import APIRouter, Body, Depends, File, Form, Header, HTTPException, from fastapi.responses import FileResponse from pydantic import BaseModel, EmailStr, Field from typing import Dict, List, Optional, Set, Union -from pdf2image import convert_from_path +# from pdf2image import convert_from_path from app.lib_general import log, logging, common_route_params, Common_Route_Params, common_route_params_min, Common_Route_Params_Min from app.config import settings