45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
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 .common_field_schema import base_fields, default_num_bytes
|
|
|
|
|
|
class Membership_Cfg_Base(BaseModel):
|
|
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
|
log.debug(locals())
|
|
|
|
account_name: Optional[str]
|
|
|
|
cycle_type: Optional[str]
|
|
membership_length: Optional[int] = Field(0, ge=0, lt=150)
|
|
prorate: Optional[bool] = False
|
|
calendar_year_start_buffer_days: Optional[int] = Field(0, ge=0, lt=150)
|
|
calendar_year_start_buffer_on: Optional[datetime.datetime] = None
|
|
calendar_year_start_on: Optional[datetime.datetime] = None
|
|
calendar_year_end_on: Optional[datetime.datetime] = None
|
|
calendar_year_end_buffer_days: Optional[int] = Field(0, ge=0, lt=150)
|
|
calendar_year_end_buffer_on: Optional[datetime.datetime] = None
|
|
enable_privacy_view: Optional[bool] = False
|
|
|
|
renew_warning_hours: Optional[int]
|
|
|
|
accept_message: Optional[str]
|
|
reject_message: Optional[str]
|
|
renew_message: Optional[str]
|
|
|
|
#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
|
|
|
|
default_no_reply_email: Optional[str]
|
|
default_no_reply_name: Optional[str]
|
|
confirm_email: Optional[str]
|
|
confirm_name: Optional[str]
|
|
|
|
Membership_Cfg_Base.update_forward_refs()
|