add user if exists on konviva
This commit is contained in:
@@ -15,9 +15,9 @@ from config import ELASTIC_CONN, ENROLLMENT_TABLE, USER_TABLE
|
||||
|
||||
from .cancel import router as cancel
|
||||
from .enroll import router as enroll
|
||||
from .vacancies import router as vacancies
|
||||
from .slots import router as slots
|
||||
|
||||
__all__ = ['vacancies', 'cancel', 'enroll']
|
||||
__all__ = ['slots', 'cancel', 'enroll']
|
||||
|
||||
|
||||
router = Router()
|
||||
|
||||
@@ -1,28 +1,19 @@
|
||||
from aws_lambda_powertools.event_handler.api_gateway import Router
|
||||
from elasticsearch import Elasticsearch
|
||||
from layercake.dynamodb import (
|
||||
DynamoDBCollection,
|
||||
DynamoDBPersistenceLayer,
|
||||
KeyPair,
|
||||
)
|
||||
from pydantic import UUID4, BaseModel
|
||||
|
||||
from boto3clients import dynamodb_client
|
||||
from config import ELASTIC_CONN, ENROLLMENT_TABLE, USER_TABLE
|
||||
from config import ENROLLMENT_TABLE, USER_TABLE
|
||||
from middlewares.audit_log_middleware import AuditLogMiddleware
|
||||
from middlewares.authentication_middleware import User
|
||||
from rules.enrollment import set_status_as_canceled
|
||||
|
||||
from .vacancies import router as vacancies
|
||||
|
||||
__all__ = ['vacancies']
|
||||
|
||||
|
||||
router = Router()
|
||||
elastic_client = Elasticsearch(**ELASTIC_CONN)
|
||||
enrollment_layer = DynamoDBPersistenceLayer(ENROLLMENT_TABLE, dynamodb_client)
|
||||
user_layer = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
|
||||
user_collect = DynamoDBCollection(user_layer)
|
||||
|
||||
|
||||
class Cancel(BaseModel):
|
||||
@@ -37,7 +28,11 @@ class Cancel(BaseModel):
|
||||
compress=True,
|
||||
tags=['Enrollment'],
|
||||
middlewares=[
|
||||
AuditLogMiddleware('ENROLLMENT_CANCEL', user_collect, ('id', 'course'))
|
||||
AuditLogMiddleware(
|
||||
'ENROLLMENT_CANCEL',
|
||||
collection=user_layer.collection,
|
||||
audit_attrs=('id', 'course'),
|
||||
),
|
||||
],
|
||||
)
|
||||
def cancel(id: str, payload: Cancel):
|
||||
|
||||
@@ -18,7 +18,7 @@ from config import (
|
||||
)
|
||||
from middlewares import Tenant, TenantMiddleware
|
||||
from models import Course, Enrollment, User
|
||||
from rules.enrollment import DeduplicationWindow, Vacancy, enroll
|
||||
from rules.enrollment import DeduplicationWindow, Slot, enroll
|
||||
|
||||
router = Router()
|
||||
|
||||
@@ -32,16 +32,16 @@ processor = BatchProcessor()
|
||||
class Item(BaseModel):
|
||||
user: User
|
||||
course: Course
|
||||
vacancy: Vacancy | None = None
|
||||
slot: Slot | None = None
|
||||
deduplication_window: DeduplicationWindow | None = None
|
||||
schedule_date: datetime | None = None
|
||||
|
||||
@property
|
||||
def id(self) -> str:
|
||||
if not self.vacancy:
|
||||
if not self.slot:
|
||||
return str(uuid.uuid4())
|
||||
|
||||
_, idx = self.vacancy.sk.split('#')
|
||||
_, idx = self.slot.sk.split('#')
|
||||
return idx
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ def handler(record: Item, context: dict):
|
||||
'name': tenant.name,
|
||||
},
|
||||
deduplication_window=record.deduplication_window,
|
||||
vacancy=record.vacancy,
|
||||
slot=record.slot,
|
||||
persistence_layer=enrollment_layer,
|
||||
)
|
||||
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
from aws_lambda_powertools.event_handler.api_gateway import Router
|
||||
from layercake.dynamodb import (
|
||||
ComposeKey,
|
||||
DynamoDBCollection,
|
||||
DynamoDBPersistenceLayer,
|
||||
PartitionKey,
|
||||
)
|
||||
|
||||
from boto3clients import dynamodb_client
|
||||
from config import (
|
||||
ENROLLMENT_TABLE,
|
||||
USER_TABLE,
|
||||
)
|
||||
from middlewares import Tenant, TenantMiddleware
|
||||
|
||||
router = Router()
|
||||
|
||||
enrollment_layer = DynamoDBPersistenceLayer(ENROLLMENT_TABLE, dynamodb_client)
|
||||
user_layer = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
|
||||
user_collect = DynamoDBCollection(user_layer)
|
||||
enrollment_collect = DynamoDBCollection(enrollment_layer)
|
||||
|
||||
|
||||
@router.get(
|
||||
'/vacancies',
|
||||
compress=True,
|
||||
tags=['Enrollment'],
|
||||
middlewares=[
|
||||
TenantMiddleware(user_collect),
|
||||
],
|
||||
)
|
||||
def get_vacancies():
|
||||
tenant: Tenant = router.context['tenant']
|
||||
|
||||
return enrollment_collect.query(
|
||||
PartitionKey(
|
||||
ComposeKey(str(tenant.id), prefix='vacancies'),
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user