add freeze subscription

This commit is contained in:
2026-01-18 12:34:19 -03:00
parent 3f0f7ec1e1
commit ae348377a5
10 changed files with 102 additions and 40 deletions

View File

@@ -34,6 +34,11 @@ class SubscriptionRequiredError(ServiceError):
super().__init__(HTTPStatus.NOT_ACCEPTABLE, msg)
class SubscriptionFrozenError(ServiceError):
def __init__(self, msg: str | dict):
super().__init__(HTTPStatus.NOT_ACCEPTABLE, msg)
class DeduplicationConflictError(ConflictError): ...
@@ -90,15 +95,9 @@ def enroll(
rename_key='subscription',
table_name=USER_TABLE,
)
+ KeyPair(
pk='SUBSCRIPTION',
sk=f'ORG#{org_id}',
rename_key='subscribed',
table_name=USER_TABLE,
)
)
if 'subscribed' not in org:
if 'subscription' not in org:
raise SubscriptionRequiredError('Organization not subscribed')
ctx = {
@@ -184,6 +183,15 @@ def enroll_now(enrollment: Enrollment, context: Context):
exc_cls=SubscriptionRequiredError,
table_name=USER_TABLE,
)
transact.condition(
key=KeyPair(
pk='SUBSCRIPTION#FREEZE',
sk=f'ORG#{org.id}',
),
cond_expr='attribute_not_exists(sk)',
exc_cls=SubscriptionFrozenError,
table_name=USER_TABLE,
)
transact.put(
item={
'id': enrollment.id,
@@ -292,6 +300,15 @@ def enroll_later(enrollment: Enrollment, context: Context):
exc_cls=SubscriptionRequiredError,
table_name=USER_TABLE,
)
transact.condition(
key=KeyPair(
pk='SUBSCRIPTION#FREEZE',
sk=f'ORG#{org.id}',
),
cond_expr='attribute_not_exists(sk)',
exc_cls=SubscriptionFrozenError,
table_name=USER_TABLE,
)
transact.put(
item={
'id': pk,