This commit is contained in:
2025-06-03 20:13:07 -03:00
parent 957f9c4a72
commit c3e6ed4a50
13 changed files with 312 additions and 75 deletions

View File

@@ -1,3 +1,4 @@
import uuid
from datetime import datetime
from http import HTTPStatus
@@ -17,7 +18,7 @@ from config import (
)
from middlewares import Tenant, TenantMiddleware
from models import Course, Enrollment, User
from rules.enrollment import enroll
from rules.enrollment import DeduplicationWindow, Vacancy, enroll
router = Router()
@@ -31,9 +32,18 @@ processor = BatchProcessor()
class Item(BaseModel):
user: User
course: Course
deduplication_window: dict = {}
vacancy: Vacancy | None = None
deduplication_window: DeduplicationWindow | None = None
schedule_date: datetime | None = None
@property
def id(self) -> str:
if not self.vacancy:
return str(uuid.uuid4())
_, idx = self.vacancy.sk.split('#')
return idx
class Payload(BaseModel):
items: tuple[Item, ...]
@@ -59,6 +69,7 @@ def enroll_(payload: Payload):
def handler(record: Item, context: dict):
tenant: Tenant = context['tenant']
enrollment = Enrollment(
id=record.id,
user=record.user,
course=record.course,
)
@@ -69,7 +80,8 @@ def handler(record: Item, context: dict):
'id': str(tenant.id),
'name': tenant.name,
},
deduplication_window=record.deduplication_window, # type: ignore
deduplication_window=record.deduplication_window,
vacancy=record.vacancy,
persistence_layer=enrollment_layer,
)