Working on membership stuff

This commit is contained in:
Scott Idem
2021-06-24 17:50:11 -04:00
parent f5f60a403c
commit d85ab35812
47 changed files with 222 additions and 191 deletions

View File

@@ -30,13 +30,17 @@ def load_membership_cfg_obj(
field_value = account_id, field_value = account_id,
): pass ): pass
else: return False else: return False
log.debug(membership_cfg_rec) # log.debug(membership_cfg_rec)
log.debug(type(membership_cfg_rec['extended_membership_member_profile']))
log.debug(membership_cfg_rec['extended_membership_member_profile'])
membership_cfg_rec['extended_membership_member_profile'] = str(membership_cfg_rec['extended_membership_member_profile'], )
try: try:
membership_cfg_obj = Membership_Cfg_Base(**membership_cfg_rec) membership_cfg_obj = Membership_Cfg_Base(**membership_cfg_rec)
log.debug(membership_cfg_obj) log.debug(membership_cfg_obj)
except ValidationError as e: except ValidationError as e:
log.error(e.json()) log.error(e.json())
return False
if model_as_dict: if model_as_dict:
return membership_cfg_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member return membership_cfg_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member

View File

@@ -49,12 +49,16 @@ def load_membership_member_obj(
if membership_member_rec := sql_select(table_name='v_membership_member', record_id=membership_member_id): pass if membership_member_rec := sql_select(table_name='v_membership_member', record_id=membership_member_id): pass
else: return False else: return False
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_member_rec)
try: try:
membership_member_obj = Membership_Member_Base(**membership_member_rec) membership_member_obj = Membership_Member_Base(**membership_member_rec)
log.debug(membership_member_obj) log.debug(membership_member_obj)
except ValidationError as e: except ValidationError as e:
log.error(e.json()) log.error(e.json())
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_member_obj)
# Updated 2021-06-24 # Updated 2021-06-24
if inc_membership_cfg: if inc_membership_cfg:
@@ -64,8 +68,8 @@ def load_membership_member_obj(
exclude_unset = exclude_unset, exclude_unset = exclude_unset,
model_as_dict = model_as_dict, model_as_dict = model_as_dict,
): ):
membership_member_obj.cfg = membership_cfg_obj_result membership_member_obj.membership_cfg = membership_cfg_obj_result
else: membership_member_obj.cfg = None else: membership_member_obj.membership_cfg = None
# Updated 2021-06-18 # Updated 2021-06-18
if inc_membership_group_list: # The list of groups the member is a part of if inc_membership_group_list: # The list of groups the member is a part of

View File

@@ -22,7 +22,7 @@ class Account_Cfg_Base(BaseModel):
default_factory = lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='account_cfg_id' alias = 'account_cfg_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]
account_id: Optional[int] account_id: Optional[int]

View File

@@ -21,7 +21,7 @@ class Address_Base(BaseModel):
default_factory = lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='address_id' alias = 'address_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]
account_id: Optional[int] account_id: Optional[int]

View File

@@ -22,7 +22,7 @@ class Contact_Base(BaseModel):
default_factory = lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='contact_id' alias = 'contact_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]
account_id: Optional[int] account_id: Optional[int]

View File

@@ -41,6 +41,7 @@ class Membership_Cfg_Base(BaseModel):
# Including JSON data # Including JSON data
# extended_membership_member_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client # extended_membership_member_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client
# extended_membership_member_profile: Optional[Json] = '[]' # list of dicts outlining extended (custom) membership profile fields for client # extended_membership_member_profile: Optional[Json] = '[]' # list of dicts outlining extended (custom) membership profile fields for client
extended_membership_member_profile: Optional[Json] # list of dicts outlining extended (custom) membership profile fields for client # extended_membership_member_profile: Optional[Json] # list of dicts outlining extended (custom) membership profile fields for client
extended_membership_member_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client
Membership_Cfg_Base.update_forward_refs() Membership_Cfg_Base.update_forward_refs()

View File

