add freeze subscription
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user