This commit is contained in:
2025-12-23 20:10:06 -03:00
parent 609861d8f8
commit dc581fc80c
3 changed files with 98 additions and 15 deletions

View File

@@ -7,7 +7,7 @@ from aws_lambda_powertools.utilities.data_classes import (
) )
from aws_lambda_powertools.utilities.typing import LambdaContext from aws_lambda_powertools.utilities.typing import LambdaContext
from layercake.dateutils import now from layercake.dateutils import now
from layercake.dynamodb import DynamoDBPersistenceLayer from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from boto3clients import dynamodb_client from boto3clients import dynamodb_client
from config import ENROLLMENT_TABLE from config import ENROLLMENT_TABLE
@@ -22,6 +22,7 @@ dyn = DynamoDBPersistenceLayer(ENROLLMENT_TABLE, dynamodb_client)
def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
old_image = event.detail['old_image'] old_image = event.detail['old_image']
sk = old_image['sk'] sk = old_image['sk']
_, lock_hash = sk.split('#')
now_ = now() now_ = now()
# Key pattern `SCHEDULED#ORG#{org_id}` # Key pattern `SCHEDULED#ORG#{org_id}`
*_, org_id = old_image['id'].split('#') *_, org_id = old_image['id'].split('#')
@@ -57,17 +58,24 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool:
persistence_layer=dyn, persistence_layer=dyn,
) )
dyn.put_item( with dyn.transact_writer() as transact:
item={ transact.put(
'id': old_image['id'], item={
'sk': f'{sk}#EXECUTED', 'id': old_image['id'],
'enrollment_id': enrollment.id, 'sk': f'{sk}#EXECUTED',
'user': old_image['user'], 'enrollment_id': enrollment.id,
'course': old_image['course'], 'user': old_image['user'],
'created_by': created_by, 'course': old_image['course'],
'created_at': now_, 'created_by': created_by,
} 'created_at': now_,
) }
)
transact.delete(
key=KeyPair(
pk='LOCK#SCHEDULED',
sk=lock_hash,
),
)
except Exception as exc: except Exception as exc:
dyn.put_item( dyn.put_item(
item={ item={

View File

@@ -13,15 +13,89 @@ Seu certificado já está pronto e aguardando apenas a sua assinatura digital.
""" """
doc = {
'id': 549,
'name': '7dc7005e-0b98-4e79-b1d1-17999b7555e7',
'submitters': [
{
'id': 549,
'slug': 'CPZ92dWCMVUbD5',
'uuid': 'b57b1504-2c16-412e-96a4-1e555bff1cce',
'name': 'Sérgio R Siqueira',
'email': 'sergio@somosbeta.com.br',
'phone': None,
'completed_at': None,
'declined_at': None,
'external_id': None,
'submission_id': 549,
'metadata': {},
'opened_at': None,
'sent_at': '2025-12-23T23:02:03.491Z',
'created_at': '2025-12-23T23:02:03.496Z',
'updated_at': '2025-12-23T23:02:03.496Z',
'status': 'sent',
'application_key': None,
'values': [],
'preferences': {
'email_message_uuid': 'f53c861b-d851-46bc-bcae-e7260fdcff3c',
'send_email': True,
'send_sms': False,
},
'role': 'First Party',
'embed_src': 'https://docs.eduseg.com.br/s/CPZ92dWCMVUbD5',
}
],
'source': 'api',
'submitters_order': 'preserved',
'status': 'pending',
'schema': [
{
'name': '7dc7005e-0b98-4e79-b1d1-17999b7555e7',
'attachment_uuid': '64bde5ce-327a-4a0d-9923-2b0c91028e71',
}
],
'fields': [
{
'name': 'Assinatura',
'type': 'signature',
'default_value': None,
'conditions': None,
'required': True,
'uuid': '2bbae88a-8a00-4f71-bdc0-edcce154252c',
'submitter_uuid': 'b57b1504-2c16-412e-96a4-1e555bff1cce',
'areas': [
{
'page': 0,
'attachment_uuid': '64bde5ce-327a-4a0d-9923-2b0c91028e71',
'x': 0.08876572705307295,
'y': 0.6920383425296537,
'w': 0.1995770152872413,
'h': 0.04878657103210542,
}
],
}
],
'expire_at': None,
'created_at': '2025-12-23T23:02:03.493Z',
}
def Response(*args, **kwargs): def Response(*args, **kwargs):
return type('Response', (), {'raise_for_status': object}) return type(
'Response',
(),
{
'raise_for_status': object,
'json': lambda: doc,
},
)
def test_create_submission_from_pdf(): def test_create_submission_from_pdf():
with patch('docuseal.requests.post', Response): with patch('docuseal.requests.post', Response):
with open('tests/sample.pdf', 'rb') as f: with open('tests/sample.pdf', 'rb') as f:
file = base64.b64encode(f.read()) file = base64.b64encode(f.read())
create_submission_from_pdf( r = create_submission_from_pdf(
str(uuid.uuid4()), str(uuid.uuid4()),
file=file.decode('utf-8'), file=file.decode('utf-8'),
email_message={ email_message={
@@ -36,3 +110,4 @@ def test_create_submission_from_pdf():
}, },
], ],
) )
assert 'name' in r

View File

@@ -576,7 +576,7 @@ wheels = [
[[package]] [[package]]
name = "layercake" name = "layercake"
version = "0.11.3" version = "0.11.4"
source = { directory = "../layercake" } source = { directory = "../layercake" }
dependencies = [ dependencies = [
{ name = "arnparse" }, { name = "arnparse" },