add cert_expires_at
This commit is contained in:
@@ -1,20 +1,17 @@
|
||||
from decimal import Decimal
|
||||
|
||||
from aws_lambda_powertools import Logger
|
||||
from aws_lambda_powertools.event_handler.exceptions import (
|
||||
BadRequestError,
|
||||
NotFoundError,
|
||||
)
|
||||
from botocore.args import logger
|
||||
from glom import glom
|
||||
from layercake.dateutils import now, ttl
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair, SortKey, TransactKey
|
||||
from layercake.strutils import md5_hash
|
||||
|
||||
from boto3clients import dynamodb_client
|
||||
from config import COURSE_TABLE
|
||||
|
||||
# @TODO Find a better way
|
||||
course_layer = DynamoDBPersistenceLayer(COURSE_TABLE, dynamodb_client)
|
||||
logger = Logger(__name__)
|
||||
|
||||
|
||||
def update_progress(
|
||||
@@ -119,15 +116,8 @@ def set_score(
|
||||
),
|
||||
)
|
||||
user_id = enrollment['user']['id']
|
||||
course_id = glom(enrollment, 'course.id')
|
||||
exp_interval = course_layer.collection.get_item(
|
||||
KeyPair(
|
||||
pk=course_id,
|
||||
sk=SortKey('0', path_spec='cert.exp_interval'),
|
||||
),
|
||||
raise_on_error=False,
|
||||
default=0,
|
||||
)
|
||||
course_id = enrollment['course']['id']
|
||||
dedup_window_offset_days = int(enrollment['dedup_window_offset_days'])
|
||||
|
||||
try:
|
||||
if score >= 70:
|
||||
@@ -138,8 +128,7 @@ def set_score(
|
||||
progress=progress,
|
||||
user_id=user_id,
|
||||
course_id=course_id,
|
||||
cert_exp_interval=int(exp_interval),
|
||||
dedup_window_offset_days=int(enrollment['dedup_window_offset_days']),
|
||||
dedup_window_offset_days=dedup_window_offset_days,
|
||||
dynamodb_persistence_layer=dynamodb_persistence_layer,
|
||||
)
|
||||
|
||||
@@ -165,23 +154,21 @@ def _set_status_as_completed(
|
||||
*,
|
||||
user_id: str,
|
||||
course_id: str,
|
||||
cert_exp_interval: int,
|
||||
dedup_window_offset_days: int,
|
||||
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
||||
) -> bool:
|
||||
now_ = now()
|
||||
lock_hash = md5_hash(f'{user_id}{course_id}')
|
||||
cert_exp_ttl = ttl(
|
||||
start_dt=now_,
|
||||
days=cert_exp_interval,
|
||||
)
|
||||
cert_exp_reminder_ttl = ttl(
|
||||
start_dt=now_,
|
||||
days=cert_exp_interval - 30,
|
||||
)
|
||||
dedup_lock_ttl = ttl(
|
||||
start_dt=now_,
|
||||
days=cert_exp_interval - dedup_window_offset_days,
|
||||
exp_interval = int(
|
||||
dynamodb_persistence_layer.collection.get_item(
|
||||
KeyPair(
|
||||
pk=course_id,
|
||||
sk=SortKey('0', path_spec='cert.exp_interval'),
|
||||
table_name=COURSE_TABLE,
|
||||
),
|
||||
raise_on_error=False,
|
||||
default=0,
|
||||
)
|
||||
)
|
||||
|
||||
with dynamodb_persistence_layer.transact_writer() as transact:
|
||||
@@ -204,12 +191,17 @@ def _set_status_as_completed(
|
||||
exc_cls=EnrollmentConflictError,
|
||||
)
|
||||
|
||||
if cert_exp_interval:
|
||||
if exp_interval:
|
||||
dedup_lock_ttl = ttl(
|
||||
start_dt=now_,
|
||||
days=exp_interval - dedup_window_offset_days,
|
||||
)
|
||||
|
||||
transact.put(
|
||||
item={
|
||||
'id': id,
|
||||
'sk': 'SCHEDULE#SET_CERT_EXPIRED',
|
||||
'ttl': cert_exp_ttl,
|
||||
'ttl': ttl(start_dt=now_, days=exp_interval),
|
||||
'created_at': now_,
|
||||
}
|
||||
)
|
||||
@@ -217,7 +209,7 @@ def _set_status_as_completed(
|
||||
item={
|
||||
'id': id,
|
||||
'sk': 'SCHEDULE#REMINDER_CERT_EXPIRATION_BEFORE_30_DAYS',
|
||||
'ttl': cert_exp_reminder_ttl,
|
||||
'ttl': ttl(start_dt=now_, days=exp_interval - 30),
|
||||
'created_at': now_,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -23,10 +23,10 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
|
||||
# r = dyn.get_item(KeyPair(new_image['id'], 'KONVIVA'))
|
||||
|
||||
try:
|
||||
result = konviva.cancel_enrollment(r['enrollment_id'])
|
||||
r = konviva.cancel_enrollment(r['enrollment_id'])
|
||||
except Exception as exc:
|
||||
logger.exception(exc)
|
||||
return False
|
||||
else:
|
||||
logger.info('Enrollment canceled', result=result)
|
||||
logger.info('Enrollment canceled', result=r)
|
||||
return True
|
||||
|
||||
@@ -35,10 +35,10 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
|
||||
except konviva.EmailAlreadyExistsError as exc:
|
||||
logger.exception(exc, email=new_image['email'])
|
||||
|
||||
result = konviva.get_users_by_email(new_image['email'])
|
||||
user_id = glom(result, '0.IDUsuario')
|
||||
r = konviva.get_users_by_email(new_image['email'])
|
||||
user_id = glom(r, '0.IDUsuario')
|
||||
|
||||
if not result:
|
||||
if not r:
|
||||
raise UserNotFoundError('User not found')
|
||||
except Exception:
|
||||
raise
|
||||
|
||||
@@ -31,10 +31,10 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
|
||||
payload.update(CPF=new_image['cpf'])
|
||||
|
||||
try:
|
||||
result = konviva.update_user(id=user_id, **payload)
|
||||
r = konviva.update_user(id=user_id, **payload)
|
||||
except Exception as exc:
|
||||
logger.exception(exc)
|
||||
return False
|
||||
else:
|
||||
logger.info('User updated', result=result, payload=payload)
|
||||
logger.info('User updated', result=r, payload=payload)
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user