Working on membership module routes, methods, and models
This commit is contained in:
@@ -9,7 +9,7 @@ from app.lib_general import *
|
||||
|
||||
from app.models.common_field_schema import base_fields, default_num_bytes
|
||||
from app.models.fundraising_cfg_models import Fundraising_Cfg_Base
|
||||
from app.models.membership_models import Membership_Cfg_Base
|
||||
from app.models.membership_cfg_models import Membership_Cfg_Base
|
||||
|
||||
|
||||
class Account_Cfg_Base(BaseModel):
|
||||
|
||||
@@ -13,7 +13,7 @@ from app.models.account_cfg_models import Account_Cfg_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.membership_models import Membership_Cfg_Base
|
||||
from app.models.membership_cfg_models import Membership_Cfg_Base
|
||||
# from app.models.person_models import Person_Base
|
||||
# from app.models.user_models import User_Base
|
||||
|
||||
@@ -58,6 +58,9 @@ class Account_Base(BaseModel):
|
||||
hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2
|
||||
journal_list: Optional[list] # Journal_Base() # Priority l3
|
||||
membership_cfg: Optional[Membership_Cfg_Base] # Priority l2
|
||||
membership_group_list: Optional[list] # Membership_Group_Base() # Priority l2
|
||||
membership_member_list: Optional[list] # Membership_Member_Base() # Priority l2
|
||||
membership_type_list: Optional[list] # Membership_Type_Base() # Priority l2
|
||||
order_list: Optional[list] # Order_Base() # Priority l2
|
||||
organization_list: Optional[list] # Organization_Base() # Priority l3
|
||||
page_list: Optional[list] # Page_Base() # Priority l3
|
||||
|
||||
@@ -48,11 +48,13 @@ 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
|
||||
base_fields['membership_id_random'] = xxx_id_random_field_schema
|
||||
# base_fields['membership_id_random'] = xxx_id_random_field_schema # renamed to membership_type
|
||||
base_fields['membership_cfg_id_random'] = xxx_id_random_field_schema
|
||||
base_fields['membership_group_id_random'] = xxx_id_random_field_schema
|
||||
base_fields['membership_group_member_id_random'] = xxx_id_random_field_schema
|
||||
base_fields['membership_member_id_random'] = xxx_id_random_field_schema
|
||||
base_fields['membership_profile_id_random'] = xxx_id_random_field_schema
|
||||
base_fields['membership_member_profile_id_random'] = xxx_id_random_field_schema
|
||||
base_fields['membership_type_id_random'] = xxx_id_random_field_schema
|
||||
base_fields['order_cart_id_random'] = xxx_id_random_field_schema
|
||||
base_fields['order_cart_line_id_random'] = xxx_id_random_field_schema
|
||||
base_fields['order_id_random'] = xxx_id_random_field_schema
|
||||
|
||||
@@ -39,8 +39,8 @@ class Membership_Cfg_Base(BaseModel):
|
||||
confirm_name: Optional[str]
|
||||
|
||||
# Including JSON data
|
||||
# extended_membership_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client
|
||||
# extended_membership_profile: Optional[Json] = '[]' # list of dicts outlining extended (custom) membership profile fields for client
|
||||
extended_membership_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
|
||||
# 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
|
||||
|
||||
Membership_Cfg_Base.update_forward_refs()
|
||||
|
||||
87
app/models/membership_group_member_models.py
Normal file
87
app/models/membership_group_member_models.py
Normal file
@@ -0,0 +1,87 @@
|
||||
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 log, logging
|
||||
|
||||
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_member_models import Membership_Member_Base
|
||||
|
||||
|
||||
class Membership_Group_Member_Base(BaseModel):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
id_random: Optional[str] = Field(
|
||||
**base_fields['membership_group_member_id_random'],
|
||||
alias='membership_group_member_id_random',
|
||||
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
|
||||
)
|
||||
id: Optional[int] = Field(
|
||||
#alias='membership_group_member_id'
|
||||
)
|
||||
|
||||
membership_group_id_random: Optional[str]
|
||||
membership_group_id: Optional[int]
|
||||
membership_member_id_random: Optional[str]
|
||||
membership_member_id: Optional[int]
|
||||
|
||||
flag: Optional[bool]
|
||||
flag_message: Optional[str]
|
||||
|
||||
notes: Optional[str]
|
||||
|
||||
created_on: Optional[datetime.datetime] = None
|
||||
updated_on: Optional[datetime.datetime] = None
|
||||
|
||||
# Including other related objects
|
||||
membership_group: Optional[Membership_Group_Base]
|
||||
membership_member: Optional[Membership_Member_Base]
|
||||
|
||||
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
|
||||
|
||||
#@validator('membership_group_member_id_random', always=True)
|
||||
def membership_group_member_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 membership_group_member_id_lookup(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
if values['id_random']:
|
||||
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_group_member')
|
||||
return None
|
||||
|
||||
@validator('membership_group_id', always=True)
|
||||
def membership_group_id_lookup(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
if values['membership_group_id_random']:
|
||||
return redis_lookup_id_random(record_id_random=values['membership_group_id_random'], table_name='membership_group')
|
||||
return None
|
||||
|
||||
@validator('membership_member_id', always=True)
|
||||
def membership_member_id_lookup(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
if values['membership_member_id_random']:
|
||||
return redis_lookup_id_random(record_id_random=values['membership_member_id_random'], table_name='membership_member')
|
||||
return None
|
||||
|
||||
class Config:
|
||||
underscore_attrs_are_private = True
|
||||
fields = base_fields
|
||||
|
||||
# Membership_Base.update_forward_refs()
|
||||
@@ -8,7 +8,8 @@ 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.membership_models import Membership_Base
|
||||
from app.models.membership_cfg_models import Membership_Cfg_Base
|
||||
# from app.models.membership_type_models import Membership_Type_Base
|
||||
|
||||
|
||||
class Membership_Group_Base(BaseModel):
|
||||
@@ -23,8 +24,10 @@ class Membership_Group_Base(BaseModel):
|
||||
id: Optional[int] = Field(
|
||||
#alias='membership_group_id'
|
||||
)
|
||||
membership_id_random: Optional[str]
|
||||
membership_id: Optional[int]
|
||||
account_id_random: Optional[str]
|
||||
account_id: Optional[int]
|
||||
membership_type_id_random: Optional[str]
|
||||
membership_type_id: Optional[int]
|
||||
parent_membership_group_id_random: Optional[str]
|
||||
parent_membership_group_id: Optional[int]
|
||||
|
||||
@@ -32,13 +35,18 @@ class Membership_Group_Base(BaseModel):
|
||||
overview: Optional[str]
|
||||
description: Optional[str]
|
||||
|
||||
expire_in_days: Optional[int]
|
||||
|
||||
notes: Optional[str]
|
||||
created_on: Optional[datetime.datetime] = None
|
||||
updated_on: Optional[datetime.datetime] = None
|
||||
|
||||
# Including other related objects
|
||||
membership: Optional[Membership_Base] # The membership option they currently have
|
||||
parent_membership_group: Optional[Membership_Group_Base]
|
||||
cfg: Optional[Membership_Cfg_Base]
|
||||
# membership_type: Optional[Membership_Type_Base] # The membership option/type they currently have
|
||||
membership_group_member_list: Optional[list] # Membership_Group_Member_Base
|
||||
# parent_membership_group: Optional[Membership_Group_Base]
|
||||
product_list: Optional[list] # Product_Base() List of products (for_type and for_id) that get this membership option
|
||||
|
||||
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
|
||||
|
||||
@@ -61,13 +69,22 @@ class Membership_Group_Base(BaseModel):
|
||||
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_group')
|
||||
return None
|
||||
|
||||
@validator('membership_id', always=True)
|
||||
@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
|
||||
|
||||
@validator('membership_type_id', always=True)
|
||||
def membership_lookup(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
if values['membership_id_random']:
|
||||
return redis_lookup_id_random(record_id_random=values['membership_id_random'], table_name='membership')
|
||||
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('parent_membership_group_id', always=True)
|
||||
|
||||
@@ -8,9 +8,9 @@ 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.membership_models import Membership_Base
|
||||
from app.models.membership_cfg_models import Membership_Cfg_Base
|
||||
from app.models.membership_profile_models import Membership_Profile_Base
|
||||
from app.models.membership_member_profile_models import Membership_Member_Profile_Base
|
||||
from app.models.membership_type_models import Membership_Type_Base
|
||||
from app.models.person_models import Person_Base
|
||||
from app.models.user_models import User_Base
|
||||
|
||||
@@ -30,8 +30,8 @@ class Membership_Member_Base(BaseModel):
|
||||
|
||||
account_id_random: Optional[str]
|
||||
account_id: Optional[int]
|
||||
membership_id_random: Optional[str]
|
||||
membership_id: Optional[int] # NOTE: This is not optional
|
||||
membership_type_id_random: Optional[str]
|
||||
membership_type_id: Optional[int] # NOTE: This is not optional
|
||||
person_id_random: Optional[str]
|
||||
person_id: Optional[int]
|
||||
product_id_random: Optional[str]
|
||||
@@ -64,11 +64,12 @@ class Membership_Member_Base(BaseModel):
|
||||
updated_on: Optional[datetime.datetime] = None
|
||||
|
||||
# Including other related objects
|
||||
membership: Optional[Membership_Base] # The membership option they currently have
|
||||
membership_cfg: Optional[Membership_Cfg_Base]
|
||||
membership_type: Optional[Membership_Type_Base] # The membership option they currently have
|
||||
cfg: Optional[Membership_Cfg_Base]
|
||||
membership_group_list: Optional[list] # Membership_Group_Base() The membership groups they are a part of
|
||||
membership_profile: Optional[Membership_Profile_Base]
|
||||
membership_member_profile: Optional[Membership_Member_Profile_Base]
|
||||
person: Optional[Person_Base]
|
||||
# product: Optional[Product_Base] # The product used to become a member?
|
||||
user: Optional[User_Base]
|
||||
|
||||
extended_member_profile: Optional[dict] = {}
|
||||
@@ -102,13 +103,13 @@ class Membership_Member_Base(BaseModel):
|
||||
return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account')
|
||||
return None
|
||||
|
||||
@validator('membership_id', always=True)
|
||||
def membership_id_lookup(cls, v, values, **kwargs):
|
||||
@validator('membership_type_id', always=True)
|
||||
def membership_type_id_lookup(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
if values['membership_id_random']:
|
||||
return redis_lookup_id_random(record_id_random=values['membership_id_random'], table_name='membership')
|
||||
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('person_id', always=True)
|
||||
@@ -120,14 +121,14 @@ class Membership_Member_Base(BaseModel):
|
||||
return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person')
|
||||
return None
|
||||
|
||||
@validator('product_id', always=True)
|
||||
def product_id_lookup(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
# @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
|
||||
# if values['product_id_random']:
|
||||
# return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product')
|
||||
# return None
|
||||
|
||||
@validator('user_id', always=True)
|
||||
def user_id_lookup(cls, v, values, **kwargs):
|
||||
|
||||
@@ -9,26 +9,26 @@ from app.lib_general import log, logging
|
||||
|
||||
from app.models.common_field_schema import base_fields, default_num_bytes
|
||||
from app.models.contact_models import Contact_Base
|
||||
from app.models.membership_models import Membership_Base
|
||||
from app.models.membership_type_models import Membership_Type_Base
|
||||
from app.models.organization_models import Organization_Base
|
||||
|
||||
|
||||
class Membership_Profile_Base(BaseModel):
|
||||
class Membership_Member_Profile_Base(BaseModel):
|
||||
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||
log.debug(locals())
|
||||
|
||||
id_random: Optional[str] = Field(
|
||||
**base_fields['membership_profile_id_random'],
|
||||
alias='membership_profile_id_random',
|
||||
**base_fields['membership_member_profile_id_random'],
|
||||
alias='membership_member_profile_id_random',
|
||||
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
|
||||
)
|
||||
id: Optional[int] = Field(
|
||||
#alias='membership_profile_id'
|
||||
#alias='membership_member_profile_id'
|
||||
)
|
||||
contact_id_random: Optional[str]
|
||||
contact_id: Optional[int]
|
||||
membership_id_random: Optional[str]
|
||||
membership_id: Optional[int]
|
||||
# membership_type_id_random: Optional[str]
|
||||
# membership_type_id: Optional[int]
|
||||
organization_id_random: Optional[str]
|
||||
organization_id: Optional[int]
|
||||
|
||||
@@ -49,12 +49,12 @@ class Membership_Profile_Base(BaseModel):
|
||||
|
||||
# Including other related objects
|
||||
contact: Optional[Contact_Base]
|
||||
organization: Optional[Organization_Base] = Organization_Base()
|
||||
organization: Optional[Organization_Base]
|
||||
|
||||
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
|
||||
|
||||
#@validator('membership_profile_id_random', always=True)
|
||||
def membership_profile_id_random_copy(cls, v, values, **kwargs):
|
||||
#@validator('membership_member_profile_id_random', always=True)
|
||||
def membership_member_profile_id_random_copy(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
@@ -63,23 +63,23 @@ class Membership_Profile_Base(BaseModel):
|
||||
return None
|
||||
|
||||
@validator('id', always=True)
|
||||
def membership_profile_id_lookup(cls, v, values, **kwargs):
|
||||
def membership_member_profile_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='membership_profile')
|
||||
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_member_profile')
|
||||
return None
|
||||
|
||||
@validator('membership_id', always=True)
|
||||
def membership_lookup(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
# @validator('membership_type_id', always=True)
|
||||
# def membership_lookup(cls, v, values, **kwargs):
|
||||
# log.setLevel(logging.WARNING)
|
||||
# log.debug(locals())
|
||||
|
||||
if values['membership_id_random']:
|
||||
return redis_lookup_id_random(record_id_random=values['membership_id_random'], table_name='membership')
|
||||
return None
|
||||
# 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)
|
||||
def contact_id_lookup(cls, v, values, **kwargs):
|
||||
@@ -11,17 +11,17 @@ from app.models.common_field_schema import base_fields, default_num_bytes
|
||||
from app.models.membership_cfg_models import Membership_Cfg_Base
|
||||
|
||||
|
||||
class Membership_Base(BaseModel):
|
||||
class Membership_Type_Base(BaseModel):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
id_random: Optional[str] = Field(
|
||||
**base_fields['membership_id_random'],
|
||||
alias='membership_id_random',
|
||||
**base_fields['membership_type_id_random'],
|
||||
alias='membership_type_id_random',
|
||||
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
|
||||
)
|
||||
id: Optional[int] = Field(
|
||||
#alias='membership_id'
|
||||
#alias='membership_type_id'
|
||||
)
|
||||
|
||||
account_id_random: Optional[str]
|
||||
@@ -69,14 +69,14 @@ class Membership_Base(BaseModel):
|
||||
# additional_terms_conditions: Optional[dict] = {} # Is this useful?
|
||||
|
||||
# Including other related objects
|
||||
cfg: Optional[Membership_Cfg_Base] = Membership_Cfg_Base()
|
||||
cfg: Optional[Membership_Cfg_Base]
|
||||
membership_member_list: Optional[list] # Membership_Member_Base() List of membership members
|
||||
product_list: Optional[list] # Product_Base() List of products (for_type and for_id) that get this membership option
|
||||
|
||||
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
|
||||
|
||||
#@validator('membership_id_random', always=True)
|
||||
def membership_id_random_copy(cls, v, values, **kwargs):
|
||||
#@validator('membership_type_id_random', always=True)
|
||||
def membership_type_id_random_copy(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
@@ -85,12 +85,12 @@ class Membership_Base(BaseModel):
|
||||
return None
|
||||
|
||||
@validator('id', always=True)
|
||||
def membership_id_lookup(cls, v, values, **kwargs):
|
||||
def membership_type_id_lookup(cls, v, values, **kwargs):
|
||||
log.setLevel(logging.WARNING)
|
||||
log.debug(locals())
|
||||
|
||||
if values['id_random']:
|
||||
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership')
|
||||
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_type')
|
||||
return None
|
||||
|
||||
# @validator('account_id', always=True)
|
||||
@@ -102,4 +102,4 @@ class Membership_Base(BaseModel):
|
||||
# return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account')
|
||||
# return None
|
||||
|
||||
# Membership_Base.update_forward_refs()
|
||||
# Membership_Type_Base.update_forward_refs()
|
||||
Reference in New Issue
Block a user