@@ -10,6 +10,7 @@ from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.membership_group_models import Membership_Group_Base from app.models.membership_group_models import Membership_Group_Base
from app.models.membership_member_models import Membership_Member_Base from app.models.membership_member_models import Membership_Member_Base
from app.models.product_models import Product_Base
class Membership_Group_Member_Base(BaseModel): class Membership_Group_Member_Base(BaseModel):
@@ -22,7 +23,7 @@ class Membership_Group_Member_Base(BaseModel):
default_factory = lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='membership_group_member_id' alias = 'membership_group_member_id'
) )
membership_group_id_random: Optional[str] membership_group_id_random: Optional[str]
@@ -30,6 +31,9 @@ class Membership_Group_Member_Base(BaseModel):
membership_member_id_random: Optional[str] membership_member_id_random: Optional[str]
membership_member_id: Optional[int] membership_member_id: Optional[int]
product_id_random: Optional[str]
product_id: Optional[int] # The product they purchased to get this membership
flag: Optional[bool] flag: Optional[bool]
flag_message: Optional[str] flag_message: Optional[str]
@@ -41,6 +45,7 @@ class Membership_Group_Member_Base(BaseModel):
# Including other related objects # Including other related objects
membership_group: Optional[Membership_Group_Base] membership_group: Optional[Membership_Group_Base]
membership_member: Optional[Membership_Member_Base] membership_member: Optional[Membership_Member_Base]
product: Optional[Product_Base] # The product used to be a part of the group?
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
@@ -80,6 +85,15 @@ class Membership_Group_Member_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['membership_member_id_random'], table_name='membership_member') return redis_lookup_id_random(record_id_random=values['membership_member_id_random'], table_name='membership_member')
return None return None
@validator('product_id', always=True)
def product_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['product_id_random']:
return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product')
return None
class Config: class Config:
underscore_attrs_are_private = True underscore_attrs_are_private = True
fields = base_fields fields = base_fields

View File

@@ -22,7 +22,7 @@ class Membership_Group_Base(BaseModel):
default_factory = lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='membership_group_id' alias = 'membership_group_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]
account_id: Optional[int] account_id: Optional[int]

View File

@@ -26,14 +26,28 @@ class Membership_Member_Base(BaseModel):
default_factory = lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='membership_member_id' alias = 'membership_member_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]
account_id: Optional[int] account_id: Optional[int]
membership_type_id_random: Optional[str] membership_member_status_id: Optional[int] = Field(
membership_type_id: Optional[int] # NOTE: This is not optional alias = 'status_id'
)
membership_member_status_name: Optional[str] = Field(
alias = 'status_name'
)
membership_type_id_random: Optional[str] = Field(
alias = 'type_id_random',
) # NOTE: This is not optional
membership_type_id: Optional[int] = Field(
alias = 'type_id',
) # NOTE: This is not optional
membership_type_name: Optional[str] = Field(
alias = 'type_name',
)
person_id_random: Optional[str] person_id_random: Optional[str]
person_id: Optional[int] person_id: Optional[int]
@@ -44,13 +58,7 @@ class Membership_Member_Base(BaseModel):
user_id_random: Optional[str] user_id_random: Optional[str]
user_id: Optional[int] user_id: Optional[int]
level_number: Optional[int] = Field(0, ge=0, lt=150) level: Optional[int] = Field(0, ge=0, lt=150)
level_name: Optional[str]
# type_id: Optional[int]
# type_name: Optional[str]
# status_id: Optional[int]
# status_name: Optional[str]
application_start_on: Optional[datetime.datetime] = None application_start_on: Optional[datetime.datetime] = None
approved_on: Optional[datetime.datetime] = None approved_on: Optional[datetime.datetime] = None
@@ -70,9 +78,21 @@ class Membership_Member_Base(BaseModel):
# Including other related objects # Including other related objects
membership_type: Optional[Membership_Type_Base] # The membership option they currently have membership_type: Optional[Membership_Type_Base] # The membership option they currently have
cfg: Optional[Membership_Cfg_Base] membership_cfg: Optional[Membership_Cfg_Base] = Field(
membership_group_list: Optional[list] # Membership_Group_Base() The membership groups they are a part of alias = 'cfg',
membership_member_profile: Optional[Membership_Member_Profile_Base] )
membership_group_list: Optional[list] = Field(
alias = 'group_list',
) # Membership_Group_Base() The membership groups they are a part of
membership_member_profile: Optional[Membership_Member_Profile_Base] = Field(
alias = 'profile',
)
# membership_member_profile: Optional[Membership_Member_Profile_Base] = Field(
# alias = 'profile',
# )
# = Field(
# alias = 'extended_membership_member_profile',
# )
person: Optional[dict] # should be Person_Base() but causes an import loop person: Optional[dict] # should be Person_Base() but causes an import loop
product: Optional[Product_Base] # The product used to become a member? product: Optional[Product_Base] # The product used to become a member?
user: Optional[dict] # should be User_Base() but causes an import loop user: Optional[dict] # should be User_Base() but causes an import loop
@@ -126,14 +146,14 @@ class Membership_Member_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person') return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person')
return None return None
# @validator('product_id', always=True) @validator('product_id', always=True)
# def product_id_lookup(cls, v, values, **kwargs): def product_id_lookup(cls, v, values, **kwargs):
# log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
# log.debug(locals()) log.debug(locals())
# if values['product_id_random']: if values['product_id_random']:
# return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product') return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product')
# return None return None
@validator('user_id', always=True) @validator('user_id', always=True)
def user_id_lookup(cls, v, values, **kwargs): def user_id_lookup(cls, v, values, **kwargs):
@@ -146,6 +166,5 @@ class Membership_Member_Base(BaseModel):
class Config: class Config:
underscore_attrs_are_private = True underscore_attrs_are_private = True
allow_population_by_field_name = True
fields = base_fields fields = base_fields
# Membership_Base.update_forward_refs()

