Work on lots of methods and models.

This commit is contained in:
Scott Idem
2021-06-17 16:54:46 -04:00
parent e9399e107f
commit c17724cea1
20 changed files with 1673 additions and 480 deletions

View File

@@ -49,6 +49,9 @@ 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_cfg_id_random'] = xxx_id_random_field_schema
base_fields['membership_group_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['order_cart_id_random'] = xxx_id_random_field_schema
base_fields['order_cart_line_id_random'] = xxx_id_random_field_schema

View File

@@ -7,7 +7,7 @@ from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationEr
from app.db_sql import redis_lookup_id_random
from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes
from app.models.common_field_schema import base_fields, default_num_bytes
class Membership_Cfg_Base(BaseModel):

View File

@@ -0,0 +1,86 @@
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_models import Membership_Base
class Membership_Group_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
id_random: Optional[str] = Field(
**base_fields['membership_group_id_random'],
alias='membership_group_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
#alias='membership_group_id'
)
membership_id_random: Optional[str]
membership_id: Optional[int]
parent_membership_group_id_random: Optional[str]
parent_membership_group_id: Optional[int]
name: Optional[str]
overview: Optional[str]
description: Optional[str]
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]
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('membership_group_id_random', always=True)
def membership_group_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_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_group')
return None
@validator('membership_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
@validator('parent_membership_group_id', always=True)
def parent_membership_group_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['parent_membership_group_id_random']:
return redis_lookup_id_random(record_id_random=values['parent_membership_group_id_random'], table_name='membership_group')
return None
class Config:
underscore_attrs_are_private = True
fields = base_fields
# Membership_Group_Base.update_forward_refs()

View File

@@ -0,0 +1,145 @@
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_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.person_models import Person_Base
from app.models.user_models import User_Base
class Membership_Member_Base(BaseModel):
log.setLevel(logging.WARNING)
log.debug(locals())
id_random: Optional[str] = Field(
**base_fields['membership_member_id_random'],
alias='membership_member_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
#alias='membership_member_id'
)
account_id_random: Optional[str]
account_id: Optional[int]
membership_id_random: Optional[str]
membership_id: Optional[int] # NOTE: This is not optional
person_id_random: Optional[str]
person_id: Optional[int]
product_id_random: Optional[str]
product_id: Optional[int] # The product they purchased to get this membership
user_id_random: Optional[str]
user_id: Optional[int]
level_number: 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
approved_on: Optional[datetime.datetime] = None
first_start_on: Optional[datetime.datetime] = None
start_buffer_on: Optional[datetime.datetime] = None
start_on: Optional[datetime.datetime] = None
end_on: Optional[datetime.datetime] = None
end_buffer_on: Optional[datetime.datetime] = None
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: Optional[Membership_Base] # The membership option they currently have
membership_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]
person: Optional[Person_Base]
user: Optional[User_Base]
extended_member_profile: Optional[dict] = {}
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('membership_member_id_random', always=True)
def membership_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_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_member')
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
@validator('membership_id', always=True)
def membership_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')
return None
@validator('person_id', always=True)
def person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['person_id_random']:
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())
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):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['user_id_random']:
return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user')
return None
class Config:
underscore_attrs_are_private = True
fields = base_fields
# Membership_Base.update_forward_refs()

View File

