Levels
This commit is contained in:
@@ -118,6 +118,7 @@ MEMBERSHIP_TIERS = json.loads(os.environ["MEMBERSHIP_TIERS_JSON"]) if "MEMBERSHI
|
||||
if not isinstance(MEMBERSHIP_TIERS, dict):
|
||||
raise ImproperlyConfigured("MEMBERSHIP_TIERS_JSON must be an object.")
|
||||
prices = set()
|
||||
levels = set()
|
||||
for key, tier in MEMBERSHIP_TIERS.items():
|
||||
if not re.fullmatch(r"[a-z0-9][a-z0-9_-]{0,47}", key) or not isinstance(tier, dict):
|
||||
raise ImproperlyConfigured("Invalid membership tier.")
|
||||
@@ -127,6 +128,10 @@ for key, tier in MEMBERSHIP_TIERS.items():
|
||||
if not tier["price_id"].startswith("price_") or tier["price_id"] in prices:
|
||||
raise ImproperlyConfigured("Each tier must have a unique Stripe Price ID.")
|
||||
prices.add(tier["price_id"])
|
||||
level = tier.get("level")
|
||||
if not isinstance(level, int) or isinstance(level, bool) or level < 1 or level in levels:
|
||||
raise ImproperlyConfigured(f"Tier {key} must have a unique positive integer level; level 0 is reserved for free accounts.")
|
||||
levels.add(level)
|
||||
if "usd_amount" in tier:
|
||||
try:
|
||||
amount = Decimal(tier["usd_amount"])
|
||||
|
||||
Reference in New Issue
Block a user