Work on ISHLT related

This commit is contained in:
Scott Idem
2022-04-16 14:01:06 -04:00
parent 1f66eb0abc
commit 2fb5acd485
3 changed files with 116 additions and 4 deletions

View File

@@ -5,8 +5,11 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from app.lib_general import log, logging, logger_reset from app.lib_general import log, logging, logger_reset, send_email
# from app.methods.account_cfg_methods import load_account_cfg_obj
# from app.methods.event_methods import load_event_obj
# from app.methods.event_badge_methods import load_event_badge_obj
from app.methods.event_badge_template_methods import load_event_badge_template_obj from app.methods.event_badge_template_methods import load_event_badge_template_obj
from app.models.event_badge_models import Event_Badge_Base, Event_Badge_Basic_Base from app.models.event_badge_models import Event_Badge_Base, Event_Badge_Basic_Base
@@ -221,3 +224,91 @@ def create_update_event_badge_obj_v4(
log.debug(f'Returning the Event Badge ID: {event_badge_id}') log.debug(f'Returning the Event Badge ID: {event_badge_id}')
return event_badge_id return event_badge_id
# ### END ### API Event Badge Methods ### create_update_event_badge_obj_v4() ### # ### END ### API Event Badge Methods ### create_update_event_badge_obj_v4() ###
# ### BEGIN ### Event Badge Methods ### email_event_badge_review_url() ###
# This emails the actual one time use sign in URL for a user.
# Updated 2021-12-02
def email_event_badge_review_url(
event_badge_id: int|str,
root_url: str,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
# else: return False
if event_badge_id := redis_lookup_id_random(record_id_random=event_badge_id, table_name='event_badge'): pass
else: return False
from app.methods.event_badge_methods import load_event_badge_obj
if event_badge_obj := load_event_badge_obj(
event_badge_id = event_badge_id,
):
log.info('Event Badge object loaded')
else: return False
log.debug(event_badge_obj)
event_id = event_badge_obj.event_id
event_badge_id_random = event_badge_obj.id_random # Not event_badge_id_random
from app.methods.event_methods import load_event_obj
if event_obj := load_event_obj(
event_id = event_id,
):
log.info('Event object loaded')
else: return False
log.debug(event_obj)
account_id = event_obj.account_id
event_name = event_obj.name
from app.methods.account_cfg_methods import load_account_cfg_obj
if account_cfg := load_account_cfg_obj(
account_id = account_id,
):
log.info('Account config loaded')
else: return False
log.debug(account_cfg)
from_email = account_cfg.default_no_reply_email
from_name = account_cfg.default_no_reply_name
to_name = f'{event_badge_obj.given_name} {event_badge_obj.family_name}'
to_email = event_badge_obj.email
bcc_email = account_cfg.confirm_email
bcc_name = account_cfg.confirm_name
# help_tech_email = account_cfg.help_tech_email
# help_tech_name = account_cfg.help_tech_name
account_short_name = account_cfg.account_short_name
event_badge_review_url = f'{root_url}event/badge/{event_badge_id_random}/review_badge'
subject = f'{event_name}: Event Badge Review Link ({event_badge_id_random})'
body_html = f"""
<p>{to_name},</p>
<p>If you did not request this badge review link, please delete this email.</p>
<p>The link below will allow you to review your badge information and update some of the details if needed.</p>
<p><strong><a href="{event_badge_review_url}" style="appearance: button; display: inline-block; text-align: center; text-decoration: none; padding: .2rem .4rem; border: solid thin gray; border-radius: .2rem; background-color: lightyellow; color: black; font-size: larger;">Click to Review Badge</a></strong></p>
<p>Or copy and paste the link:<br>
<strong style="background-color: lightyellow; color: black; font-size: larger;"><a href="{event_badge_review_url}">{event_badge_review_url}</a></strong></p>
<p>Thank you!</p>
"""
if send_email(from_email=from_email, from_name=from_name, to_email=to_email, to_name=to_name, bcc_email=bcc_email, bcc_name=bcc_name, subject=subject, body_text=None, body_html=body_html):
log.info(f'An email with a badge review link was sent to {to_email}.')
return True
else:
log.info(f'An email with a badge review link was not sent to {to_email}.')
return False
# ### END ### Event Badge Methods ### email_event_badge_review_url() ###

View File

@@ -710,4 +710,4 @@ def email_user_auth_key_url(
else: else:
log.info(f'An email with a one time use sign in link was not sent to {to_email}.') log.info(f'An email with a one time use sign in link was not sent to {to_email}.')
return False return False
# ### END ### User ### email_user_auth_key_url() ### # ### END ### User Methods ### email_user_auth_key_url() ###

View File

@@ -10,7 +10,7 @@ from app.db_sql import sql_enable_part, sql_insert, sql_update, sql_insert_or_up
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template 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_badge_methods import get_event_badge_rec_list, load_event_badge_obj # from app.methods.event_badge_methods import get_event_badge_rec_list, load_event_badge_obj
from app.methods.event_badge_methods import load_event_badge_obj from app.methods.event_badge_methods import email_event_badge_review_url, load_event_badge_obj
from app.models.event_badge_models import Event_Badge_Base from app.models.event_badge_models import Event_Badge_Base
from app.models.response_models import Resp_Body_Base, mk_resp from app.models.response_models import Resp_Body_Base, mk_resp
@@ -56,7 +56,7 @@ async def patch_event_badge_obj(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
time.sleep(2) # time.sleep(2)
obj_type = 'event_badge' obj_type = 'event_badge'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
@@ -330,6 +330,27 @@ async def search_event_badge_obj_li(
# ### END ### API Event Badge ### search_event_badge_obj_li() ### # ### END ### API Event Badge ### search_event_badge_obj_li() ###
# ### BEGIN ### API Event Badge ### event_badge_obj_email_review() ###
# Updated 2022-04-16
@router.get('/event/badge/{event_badge_id}/email_review', response_model=Resp_Body_Base)
async def event_badge_obj_email_review(
event_badge_id: str = Query(..., min_length=11, max_length=22),
root_url: Optional[str] = Query(None, min_length=10, max_length=100), # Absolute min = 7
# to_email: str = Query(..., min_length=5, max_length=100),
# to_name: str = Query(..., min_length=2, max_length=75),
commons: Common_Route_Params = Depends(common_route_params),
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if email_event_badge_review_url(event_badge_id=event_badge_id, root_url=root_url):
return mk_resp(data=True, response=commons.response)
else:
return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request
# ### END ### API Event Badge ### event_badge_obj_email_review() ###
# ### BEGIN ### API Event Badge ### get_event_badge_obj() ### # ### BEGIN ### API Event Badge ### get_event_badge_obj() ###
# Updated 2022-02-15 # Updated 2022-02-15
@router.get('/event/badge/{event_badge_id}', response_model=Resp_Body_Base) @router.get('/event/badge/{event_badge_id}', response_model=Resp_Body_Base)