@@ -7,135 +7,14 @@ from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationEr
from app.db_sql import redis_lookup_id_random
from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes
from .address_models import Address_Base
from .contact_models import Contact_Base
from .membership_cfg_models import Membership_Cfg_Base
from .organization_models import Organization_Base
from .person_models import Person_Base
from .user_models import User_Base
class Membership_Profile_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# if TYPE_CHECKING:
# from .supporting_core_models import Address_Base, Contact_Base, Organization_Base, User_Base
# from .person_models import Person_Base
# from .address_models import Address_Base
# from .contact_models import Contact_Base
# from .organization_models import Organization_Base
# from .person_models import Person_Base
# from .user_models import User_Base
id_random: Optional[str] = Field(
**base_fields['membership_profile_id_random'],
alias='membership_profile_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
#alias='membership_profile_id'
)
membership_id_random: Optional[str]
membership_id: Optional[int]
person_id_random: Optional[str]
person_id: Optional[int]
user_id_random: Optional[str]
user_id: Optional[int]
organization_id_random: Optional[str]
organization_id: Optional[int]
contact_id_random: Optional[str]
contact_id: Optional[int]
address_id_random: Optional[str]
address_id: Optional[int]
display_name: Optional[str]
email: Optional[str]
email_allowed: Optional[bool]
email_newsletter: Optional[bool]
mail_newsletter: Optional[bool]
show_online: Optional[bool]
show_printed: Optional[bool]
biography: Optional[str]
notes: Optional[str]
created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None
address: 'Optional[Address_Base]' = Address_Base()
contact: 'Optional[Contact_Base]' = Contact_Base()
organization: 'Optional[Organization_Base]' = Organization_Base()
person: 'Optional[Person_Base]' = Person_Base()
user: 'Optional[User_Base]' = User_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):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True)
def membership_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 None
@validator('membership_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
@validator('person_id', always=True)
def person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['person_id_random']:
return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person')
return None
@validator('user_id', always=True)
def user_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['user_id_random']:
return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user')
return None
class Config:
underscore_attrs_are_private = True
fields = base_fields
Membership_Profile_Base.update_forward_refs()
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):
log.setLevel(logging.WARNING)
log.debug(locals())
#from .supporting_core_models import User_Base
# from .account_models import Account_Base
# from .person_models import Person_Base
# from .user_models import User_Base
id_random: Optional[str] = Field(
**base_fields['membership_id_random'],
alias='membership_id_random',
@@ -146,51 +25,57 @@ class Membership_Base(BaseModel):
)
account_id_random: Optional[str]
account_id: Optional[int] # NOTE: This is not really optional
person_id_random: Optional[str]
person_id: Optional[int]
user_id_random: Optional[str]
user_id: Optional[int]
level_number: Optional[int] = Field(0, ge=0, lt=150)
level_name: Optional[str]
product_id: Optional[int]
type_id: Optional[int]
type_name: Optional[str]
category_id: Optional[int]
category_name: Optional[str]
division_id: Optional[int]
division_name: Optional[str]
status_id: Optional[int]
status_name: Optional[str]
account_id: Optional[int]
application_start_on: Optional[datetime.datetime] = None
approved_on: Optional[datetime.datetime] = None
first_start_on: Optional[datetime.datetime] = None
start_buffer_on: Optional[datetime.datetime] = None
start_on: Optional[datetime.datetime] = None
end_on: Optional[datetime.datetime] = None
end_buffer_on: Optional[datetime.datetime] = None
name: Optional[str]
description: Optional[str]
flag: Optional[bool]
flag_message: Optional[str]
cycle_type: Optional[str] # Override membership_cfg
membership_length: Optional[int] = Field(0, ge=0, lt=150) # Override membership_cfg
prorate: Optional[bool] = False # Override membership_cfg
calendar_year_start_buffer_days: Optional[int] = Field(0, ge=0, lt=150) # Override membership_cfg
calendar_year_start_buffer_on: Optional[datetime.datetime] # Override membership_cfg
calendar_year_start_on: Optional[datetime.datetime] # Override membership_cfg
calendar_year_end_on: Optional[datetime.datetime] # Override membership_cfg
calendar_year_end_buffer_days: Optional[int] = Field(0, ge=0, lt=150) # Override membership_cfg
calendar_year_end_buffer_on: Optional[datetime.datetime] # Override membership_cfg
enable_privacy_view: Optional[bool] # Override membership_cfg
renew_warning_hours: Optional[int] # Override membership_cfg
accept_message: Optional[str] # Override membership_cfg
reject_message: Optional[str] # Override membership_cfg
renew_message: Optional[str] # Override membership_cfg
default_no_reply_email: Optional[str] # Override membership_cfg
default_no_reply_name: Optional[str] # Override membership_cfg
confirm_email: Optional[str] # Override membership_cfg
confirm_name: Optional[str] # Override membership_cfg
enable: Optional[bool]
enable_from: Optional[datetime.datetime] = None
enable_to: Optional[datetime.datetime] = None
priority: Optional[bool]
sort: Optional[int] = Field(0, ge=0, lt=100) # Essentially the membership level. Should there be a range limit?
group: Optional[str]
notes: Optional[str]
created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None
#account: Optional[Account_Base] = Account_Base()
profile: 'Optional[Membership_Profile_Base]' = Membership_Profile_Base()
person: 'Optional[Person_Base]' = Person_Base()
user: 'Optional[User_Base]' = User_Base()
cfg: 'Optional[Membership_Cfg_Base]' = Membership_Cfg_Base()
# Including JSON data
# additional_terms_conditions: Optional[dict] = {} # Is this useful?
extended_profile: Optional[dict] = {}
# Including other related objects
product: Optional[list] # Product_Base() List of products (for_type and for_id) that get this membership option
cfg: Optional[Membership_Cfg_Base] = Membership_Cfg_Base()
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('order_id_random', always=True)
def order_id_random_copy(cls, v, values, **kwargs):
#@validator('membership_id_random', always=True)
def membership_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
@@ -207,35 +92,13 @@ class Membership_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership')
return None
@validator('account_id', always=True)
def account_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
# @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('person_id', always=True)
def person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['person_id_random']:
return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person')
return None
@validator('user_id', always=True)
def user_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['user_id_random']:
return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user')
return None
class Config:
underscore_attrs_are_private = True
fields = base_fields
# if values['account_id_random']:
# return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account')
# return None
# Membership_Base.update_forward_refs()

View File

@@ -0,0 +1,104 @@
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.contact_models import Contact_Base
from app.models.membership_models import Membership_Base
from app.models.organization_models import Organization_Base
class Membership_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',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
#alias='membership_profile_id'
)
contact_id_random: Optional[str]
contact_id: Optional[int]
membership_id_random: Optional[str]
membership_id: Optional[int]
organization_id_random: Optional[str]
organization_id: Optional[int]
display_name: Optional[str]
email: Optional[str]
email_allowed: Optional[bool]
email_newsletter: Optional[bool]
mail_newsletter: Optional[bool]
show_online: Optional[bool]
show_printed: Optional[bool]
biography: Optional[str]
notes: Optional[str]
created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None
# Including other related objects
contact: Optional[Contact_Base]
organization: Optional[Organization_Base] = 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):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True)
def membership_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 None
@validator('membership_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
@validator('contact_id', always=True)
def contact_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['contact_id_random']:
return redis_lookup_id_random(record_id_random=values['contact_id_random'], table_name='contact')
return None
@validator('organization_id', always=True)
def organization_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['organization_id_random']:
return redis_lookup_id_random(record_id_random=values['organization_id_random'], table_name='organization')
return None
class Config:
underscore_attrs_are_private = True
fields = base_fields