From a7a7cc6cc185b2aa21e15cd8d67da3fdc1630cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Wed, 17 Sep 2025 20:56:37 -0300 Subject: [PATCH] add access_expires_at to enrollment --- enrollments-events/app/enrollment.py | 3 +++ .../app/events/stopgap/patch_course_metadata.py | 12 +++++++++++- .../tests/events/test_reenroll_if_failed.py | 3 +-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/enrollments-events/app/enrollment.py b/enrollments-events/app/enrollment.py index f1cd926..18bdef7 100644 --- a/enrollments-events/app/enrollment.py +++ b/enrollments-events/app/enrollment.py @@ -1,3 +1,4 @@ +from datetime import timedelta from typing import NotRequired, Self, TypedDict from layercake.dateutils import now, ttl @@ -48,12 +49,14 @@ def enroll( user = enrollment.user course = enrollment.course 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: transact.put( item={ 'sk': '0', 'created_at': now_, + 'access_expires_at': access_expires_at, **enrollment.model_dump(), } | ({'subscription_covered': True} if subscription else {}) diff --git a/enrollments-events/app/events/stopgap/patch_course_metadata.py b/enrollments-events/app/events/stopgap/patch_course_metadata.py index fcd814b..64f55cd 100644 --- a/enrollments-events/app/events/stopgap/patch_course_metadata.py +++ b/enrollments-events/app/events/stopgap/patch_course_metadata.py @@ -1,5 +1,6 @@ import json import sqlite3 +from datetime import timedelta from aws_lambda_powertools import Logger from aws_lambda_powertools.utilities.data_classes import ( @@ -34,8 +35,17 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: try: 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: + 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( item={ 'id': new_image['id'], @@ -49,7 +59,7 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: 'id': new_image['id'], 'sk': 'METADATA#COURSE', 'created_at': now_, - 'access_period': int(course['access_period']), + 'access_period': access_period, 'cert': course.get('cert', None), } ) diff --git a/enrollments-events/tests/events/test_reenroll_if_failed.py b/enrollments-events/tests/events/test_reenroll_if_failed.py index 995b038..cb1c130 100644 --- a/enrollments-events/tests/events/test_reenroll_if_failed.py +++ b/enrollments-events/tests/events/test_reenroll_if_failed.py @@ -26,5 +26,4 @@ def test_reenroll( } } } - enrollment = app.lambda_handler(event, lambda_context) # type: ignore - print(enrollment) + assert app.lambda_handler(event, lambda_context) # type: ignore