add access_expires_at to enrollment
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
from datetime import timedelta
|
||||||
from typing import NotRequired, Self, TypedDict
|
from typing import NotRequired, Self, TypedDict
|
||||||
|
|
||||||
from layercake.dateutils import now, ttl
|
from layercake.dateutils import now, ttl
|
||||||
@@ -48,12 +49,14 @@ def enroll(
|
|||||||
user = enrollment.user
|
user = enrollment.user
|
||||||
course = enrollment.course
|
course = enrollment.course
|
||||||
lock_hash = md5_hash('%s%s' % (user.id, course.id))
|
lock_hash = md5_hash('%s%s' % (user.id, course.id))
|
||||||
|
access_expires_at = now_ + timedelta(days=course.access_period)
|
||||||
|
|
||||||
with persistence_layer.transact_writer() as transact:
|
with persistence_layer.transact_writer() as transact:
|
||||||
transact.put(
|
transact.put(
|
||||||
item={
|
item={
|
||||||
'sk': '0',
|
'sk': '0',
|
||||||
'created_at': now_,
|
'created_at': now_,
|
||||||
|
'access_expires_at': access_expires_at,
|
||||||
**enrollment.model_dump(),
|
**enrollment.model_dump(),
|
||||||
}
|
}
|
||||||
| ({'subscription_covered': True} if subscription else {})
|
| ({'subscription_covered': True} if subscription else {})
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import json
|
import json
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
from aws_lambda_powertools import Logger
|
from aws_lambda_powertools import Logger
|
||||||
from aws_lambda_powertools.utilities.data_classes import (
|
from aws_lambda_powertools.utilities.data_classes import (
|
||||||
@@ -34,8 +35,17 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
course = _get_course(new_image['course']['id'])
|
course = _get_course(new_image['course']['id'])
|
||||||
|
access_period = int(course['access_period'])
|
||||||
|
access_expires_at = now_ + timedelta(days=access_period)
|
||||||
|
|
||||||
with enrollment_layer.transact_writer() as transact:
|
with enrollment_layer.transact_writer() as transact:
|
||||||
|
transact.update(
|
||||||
|
key=KeyPair(new_image['id'], new_image['sk']),
|
||||||
|
update_expr='SET access_expires_at = :access_expires_at',
|
||||||
|
expr_attr_values={
|
||||||
|
':access_expires_at': access_expires_at,
|
||||||
|
},
|
||||||
|
)
|
||||||
transact.put(
|
transact.put(
|
||||||
item={
|
item={
|
||||||
'id': new_image['id'],
|
'id': new_image['id'],
|
||||||
@@ -49,7 +59,7 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
|
|||||||
'id': new_image['id'],
|
'id': new_image['id'],
|
||||||
'sk': 'METADATA#COURSE',
|
'sk': 'METADATA#COURSE',
|
||||||
'created_at': now_,
|
'created_at': now_,
|
||||||
'access_period': int(course['access_period']),
|
'access_period': access_period,
|
||||||
'cert': course.get('cert', None),
|
'cert': course.get('cert', None),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -26,5 +26,4 @@ def test_reenroll(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
enrollment = app.lambda_handler(event, lambda_context) # type: ignore
|
assert app.lambda_handler(event, lambda_context) # type: ignore
|
||||||
print(enrollment)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user