Clean up of Cvent and IDAA person and membership related. The person.status only matters if it is Pending.
This commit is contained in:
@@ -300,7 +300,8 @@ def sql_update(
|
|||||||
log.debug(dir(result_update))
|
log.debug(dir(result_update))
|
||||||
log.debug(result_update.rowcount) # returns 1 on insert and 2 on update with change
|
log.debug(result_update.rowcount) # returns 1 on insert and 2 on update with change
|
||||||
log.debug(result_update.lastrowid) # returns last row ID on insert and update with a change and returns 0 if nothing changed
|
log.debug(result_update.lastrowid) # returns last row ID on insert and update with a change and returns 0 if nothing changed
|
||||||
return False
|
# NOTE: Returning None seems to make more sense. There were no errors. Just nothing needed to be updated.
|
||||||
|
return None # False was False until 2022-03-16
|
||||||
return False
|
return False
|
||||||
# ### END ### Core Help CRUD ### sql_update() ###
|
# ### END ### Core Help CRUD ### sql_update() ###
|
||||||
|
|
||||||
|
|||||||
113
app/methods/c_idaa_methods.py
Normal file
113
app/methods/c_idaa_methods.py
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
import datetime, json, pprint, pytz, random, requests, secrets, string, time
|
||||||
|
|
||||||
|
from typing import Dict, List, Optional, Set, Union
|
||||||
|
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.lib_general import log, logging, logger_reset, secure_hash_string, verify_secure_hash_string
|
||||||
|
|
||||||
|
|
||||||
|
# ### BEGIN ### API Client: IDAA Methods ### refresh_person_group() ###
|
||||||
|
# Updated 2022-03-16
|
||||||
|
@logger_reset
|
||||||
|
def refresh_person_group(
|
||||||
|
person_id: int = None,
|
||||||
|
):
|
||||||
|
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
|
log.debug(locals())
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
sql_person_id = ''
|
||||||
|
if person_id:
|
||||||
|
data['person_id'] = person_id
|
||||||
|
sql_person_id = f'AND `person`.id = :person_id'
|
||||||
|
log.info(f'Updating membership group for Person ID: {person_id}')
|
||||||
|
else:
|
||||||
|
log.info('Updating membership group for all person records.')
|
||||||
|
|
||||||
|
|
||||||
|
sql = f"""
|
||||||
|
UPDATE person
|
||||||
|
INNER JOIN membership_person ON person.id = membership_person.person_id
|
||||||
|
SET person.enable = 1, person.group = 'pending_member'
|
||||||
|
WHERE person.account_id = 13
|
||||||
|
AND membership_person.end_on >= NOW()
|
||||||
|
AND person.status = 'pending'
|
||||||
|
{sql_person_id};
|
||||||
|
"""
|
||||||
|
if person_update_result := sql_update(sql=sql, data=data, log_lvl=logging.WARNING):
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for pending members')
|
||||||
|
elif person_update_result is None:
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for pending members, but no records needed to be updated')
|
||||||
|
else:
|
||||||
|
log.warning(f'The SQL UPDATE of person table record(s) failed for pending members')
|
||||||
|
log.debug(person_update_result)
|
||||||
|
|
||||||
|
sql = f"""
|
||||||
|
UPDATE person
|
||||||
|
INNER JOIN membership_person ON person.id = membership_person.person_id
|
||||||
|
SET person.enable = 1, person.group = 'current_member'
|
||||||
|
WHERE person.account_id = 13
|
||||||
|
AND membership_person.end_on >= NOW()
|
||||||
|
AND (person.status IS NULL OR person.status = '' OR person.status = 'approved' OR person.status = 'unknown')
|
||||||
|
{sql_person_id};
|
||||||
|
"""
|
||||||
|
if person_update_result := sql_update(sql=sql, data=data, log_lvl=logging.WARNING):
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for current members')
|
||||||
|
elif person_update_result is None:
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for current members, but no records needed to be updated')
|
||||||
|
else:
|
||||||
|
log.warning(f'The SQL UPDATE of person table record(s) failed for current members')
|
||||||
|
log.debug(person_update_result)
|
||||||
|
|
||||||
|
sql = f"""
|
||||||
|
UPDATE person
|
||||||
|
INNER JOIN membership_person ON person.id = membership_person.person_id
|
||||||
|
SET person.group = 'inactive_member'
|
||||||
|
WHERE person.account_id = 13
|
||||||
|
AND membership_person.end_on < NOW()
|
||||||
|
AND membership_person.end_on >= DATE(NOW() - INTERVAL 4 WEEK)
|
||||||
|
{sql_person_id};
|
||||||
|
"""
|
||||||
|
if person_update_result := sql_update(sql=sql, data=data, log_lvl=logging.WARNING):
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for inactive members')
|
||||||
|
elif person_update_result is None:
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for inactive members, but no records needed to be updated')
|
||||||
|
else:
|
||||||
|
log.warning(f'The SQL UPDATE of person table record(s) failed for inactive members')
|
||||||
|
log.debug(person_update_result)
|
||||||
|
|
||||||
|
sql = f"""
|
||||||
|
UPDATE person
|
||||||
|
INNER JOIN membership_person ON person.id = membership_person.person_id
|
||||||
|
SET person.group = 'suspended_member'
|
||||||
|
WHERE person.account_id = 13
|
||||||
|
AND membership_person.end_on < DATE(NOW() - INTERVAL 4 WEEK)
|
||||||
|
{sql_person_id};
|
||||||
|
"""
|
||||||
|
if person_update_result := sql_update(sql=sql, data=data, log_lvl=logging.WARNING):
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for suspended members')
|
||||||
|
elif person_update_result is None:
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for suspended members, but no records needed to be updated')
|
||||||
|
else:
|
||||||
|
log.warning(f'The SQL UPDATE of person table record(s) failed for suspended members')
|
||||||
|
log.debug(person_update_result)
|
||||||
|
|
||||||
|
sql = f"""
|
||||||
|
UPDATE person
|
||||||
|
LEFT JOIN membership_person ON person.id = membership_person.person_id
|
||||||
|
SET person.group = 'not_member'
|
||||||
|
WHERE person.account_id = 13
|
||||||
|
AND membership_person.id IS NULL
|
||||||
|
{sql_person_id};
|
||||||
|
"""
|
||||||
|
if person_update_result := sql_update(sql=sql, data=data, log_lvl=logging.WARNING):
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for not members')
|
||||||
|
elif person_update_result is None:
|
||||||
|
log.warning(f'Finished the SQL UPDATE of person table record(s) for not members, but no records needed to be updated')
|
||||||
|
else:
|
||||||
|
log.warning(f'The SQL UPDATE of person table record(s) failed for not members')
|
||||||
|
log.debug(person_update_result)
|
||||||
|
|
||||||
|
return True
|
||||||
|
# ### END ### API Client: IDAA Methods ### refresh_person_group() ###
|
||||||
@@ -7,6 +7,7 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v
|
|||||||
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, secure_hash_string, verify_secure_hash_string
|
from app.lib_general import log, logging, logger_reset, secure_hash_string, verify_secure_hash_string
|
||||||
|
|
||||||
|
from app.methods.c_idaa_methods import refresh_person_group
|
||||||
from app.methods.person_methods import create_person_kiss, get_person_rec_list, get_person_rec_w_external_id, load_person_obj, update_person_kiss
|
from app.methods.person_methods import create_person_kiss, get_person_rec_list, get_person_rec_w_external_id, load_person_obj, update_person_kiss
|
||||||
from app.methods.membership_person_methods import create_membership_person_obj, update_membership_person_obj
|
from app.methods.membership_person_methods import create_membership_person_obj, update_membership_person_obj
|
||||||
|
|
||||||
@@ -465,8 +466,12 @@ def modify_contact_id(contact_id: str, field_list: list=[], custom_field_id: str
|
|||||||
def create_update_aether_person(
|
def create_update_aether_person(
|
||||||
cvent_contact_id: str,
|
cvent_contact_id: str,
|
||||||
cvent_contact_obj: dict,
|
cvent_contact_obj: dict,
|
||||||
|
|
||||||
account_id: str,
|
account_id: str,
|
||||||
person_id: str=None,
|
person_id: str = None,
|
||||||
|
|
||||||
|
idaa_refresh_person_group: bool = False,
|
||||||
|
|
||||||
log_lvl: int = logging.INFO, # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
log_lvl: int = logging.INFO, # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
):
|
):
|
||||||
log.setLevel(log_lvl)
|
log.setLevel(log_lvl)
|
||||||
@@ -783,6 +788,9 @@ def create_update_aether_person(
|
|||||||
person_data['membership_person'] = membership_person_data
|
person_data['membership_person'] = membership_person_data
|
||||||
log.debug(json.dumps(person_data, indent=2, default=str))
|
log.debug(json.dumps(person_data, indent=2, default=str))
|
||||||
|
|
||||||
|
if idaa_refresh_person_group:
|
||||||
|
refresh_person_group(person_id=person_id)
|
||||||
|
|
||||||
# person_obj = load_person_obj(person_id=person_id, inc_address=True, inc_contact=True, inc_membership_person=True, inc_membership_person_type=True, inc_user=True)
|
# person_obj = load_person_obj(person_id=person_id, inc_address=True, inc_contact=True, inc_membership_person=True, inc_membership_person_type=True, inc_user=True)
|
||||||
# log.debug(person_obj)
|
# log.debug(person_obj)
|
||||||
|
|
||||||
|
|||||||
@@ -9,21 +9,36 @@ from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select,
|
|||||||
|
|
||||||
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.c_idaa_methods import refresh_person_group
|
||||||
|
|
||||||
from app.models.response_models import Resp_Body_Base, mk_resp
|
from app.models.response_models import Resp_Body_Base, mk_resp
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
|
|
||||||
# ### BEGIN ### API Client: IDAA ### refresh_membership_status() ###
|
# ### BEGIN ### API Client: IDAA ### r_refresh_membership_status() ###
|
||||||
# Updated 2022-02-01
|
# Updated 2022-03-16
|
||||||
@router.get('/refresh_membership_status', response_model=Resp_Body_Base)
|
@router.get('/refresh_membership_status', response_model=Resp_Body_Base)
|
||||||
async def refresh_membership_status(
|
async def r_refresh_membership_status(
|
||||||
|
person_id: str = Query(None, min_length=11, max_length=22),
|
||||||
|
|
||||||
commons: Common_Route_Params = Depends(common_route_params),
|
commons: Common_Route_Params = Depends(common_route_params),
|
||||||
):
|
):
|
||||||
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
|
if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass
|
||||||
|
elif person_id is None: pass
|
||||||
|
else: return mk_resp(data=None, status_code=404, response=commons.response) # Not Found
|
||||||
|
|
||||||
|
if refresh_person_group_result := refresh_person_group(person_id=person_id):
|
||||||
|
return mk_resp(data=True, status_message='Updated person records with current membership status group.', response=commons.response)
|
||||||
|
else:
|
||||||
|
return mk_resp(data=True, status_code=400, status_message='Person records were not updated with the current membership status group.', response=commons.response) # Bad Request
|
||||||
|
|
||||||
|
# NOTE: Everything below is old
|
||||||
|
|
||||||
# sql = f"""
|
# sql = f"""
|
||||||
# UPDATE user
|
# UPDATE user
|
||||||
# INNER JOIN person ON user.id = person.user_id
|
# INNER JOIN person ON user.id = person.user_id
|
||||||
@@ -170,4 +185,4 @@ async def refresh_membership_status(
|
|||||||
log.warning(f'The SQL UPDATE of person table records failed for not members')
|
log.warning(f'The SQL UPDATE of person table records failed for not members')
|
||||||
|
|
||||||
return mk_resp(data=True, status_message='Updated person and user records with current membership status', response=commons.response)
|
return mk_resp(data=True, status_message='Updated person and user records with current membership status', response=commons.response)
|
||||||
# ### END ### API Client: IDAA ### refresh_membership_status() ###
|
# ### END ### API Client: IDAA ### r_refresh_membership_status() ###
|
||||||
|
|||||||
@@ -200,6 +200,12 @@ async def get_person_w_email(
|
|||||||
email: str = Query(..., min_length=5, max_length=75),
|
email: str = Query(..., min_length=5, max_length=75),
|
||||||
person_id: str = Query(None, min_length=11, max_length=22),
|
person_id: str = Query(None, min_length=11, max_length=22),
|
||||||
|
|
||||||
|
inc_address: bool = False,
|
||||||
|
inc_contact: bool = False,
|
||||||
|
inc_user: bool = False,
|
||||||
|
inc_user_role_list: bool = False,
|
||||||
|
return_obj: bool = True,
|
||||||
|
|
||||||
commons: Common_Route_Params = Depends(common_route_params),
|
commons: Common_Route_Params = Depends(common_route_params),
|
||||||
):
|
):
|
||||||
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
@@ -230,6 +236,7 @@ async def get_person_w_email(
|
|||||||
cvent_contact_obj = cvent_person_contact_obj,
|
cvent_contact_obj = cvent_person_contact_obj,
|
||||||
account_id = account_id,
|
account_id = account_id,
|
||||||
person_id = person_id,
|
person_id = person_id,
|
||||||
|
idaa_refresh_person_group = True,
|
||||||
):
|
):
|
||||||
# person_obj = create_update_aether_person_result
|
# person_obj = create_update_aether_person_result
|
||||||
person_id = create_update_aether_person_result
|
person_id = create_update_aether_person_result
|
||||||
@@ -271,7 +278,7 @@ async def get_person_w_external_id(
|
|||||||
inc_contact: bool = False,
|
inc_contact: bool = False,
|
||||||
inc_user: bool = False,
|
inc_user: bool = False,
|
||||||
inc_user_role_list: bool = False,
|
inc_user_role_list: bool = False,
|
||||||
return_obj: Optional[bool] = True,
|
return_obj: bool = True,
|
||||||
|
|
||||||
commons: Common_Route_Params = Depends(common_route_params),
|
commons: Common_Route_Params = Depends(common_route_params),
|
||||||
):
|
):
|
||||||
@@ -302,6 +309,7 @@ async def get_person_w_external_id(
|
|||||||
cvent_contact_obj = cvent_person_contact_obj,
|
cvent_contact_obj = cvent_person_contact_obj,
|
||||||
account_id = account_id,
|
account_id = account_id,
|
||||||
person_id = person_id,
|
person_id = person_id,
|
||||||
|
idaa_refresh_person_group = True,
|
||||||
):
|
):
|
||||||
# person_obj = create_update_aether_person_result
|
# person_obj = create_update_aether_person_result
|
||||||
person_id = create_update_aether_person_result
|
person_id = create_update_aether_person_result
|
||||||
|
|||||||
Reference in New Issue
Block a user