View File

@@ -23,12 +23,15 @@ class Membership_Member_Profile_Base(BaseModel):
default_factory = lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='membership_member_profile_id' alias = 'membership_member_profile_id'
) )
contact_id_random: Optional[str] contact_id_random: Optional[str]
contact_id: Optional[int] contact_id: Optional[int]
# membership_type_id_random: Optional[str] # membership_type_id_random: Optional[str]
# membership_type_id: Optional[int] # membership_type_id: Optional[int]
organization_id_random: Optional[str] organization_id_random: Optional[str]
organization_id: Optional[int] organization_id: Optional[int]
@@ -72,15 +75,6 @@ class Membership_Member_Profile_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_member_profile') return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_member_profile')
return None return None
# @validator('membership_type_id', always=True)
# def membership_lookup(cls, v, values, **kwargs):
# log.setLevel(logging.WARNING)
# log.debug(locals())
# if values['membership_type_id_random']:
# return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type')
# return None
@validator('contact_id', always=True) @validator('contact_id', always=True)
def contact_id_lookup(cls, v, values, **kwargs): def contact_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)

View File

@@ -21,7 +21,7 @@ class Membership_Type_Base(BaseModel):
default_factory = lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='membership_type_id' alias = 'membership_type_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]

View File

@@ -19,18 +19,13 @@ class Person_Base(BaseModel):
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())
#from .organization_models import Organization_Base
#if TYPE_CHECKING:
#from .supporting_core_models import Address_Base, Contact_Base, Organization_Base, Person_Base, User_Base
#from .supporting_core_models import Address_Base, Contact_Base, Organization_Base, User_Base
id_random: Optional[str] = Field( id_random: Optional[str] = Field(
**base_fields['person_id_random'], **base_fields['person_id_random'],
alias = 'person_id_random', alias = 'person_id_random',
default_factory = lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='person_id' alias = 'person_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]
account_id: Optional[int] account_id: Optional[int]

View File

@@ -201,7 +201,7 @@ async def get_membership_member_obj(
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
): ):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
if membership_member_id := redis_lookup_id_random(record_id_random=membership_member_id, table_name='membership_member'): pass if membership_member_id := redis_lookup_id_random(record_id_random=membership_member_id, table_name='membership_member'): pass