From cd252b9de35b95399b7108cb8a0644814355b46b Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Thu, 8 Feb 2024 20:25:13 -0500 Subject: [PATCH] New Sponsorships module. Related updates. --- app/db_sql.py | 7 ++ app/main.py | 6 +- app/models/account_cfg_models.py | 1 + app/models/common_field_schema.py | 2 + app/models/event_models.py | 1 + app/models/sponsorship_cfg_models.py | 100 ++++++++++++++++++++++ app/models/sponsorship_models.py | 120 +++++++++++++++++++++++++++ app/routers/api_crud.py | 104 ++++++++++++++--------- 8 files changed, 302 insertions(+), 39 deletions(-) create mode 100644 app/models/sponsorship_cfg_models.py create mode 100644 app/models/sponsorship_models.py diff --git a/app/db_sql.py b/app/db_sql.py index f32d863..dcb5189 100644 --- a/app/db_sql.py +++ b/app/db_sql.py @@ -1299,6 +1299,13 @@ def get_id_random( # ### END ### API DB SQL ### get_id_random() ### +@logger_reset +def reset_redis(): + r = redis.Redis(host=settings.REDIS['server'], port=settings.REDIS['port'], db=7, password=None, decode_responses=True) + r.flushdb() + return True + + # ### BEGIN ### API DB SQL ### lookup_id_random_pop() ### # Look up and resolve id_random values to their id # Remove the unneeded *_id_random key from the dict diff --git a/app/main.py b/app/main.py index 45f8f2f..e2f5f76 100644 --- a/app/main.py +++ b/app/main.py @@ -22,7 +22,7 @@ from app.routers import aether_cfg, api_crud, api, importing, sql, account, acti # from app.routers import aether_cfg, sql -from app.db_sql import sql_select # , sql_connect +from app.db_sql import sql_select, reset_redis # , sql_connect print('### **** *** ** * The Aether API v4 using FastAPI is loading... * ** *** **** ###') @@ -499,6 +499,10 @@ async def fastapi_root(response: Response = Response): log.critical('This is critical') # 50 CRITICAL log.info('^^^') + log.warning('Resetting Redis...') + reset_redis() + log.info('Reset Redis') + response_data = {} response_data['message'] = 'This is One Sky IT\'s Aether API root (FastAPI).' diff --git a/app/models/account_cfg_models.py b/app/models/account_cfg_models.py index aaabf82..7009544 100644 --- a/app/models/account_cfg_models.py +++ b/app/models/account_cfg_models.py @@ -23,6 +23,7 @@ class Account_Cfg_Base(BaseModel): id: Optional[int] = Field( alias = 'account_cfg_id' ) + account_id_random: Optional[str] account_id: Optional[int] diff --git a/app/models/common_field_schema.py b/app/models/common_field_schema.py index 7fd6790..a14a064 100644 --- a/app/models/common_field_schema.py +++ b/app/models/common_field_schema.py @@ -79,6 +79,8 @@ base_fields['post_comment_id_random'] = xxx_id_random_field_schema base_fields['product_id_random'] = xxx_id_random_field_schema base_fields['site_id_random'] = xxx_id_random_field_schema base_fields['site_domain_id_random'] = xxx_id_random_field_schema +base_fields['sponsorship_cfg_id_random'] = xxx_id_random_field_schema +base_fields['sponsorship_id_random'] = xxx_id_random_field_schema base_fields['user_id_random'] = xxx_id_random_field_schema base_fields['user_role_id_random'] = xxx_id_random_field_schema diff --git a/app/models/event_models.py b/app/models/event_models.py index b5c72fc..895706f 100644 --- a/app/models/event_models.py +++ b/app/models/event_models.py @@ -114,6 +114,7 @@ class Event_Base(BaseModel): attend_phone: Optional[str] attend_phone_passcode: Optional[str] attend_text: Optional[str] + attend_json: Optional[Union[Json, None]] # NOT FINISHED YET diff --git a/app/models/sponsorship_cfg_models.py b/app/models/sponsorship_cfg_models.py new file mode 100644 index 0000000..e03986b --- /dev/null +++ b/app/models/sponsorship_cfg_models.py @@ -0,0 +1,100 @@ +import datetime, pytz + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator + +from app.db_sql import redis_lookup_id_random +from app.lib_general import log, logging + +from app.models.common_field_schema import base_fields, default_num_bytes + + +# ### BEGIN ### API Sponsorship Cfg Models ### Sponsorship_Cfg_Base() ### +class Sponsorship_Cfg_Base(BaseModel): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + id_random: Optional[str] = Field( + **base_fields['account_cfg_id_random'], + alias = 'account_cfg_id_random', + ) + id: Optional[int] = Field( + alias = 'account_cfg_id' + ) + + account_id_random: Optional[str] + account_id: Optional[int] + + code: Optional[str] + name: Optional[str] + description: Optional[str] + + for_type: Optional[str] + for_id: Optional[int] + + # For levels in a JSON object list format. A level option should contain: num, str, name, desc. Example: {"num": 1, "code": "platinum", "name": "Platinum", "desc": "Platinum Sponsorship"} + level_li_json: Optional[Union[Json, None]] + + # For options in a JSON object list format. An option should contain: id, code, name, desc, note. Example: {"id": 1, "code": "option_1", "name": "Option 1", "desc": "Option 1 Description", "note": "Option 1 Note"} + option_li_json: Optional[Union[Json, None]] + + # These are the common dates and deadlines used. They can be overridden by the deadline_li_json. + start_datetime: Optional[datetime.datetime] = None + end_datetime: Optional[datetime.datetime] = None + start_deadline: Optional[datetime.datetime] = None + end_deadline: Optional[datetime.datetime] = None + payment_deadline: Optional[datetime.datetime] = None + rsvp_deadline: Optional[datetime.datetime] = None + + # For additional dates and deadlines in a JSON object list format. Example: {"early_bird": "2025-01-01", "regular": "2025-02-01", "late": "2025-03-01"} + schedule_datetime_li_json: Optional[Union[Json, None]] + + default_no_reply_email: Optional[str] + default_no_reply_name: Optional[str] + default_reply_to_email: Optional[str] + default_reply_to_name: Optional[str] + + # This is for a confirmation email to be sent to a staff email address + confirm_email: Optional[str] + confirm_name: Optional[str] + + # For help options in a JSON object list format. Options for who to contact for help or support in a list format. A help option should contain: purpose, name, email, subject. Example: {"purpose": "sponsorship", "name": "John Doe", "email": ", "subject": "Sponsorship Help"} + help_li_json: Optional[Union[Json, None]] + + # For additional configuration options in a JSON object format. + cfg_json: Optional[Union[Json, None]] + + # The standard fields: + enable: Optional[bool] + hide: Optional[bool] + priority: Optional[bool] + sort: Optional[int] + group: Optional[str] + notes: Optional[str] + created_on: Optional[datetime.datetime] = None + updated_on: Optional[datetime.datetime] = None + + # Including other related objects + # example_cfg: Optional[Example_Cfg_Base] + + _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) + + @validator('id', always=True) + def account_cfg_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='account_cfg') + return None + + @validator('account_id', always=True) + def account_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('account_id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='account') + return None + + class Config: + underscore_attrs_are_private = True + allow_population_by_field_name = True + fields = base_fields +# ### END ### API Sponsorship Cfg Models ### Sponsorship_Cfg_Base() ### diff --git a/app/models/sponsorship_models.py b/app/models/sponsorship_models.py new file mode 100644 index 0000000..78fafce --- /dev/null +++ b/app/models/sponsorship_models.py @@ -0,0 +1,120 @@ +import datetime, pytz + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator + +from app.db_sql import redis_lookup_id_random +from app.lib_general import log, logging + +from app.models.common_field_schema import base_fields, default_num_bytes +# from app.models.sponsorship_cfg_models import Sponsorship_Cfg_Base + + +# ### BEGIN ### API Sponsorship Models ### Sponsorship_Base() ### +class Sponsorship_Base(BaseModel): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + id_random: Optional[str] = Field( + **base_fields['sponsorship_id_random'], + alias = 'sponsorship_id_random', + ) + id: Optional[int] = Field( + alias = 'sponsorship_id' + ) + + account_id_random: Optional[str] + account_id: Optional[int] + + sponsorship_cfg_id_random: Optional[str] + sponsorship_cfg_id: Optional[int] + + name: Optional[str] + description: Optional[str] + + # This should be required for the confirmation email to be sent to the sponsor. The person's name and email address in the "To" address line. + poc_email_name: Optional[str] + poc_email: Optional[str] + + # For the sponsoring organization, person, and point of contact in a JSON object format. The Aether standard field names should be used. Examples: name, given_name, family_name, full_name, full_name_override, email, phone, address_line_1, city, state_province, postal_code, country, etc. + # Example poc_json: {"given_name": "John", "family_name": "Doe", "full_name": "John Doe", "full_name_override": "John Doe", "email": "john.doe@example.com"} + organization_json: Optional[Union[Json, None]] + person_json: Optional[Union[Json, None]] + poc_json: Optional[Union[Json, None]] + + # For the logo and image in a JSON object format. The Aether standard field names should be used. Examples: url, url_text, alt_text, width, height, etc. + logo_li_json: Optional[Union[Json, None]] + + # For media that have different predefined purposes in a JSON object list format. The Aether standard field names should be used. Examples: purpose, (file) type, (file) extension, (file) name, url, url_text, alt_text, width, height, size (in bytes), etc. + media_li_json: Optional[Union[Json, None]] + + # For social media in a JSON object format. The Aether standard field names should be used. Examples: url, url_text, icon, etc. + social_li_json: Optional[Union[Json, None]] + + # For a (simple and short) guest list in a JSON object list format. A guest person should contain: given_name, family_name, full_name, email, phone, etc. + # Example: [{"given_name": "John", "family_name": "Doe", "full_name": "John Doe", "email": "john.doe@example.com"}, {"given_name": "Jane", "family_name": "Doe", "full_name": "Jane Doe", "email": "jane.doe@example.com"}] + # Example 2: [{"full_name": "Albert Einstein", "email": "albert.einstein@example.com"}, {"full_name": "Marie Curie", "email": "marie.curie@example.com"}] + guest_li_json: Optional[Union[Json, None]] + + level_num: Optional[int] + level_str: Optional[str] + + # For their selected sponsorship level in a JSON object format. A level option should contain: num, code, name, desc. Example: {"num": 1, "code": "platinum", "name": "Platinum", "desc": "Platinum Sponsorship"} + slct_level_json: Optional[Union[Json, None]] + + # For their selected options in a JSON object list format. An option should contain: id, code, name, desc, note. Example: {"id": 1, "code": "option_1", "name": "Option 1", "desc": "Option 1 Description", "note": "Option 1 Note"} + slct_option_li_json: Optional[Union[Json, None]] + + # Amount as an integer in cents. Example: 1000 = $10.00 + amount: Optional[int] + paid: Optional[bool] + + access_key: Optional[str] # This is for a unique access key or passcode to be used for a sponsorship page edit access. + + # Comments from the sponsor. Assumed to be the POC. This is for internal use only. + comments: Optional[str] + + cfg_json: Optional[Union[Json, None]] + meta_data: Optional[str] + + # The standard fields: + enable: Optional[bool] + hide: Optional[bool] + priority: Optional[bool] + sort: Optional[int] + group: Optional[str] + notes: Optional[str] + created_on: Optional[datetime.datetime] = None + updated_on: Optional[datetime.datetime] = None + + # Including other related objects + # example_cfg: Optional[Example_Cfg_Base] + + _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) + + @validator('id', always=True) + def account_cfg_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='account_cfg') + return None + + @validator('account_id', always=True) + def account_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('account_id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='account') + return None + + @validator('sponsorship_cfg_id', always=True) + def sponsorship_cfg_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('sponsorship_cfg_id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='sponsorship_cfg') + return None + + class Config: + underscore_attrs_are_private = True + allow_population_by_field_name = True + fields = base_fields +# ### END ### API Sponsorship Models ### Sponsorship_Base() ### diff --git a/app/routers/api_crud.py b/app/routers/api_crud.py index aa9fbe8..0df690c 100644 --- a/app/routers/api_crud.py +++ b/app/routers/api_crud.py @@ -57,6 +57,8 @@ from app.models.post_models import * from app.models.post_comment_models import * from app.models.site_models import * from app.models.site_domain_models import * +from app.models.sponsorship_cfg_models import * +from app.models.sponsorship_models import * from app.models.user_models import * from app.models.user_role_models import * @@ -70,66 +72,40 @@ obj_type_li = {} #obj_type_li['api_key'] = {'table_name': 'api_key', 'base_name': Api_Key_Base} #obj_type_li['api_token'] = {'table_name': 'api_token', 'base_name': Api_Token_Base} + +# ### Core module objects obj_type_li['account'] = {'table_name': 'account', 'tbl_name_update': 'account', 'base_name': Account_Base} obj_type_li['account_cfg'] = {'table_name': 'v_account_cfg', 'tbl_name_update': 'account_cfg', 'base_name': Account_Cfg_Base} # NOTE check view name: *_detail? obj_type_li['activity_log'] = {'table_name': 'activity_log', 'tbl_name_update': 'activity_log', 'base_name': Activity_Log_Base} obj_type_li['address'] = {'table_name': 'v_address', 'tbl_name_update': 'address', 'base_name': Address_Base} -obj_type_li['archive'] = {'table_name': 'v_archive', 'table_name_alt': 'v_archive_w_content_count', 'tbl_name_update': 'archive', 'base_name': Archive_Base} -obj_type_li['archive_content'] = {'table_name': 'v_archive_content', 'tbl_name_update': 'archive_content', 'base_name': Archive_Content_Base} #obj_type_li['change_log'] = {'table_name': 'change_log', 'tbl_name_update': 'change_log', 'base_name': Change_Log_Base} obj_type_li['contact'] = {'table_name': 'v_contact', 'tbl_name_update': 'contact', 'base_name': Contact_Base} -obj_type_li['cont_edu_cert'] = {'table_name': 'v_cont_edu_cert', 'tbl_name_update': 'cont_edu_cert', 'base_name': Cont_Edu_Cert_Base} -obj_type_li['cont_edu_cert_person'] = {'table_name': 'v_cont_edu_cert_person', 'tbl_name_update': 'cont_edu_cert_person', 'base_name': Cont_Edu_Cert_Person_Base} -obj_type_li['event'] = {'table_name': 'v_event', 'table_name_alt': 'v_event_w_file_count', 'tbl_name_update': 'event', 'base_name': Event_Base, 'base_name_alt': Event_Meeting_Flat_Base} -obj_type_li['event_abstract'] = {'table_name': 'v_event_abstract', 'tbl_name_update': 'event_abstract', 'base_name': Event_Abstract_In} -obj_type_li['event_badge'] = {'table_name': 'event_badge', 'table_name_alt': 'v_event_badge', 'tbl_name_update': 'event_badge', 'base_name': Event_Badge_Base} -#obj_type_li['event_badge_log'] = {'table_name': 'event_badge_log', 'tbl_name_update': 'event_badge_log', 'base_name': Event_Badge_Log_Base} -#obj_type_li['event_badge_template'] = {'table_name': 'event_badge_template', 'tbl_name_update': 'event_badge_template', 'base_name': Event_Badge_Template_Base} -#obj_type_li['event_device'] = {'table_name': 'event_device', 'tbl_name_update': 'event_device', 'base_name': Event_Device_Base} -obj_type_li['event_exhibit'] = {'table_name': 'v_event_exhibit', 'tbl_name_update': 'event_exhibit', 'base_name': Event_Exhibit_Base} # NOTE check view name: *_detail? -obj_type_li['event_exhibit_tracking'] = {'table_name': 'v_event_exhibit_tracking', 'tbl_name_update': 'event_exhibit_tracking', 'base_name': Event_Exhibit_Tracking_Base} -# NOTE: Using v_event_file_simple instead of v_event_file because of linking with for_type and for_id versus event_id, event_session_id, event_presenter_id, etc. 2022-08-19 -# NOTE: This will not pull in linked to details like a session name, presentation time, or presenter name. -obj_type_li['event_file'] = {'table_name': 'v_event_file_simple', 'tbl_name_update': 'event_file_simple', 'base_name': Event_File_Base} # Should this eventually be changed to event_hosted_file -obj_type_li['event_location'] = {'table_name': 'v_event_location', 'tbl_name_update': 'event_location', 'base_name': Event_Location_Base} -obj_type_li['event_person'] = {'table_name': 'v_event_person', 'tbl_name_update': 'event_person', 'base_name': Event_Person_Base} -obj_type_li['event_person_tracking'] = {'table_name': 'v_event_person_tracking', 'tbl_name_update': 'event_person_tracking', 'base_name': Event_Person_Tracking_Base} -obj_type_li['event_presentation'] = {'table_name': 'v_event_presentation', 'tbl_name_update': 'event_presentation', 'base_name': Event_Presentation_Base} -obj_type_li['event_presenter'] = {'table_name': 'v_event_presenter', 'tbl_name_update': 'event_presenter', 'base_name': Event_Presenter_Base} -obj_type_li['event_registration'] = {'table_name': 'v_event_registration', 'tbl_name_update': 'event_registration', 'base_name': Event_Registration_Base} -obj_type_li['event_session'] = {'table_name': 'v_event_session', 'tbl_name_update': 'event_session', 'base_name': Event_Session_Base, 'exclude_for_db': {'poc_person_id', 'file_count', 'internal_use_count', 'enable_from', 'enable_to', 'event_name', 'event_start_datetime', 'event_end_datetime', 'event_location_name', 'event_track_name', 'event_abstract_list', 'event_badge_list', 'event_device_list', 'event_file_list', 'event_file_internal_use_list', 'event_location', 'event_location_list', 'event_person_list', 'event_presenter_cat', 'event_presentation_list', 'event_presenter_list', 'event_track', 'poc_event_person'}} -obj_type_li['event_track'] = {'table_name': 'v_event_track', 'tbl_name_update': 'event_track', 'base_name': Event_Track_Base} -obj_type_li['grant'] = {'table_name': 'v_grant', 'tbl_name_update': 'grant', 'base_name': Grant_Base} + obj_type_li['hosted_file'] = {'table_name': 'v_hosted_file', 'tbl_name_update': 'hosted_file', 'base_name': Hosted_File_Base} #obj_type_li['hosted_file_link'] = {'table_name': 'hosted_file_link', 'tbl_name_update': 'hosted_file_link', 'base_name': Hosted_File_Link_Base} -obj_type_li['journal'] = {'table_name': 'v_journal', 'tbl_name_update': 'journal', 'base_name': Journal_Base} -obj_type_li['journal_entry'] = {'table_name': 'v_journal_entry', 'tbl_name_update': 'journal_entry', 'base_name': Journal_Entry_Base} -#obj_type_li['log'] = {'table_name': 'log', 'tbl_name_update': 'log', 'base_name': Log_Base} #'v_log' + obj_type_li['log_client_viewing'] = {'table_name': 'log_client_viewing', 'tbl_name_update': 'log_client_viewing', 'base_name': Log_Client_Viewing_Base} -obj_type_li['membership_cfg'] = {'table_name': 'v_membership_cfg', 'tbl_name_update': 'membership_cfg', 'base_name': Membership_Cfg_Base} -obj_type_li['membership_group'] = {'table_name': 'v_membership_group', 'tbl_name_update': 'membership_group', 'base_name': Membership_Group_Base} -obj_type_li['membership_person_group'] = {'table_name': 'v_membership_person_group', 'tbl_name_update': 'membership_person_group', 'base_name': Membership_Person_Group_Base} -obj_type_li['membership_person'] = {'table_name': 'v_membership_person', 'tbl_name_update': 'membership_person', 'base_name': Membership_Person_Base} -obj_type_li['membership_person_profile'] = {'table_name': 'v_membership_person_profile', 'tbl_name_update': 'membership_person_profile', 'base_name': Membership_Person_Profile_Base} -obj_type_li['membership_type'] = {'table_name': 'v_membership_type', 'tbl_name_update': 'membership_type', 'base_name': Membership_Type_Base} -obj_type_li['membership_person_type'] = {'table_name': 'v_membership_person_type', 'tbl_name_update': 'membership_person_type', 'base_name': Membership_Person_Type_Base} -#obj_type_li['message'] = {'table_name': 'message', 'tbl_name_update': 'message', 'base_name': Message_Base} #'v_message' + obj_type_li['order'] = {'table_name': 'v_order', 'tbl_name_update': 'order', 'base_name': Order_Base} obj_type_li['order_cart'] = {'table_name': 'v_order_cart', 'tbl_name_update': 'order_cart', 'base_name': Order_Cart_Base} obj_type_li['order_cart_line'] = {'table_name': 'v_order_cart_line', 'tbl_name_update': 'order_cart_line', 'base_name': Order_Cart_Line_Base} obj_type_li['order_line'] = {'table_name': 'v_order_line', 'tbl_name_update': 'order_line', 'base_name': Order_Line_Base} #obj_type_li['order_transaction'] = {'table_name': 'order_transaction', 'tbl_name_update': 'order_transaction', 'base_name': Order_Transaction_Base} + obj_type_li['organization'] = {'table_name': 'v_organization', 'tbl_name_update': 'organization', 'base_name': Organization_Base} + obj_type_li['page'] = {'table_name': 'page', 'tbl_name_update': 'page', 'base_name': Page_Base} + obj_type_li['person'] = {'table_name': 'v_person', 'tbl_name_update': 'person', 'base_name': Person_Base} -obj_type_li['post'] = {'table_name': 'v_post', 'tbl_name_update': 'post', 'base_name': Post_Base} # NOTE check view name: *_detail? -obj_type_li['post_comment'] = {'table_name': 'v_post_comment', 'tbl_name_update': 'post_comment', 'base_name': Post_Comment_Base} # NOTE check view name: *_detail? -obj_type_li['product'] = {'table_name': 'v_product', 'tbl_name_update': 'product', 'base_name': Product_Base} + obj_type_li['site'] = {'table_name': 'site', 'tbl_name_update': 'site', 'base_name': Site_Base} obj_type_li['site_domain'] = {'table_name': 'v_site_domain', 'tbl_name_update': 'site_domain', 'base_name': Site_Domain_Base} # NOTE check view name: *_detail? + obj_type_li['user'] = {'table_name': 'v_user', 'tbl_name_update': 'user', 'base_name': User_Base} obj_type_li['user_role'] = {'table_name': 'v_user_role', 'tbl_name_update': 'user_role', 'base_name': User_Role_Base} # NOTE check view name: *_detail? + +# ### Common shared lookup objects obj_type_li['lu_country'] = {'table_name': 'lu_country', 'tbl_name_update': 'lu_country', 'base_name': None} obj_type_li['lu_country_subdivision'] = {'table_name': 'lu_country_subdivision', 'tbl_name_update': 'lu_country_subdivision', 'base_name': None} #obj_type_li['lu_education_degree'] = {'table_name': 'lu_education_degree', 'tbl_name_update': 'lu_education_degree', 'base_name': Lu_Education_Degree_Base} @@ -150,6 +126,58 @@ obj_type_li['lu_time_zone'] = {'table_name': 'v_lu_time_zone', 'tbl_name_update' #obj_type_li['lu_user_role'] = {'table_name': 'lu_user_role', 'tbl_name_update': 'lu_user_role', 'base_name': Lu_User_Role_Base} #obj_type_li['lu_user_status'] = {'table_name': 'lu_user_status', 'tbl_name_update': 'lu_user_status', 'base_name': Lu_User_Status_Base} + +# ### Additional module objects +obj_type_li['archive'] = {'table_name': 'v_archive', 'table_name_alt': 'v_archive_w_content_count', 'tbl_name_update': 'archive', 'base_name': Archive_Base} +obj_type_li['archive_content'] = {'table_name': 'v_archive_content', 'tbl_name_update': 'archive_content', 'base_name': Archive_Content_Base} + +obj_type_li['cont_edu_cert'] = {'table_name': 'v_cont_edu_cert', 'tbl_name_update': 'cont_edu_cert', 'base_name': Cont_Edu_Cert_Base} +obj_type_li['cont_edu_cert_person'] = {'table_name': 'v_cont_edu_cert_person', 'tbl_name_update': 'cont_edu_cert_person', 'base_name': Cont_Edu_Cert_Person_Base} +obj_type_li['event'] = {'table_name': 'v_event', 'table_name_alt': 'v_event_w_file_count', +'tbl_name_update': 'event', 'base_name': Event_Base, 'base_name_alt': Event_Meeting_Flat_Base} + +obj_type_li['event_abstract'] = {'table_name': 'v_event_abstract', 'tbl_name_update': 'event_abstract', 'base_name': Event_Abstract_In} +obj_type_li['event_badge'] = {'table_name': 'event_badge', 'table_name_alt': 'v_event_badge', 'tbl_name_update': 'event_badge', 'base_name': Event_Badge_Base} +#obj_type_li['event_badge_log'] = {'table_name': 'event_badge_log', 'tbl_name_update': 'event_badge_log', 'base_name': Event_Badge_Log_Base} +#obj_type_li['event_badge_template'] = {'table_name': 'event_badge_template', 'tbl_name_update': 'event_badge_template', 'base_name': Event_Badge_Template_Base} +#obj_type_li['event_device'] = {'table_name': 'event_device', 'tbl_name_update': 'event_device', 'base_name': Event_Device_Base} +obj_type_li['event_exhibit'] = {'table_name': 'v_event_exhibit', 'tbl_name_update': 'event_exhibit', 'base_name': Event_Exhibit_Base} # NOTE check view name: *_detail? +obj_type_li['event_exhibit_tracking'] = {'table_name': 'v_event_exhibit_tracking', 'tbl_name_update': 'event_exhibit_tracking', 'base_name': Event_Exhibit_Tracking_Base} +# NOTE: Using v_event_file_simple instead of v_event_file because of linking with for_type and for_id versus event_id, event_session_id, event_presenter_id, etc. 2022-08-19 +# NOTE: This will not pull in linked to details like a session name, presentation time, or presenter name. +obj_type_li['event_file'] = {'table_name': 'v_event_file_simple', 'tbl_name_update': 'event_file_simple', 'base_name': Event_File_Base} # Should this eventually be changed to event_hosted_file +obj_type_li['event_location'] = {'table_name': 'v_event_location', 'tbl_name_update': 'event_location', 'base_name': Event_Location_Base} +obj_type_li['event_person'] = {'table_name': 'v_event_person', 'tbl_name_update': 'event_person', 'base_name': Event_Person_Base} +obj_type_li['event_person_tracking'] = {'table_name': 'v_event_person_tracking', 'tbl_name_update': 'event_person_tracking', 'base_name': Event_Person_Tracking_Base} +obj_type_li['event_presentation'] = {'table_name': 'v_event_presentation', 'tbl_name_update': 'event_presentation', 'base_name': Event_Presentation_Base} +obj_type_li['event_presenter'] = {'table_name': 'v_event_presenter', 'tbl_name_update': 'event_presenter', 'base_name': Event_Presenter_Base} +obj_type_li['event_registration'] = {'table_name': 'v_event_registration', 'tbl_name_update': 'event_registration', 'base_name': Event_Registration_Base} +obj_type_li['event_session'] = {'table_name': 'v_event_session', 'tbl_name_update': 'event_session', 'base_name': Event_Session_Base, 'exclude_for_db': {'poc_person_id', 'file_count', 'internal_use_count', 'enable_from', 'enable_to', 'event_name', 'event_start_datetime', 'event_end_datetime', 'event_location_name', 'event_track_name', 'event_abstract_list', 'event_badge_list', 'event_device_list', 'event_file_list', 'event_file_internal_use_list', 'event_location', 'event_location_list', 'event_person_list', 'event_presenter_cat', 'event_presentation_list', 'event_presenter_list', 'event_track', 'poc_event_person'}} +obj_type_li['event_track'] = {'table_name': 'v_event_track', 'tbl_name_update': 'event_track', 'base_name': Event_Track_Base} + +obj_type_li['grant'] = {'table_name': 'v_grant', 'tbl_name_update': 'grant', 'base_name': Grant_Base} + +obj_type_li['journal'] = {'table_name': 'v_journal', 'tbl_name_update': 'journal', 'base_name': Journal_Base} +obj_type_li['journal_entry'] = {'table_name': 'v_journal_entry', 'tbl_name_update': 'journal_entry', 'base_name': Journal_Entry_Base} +#obj_type_li['log'] = {'table_name': 'log', 'tbl_name_update': 'log', 'base_name': Log_Base} #'v_log' + +obj_type_li['membership_cfg'] = {'table_name': 'v_membership_cfg', 'tbl_name_update': 'membership_cfg', 'base_name': Membership_Cfg_Base} +obj_type_li['membership_group'] = {'table_name': 'v_membership_group', 'tbl_name_update': 'membership_group', 'base_name': Membership_Group_Base} +obj_type_li['membership_person_group'] = {'table_name': 'v_membership_person_group', 'tbl_name_update': 'membership_person_group', 'base_name': Membership_Person_Group_Base} +obj_type_li['membership_person'] = {'table_name': 'v_membership_person', 'tbl_name_update': 'membership_person', 'base_name': Membership_Person_Base} +obj_type_li['membership_person_profile'] = {'table_name': 'v_membership_person_profile', 'tbl_name_update': 'membership_person_profile', 'base_name': Membership_Person_Profile_Base} +obj_type_li['membership_type'] = {'table_name': 'v_membership_type', 'tbl_name_update': 'membership_type', 'base_name': Membership_Type_Base} +obj_type_li['membership_person_type'] = {'table_name': 'v_membership_person_type', 'tbl_name_update': 'membership_person_type', 'base_name': Membership_Person_Type_Base} + +#obj_type_li['message'] = {'table_name': 'message', 'tbl_name_update': 'message', 'base_name': Message_Base} #'v_message' + +obj_type_li['post'] = {'table_name': 'v_post', 'tbl_name_update': 'post', 'base_name': Post_Base} # NOTE check view name: *_detail? +obj_type_li['post_comment'] = {'table_name': 'v_post_comment', 'tbl_name_update': 'post_comment', 'base_name': Post_Comment_Base} # NOTE check view name: *_detail? +obj_type_li['product'] = {'table_name': 'v_product', 'tbl_name_update': 'product', 'base_name': Product_Base} + +obj_type_li['sponsorship'] = {'table_name': 'v_sponsorship', 'tbl_name_update': 'sponsorship', 'base_name': Sponsorship_Base} # NOTE check view name: *_detail? +obj_type_li['sponsorship_cfg'] = {'table_name': 'v_sponsorship_cfg', 'tbl_name_update': 'sponsorship_cfg', 'base_name': Sponsorship_Cfg_Base} + #obj_type_li['stripe_customer'] = {'table_name': 'stripe_customer', 'tbl_name_update': 'stripe_customer', 'base_name': Stripe_Customer_Base} obj_type_li['stripe_log'] = {'table_name': 'stripe_log', 'tbl_name_update': 'stripe_log', 'base_name': Stripe_Log_Base_In}