Work on better way to update objects. A lot of work! Also a lot of clean up.

This commit is contained in:
Scott Idem
2021-06-10 18:31:53 -04:00
parent e45bb2fbcd
commit 19bba3d8a9
6 changed files with 233 additions and 12 deletions

View File

@@ -12,6 +12,7 @@ from app.models.account_cfg_models import Account_Cfg_Base
# from app.models.address_models import Address_Base
# from app.models.contact_models import Contact_Base
# from app.models.event_models import Event_Base
from app.models.fundraising_cfg_models import Fundraising_Cfg_Base
# from app.models.person_models import Person_Base
# from app.models.user_models import User_Base
@@ -48,15 +49,16 @@ class Account_Base(BaseModel):
archive_list: Optional[list] # Archive_Base()
contact_list: Optional[list] # Contact_Base()
event_list: Optional[list] # Event_Base()
fundraising_cfg: Optional[Fundraising_Cfg_Base]
journal_list: Optional[list] # Journal_Base()
order_list: Optional[list] # Order_Base()
organization_list: Optional[list] # Organization_Base()
page: Optional[list] # Page_Base()
person: Optional[list] # Person_Base()
post: Optional[list] # Post_Base()
product: Optional[list] # Product_Base()
site: Optional[list] # Site_Base()
user: Optional[list] # User_Base()
page_list: Optional[list] # Page_Base()
person_list: Optional[list] # Person_Base()
post_list: Optional[list] # Post_Base()
product_list: Optional[list] # Product_Base()
site_list: Optional[list] # Site_Base()
user_list: Optional[list] # User_Base()
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)

View File

@@ -44,6 +44,7 @@ base_fields['event_session_id_random'] = xxx_id_random_field_schema
base_fields['event_track_id_random'] = xxx_id_random_field_schema
base_fields['flask_cfg_id_random'] = xxx_id_random_field_schema
base_fields['fundraising_id_random'] = xxx_id_random_field_schema
base_fields['fundraising_cfg_id_random'] = xxx_id_random_field_schema
base_fields['hosted_file_id_random'] = xxx_id_random_field_schema
base_fields['journal_id_random'] = xxx_id_random_field_schema
base_fields['journal_entry_id_random'] = xxx_id_random_field_schema

View File

@@ -0,0 +1,66 @@
from __future__ import annotations
import datetime, hashlib, logging, os, pytz, redis, secrets
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 *
from app.models.common_field_schema import base_fields, default_num_bytes
class Fundraising_Cfg_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
id_random: Optional[str] = Field(
**base_fields['fundraising_cfg_id_random'],
alias='fundraising_cfg_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
#alias='fundraising_cfg_id'
)
account_id_random: Optional[str]
account_id: Optional[int]
order_thanks: Optional[str]
order_message: Optional[str]
message: Optional[str]
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('fundraising_cfg_id_random', always=True)
def fundraising_cfg_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True)
def fundraising_cfg_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
log.debug(values['id_random'])
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='fundraising_cfg')
return None
@validator('account_id', always=True)
def account_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['account_id_random']:
return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account')
return None
class Config:
underscore_attrs_are_private = True
fields = base_fields
#Fundraising_Cfg_Base.update_forward_refs()