wip
This commit is contained in:
71
api.saladeaula.digital/app/routes/courses/__init__.py
Normal file
71
api.saladeaula.digital/app/routes/courses/__init__.py
Normal file
@@ -0,0 +1,71 @@
|
||||
from io import BytesIO
|
||||
|
||||
from aws_lambda_powertools import Logger
|
||||
from aws_lambda_powertools.event_handler.api_gateway import Router
|
||||
from aws_lambda_powertools.event_handler.exceptions import (
|
||||
BadRequestError,
|
||||
NotFoundError,
|
||||
)
|
||||
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
|
||||
from pydantic import UUID4, BaseModel
|
||||
from python_multipart import parse_form
|
||||
|
||||
from boto3clients import dynamodb_client
|
||||
from config import COURSE_TABLE
|
||||
|
||||
logger = Logger(__name__)
|
||||
router = Router()
|
||||
dyn = DynamoDBPersistenceLayer(COURSE_TABLE, dynamodb_client)
|
||||
|
||||
|
||||
@router.get('/<course_id>')
|
||||
def get_course(course_id: str):
|
||||
return dyn.collection.get_item(
|
||||
KeyPair(course_id, '0'),
|
||||
exc_cls=NotFoundError,
|
||||
)
|
||||
|
||||
|
||||
class Cert(BaseModel):
|
||||
exp_interval: int
|
||||
rawfile: bytes
|
||||
|
||||
|
||||
class FormData(BaseModel):
|
||||
id: UUID4
|
||||
name: str
|
||||
access_period: int
|
||||
cert: Cert | None = None
|
||||
|
||||
|
||||
@router.post('/<course_id>')
|
||||
def edit_course(course_id: str):
|
||||
event = router.current_event
|
||||
|
||||
if not event.decoded_body:
|
||||
raise BadRequestError('Invalid request body')
|
||||
|
||||
ret = {'id': course_id}
|
||||
body = BytesIO(event.decoded_body.encode())
|
||||
|
||||
def on_field(field):
|
||||
field_name = field.field_name.decode().split('.')
|
||||
|
||||
if len(field_name) > 1:
|
||||
field_name, subfield_name = field_name
|
||||
print(field_name, subfield_name)
|
||||
else:
|
||||
field_name, *_ = field_name
|
||||
ret[field_name] = field.value
|
||||
|
||||
parse_form(
|
||||
event.headers, # type: ignore
|
||||
body,
|
||||
on_field=on_field,
|
||||
on_file=on_field,
|
||||
)
|
||||
|
||||
# print(ret.keys())
|
||||
data = FormData.model_validate(ret)
|
||||
print(data)
|
||||
return {}
|
||||
Reference in New Issue
Block a user