feat: add response models to endpoints

This commit is contained in:
swve 2023-11-28 20:49:20 +01:00
parent 7738316200
commit 71279a1294
20 changed files with 148 additions and 68 deletions

View file

@ -26,3 +26,5 @@ class OrganizationCreate(OrganizationBase):
class OrganizationRead(OrganizationBase): class OrganizationRead(OrganizationBase):
id: int id: int
org_uuid: str org_uuid: str
creation_date: str
update_date: str

View file

@ -52,11 +52,19 @@ class Role(RoleBase, table=True):
update_date: str = "" update_date: str = ""
class RoleRead(RoleBase):
id: Optional[int] = Field(default=None, primary_key=True)
org_id: int = Field(default=None, foreign_key="organization.id")
role_type: RoleTypeEnum = RoleTypeEnum.TYPE_GLOBAL
role_uuid: str
creation_date: str
update_date: str
class RoleCreate(RoleBase): class RoleCreate(RoleBase):
org_id: Optional[int] = Field(default=None, foreign_key="organization.id") org_id: Optional[int] = Field(default=None, foreign_key="organization.id")
class RoleUpdate(SQLModel): class RoleUpdate(SQLModel):
role_id: int = Field(default=None, foreign_key="role.id") role_id: int = Field(default=None, foreign_key="role.id")
name: Optional[str] name: Optional[str]

View file

@ -1,4 +1,5 @@
from fastapi import APIRouter, Depends, UploadFile, Form, Request from fastapi import APIRouter, Depends, UploadFile, Form, Request
from src.db.blocks import BlockRead
from src.core.events.database import get_db_session from src.core.events.database import get_db_session
from src.security.auth import get_current_user from src.security.auth import get_current_user
from src.services.blocks.block_types.imageBlock.imageBlock import ( from src.services.blocks.block_types.imageBlock.imageBlock import (
@ -30,7 +31,7 @@ async def api_create_image_file_block(
activity_id: str = Form(), activity_id: str = Form(),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> BlockRead:
""" """
Create new image file Create new image file
""" """
@ -43,7 +44,7 @@ async def api_get_image_file_block(
block_uuid: str, block_uuid: str,
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> BlockRead:
""" """
Get image file Get image file
""" """
@ -62,7 +63,7 @@ async def api_create_video_file_block(
activity_id: str = Form(), activity_id: str = Form(),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> BlockRead:
""" """
Create new video file Create new video file
""" """
@ -75,7 +76,7 @@ async def api_get_video_file_block(
block_uuid: str, block_uuid: str,
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> BlockRead:
""" """
Get video file Get video file
""" """
@ -94,7 +95,7 @@ async def api_create_pdf_file_block(
activity_id: str = Form(), activity_id: str = Form(),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> BlockRead:
""" """
Create new pdf file Create new pdf file
""" """
@ -107,7 +108,7 @@ async def api_get_pdf_file_block(
block_uuid: str, block_uuid: str,
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> BlockRead:
""" """
Get pdf file Get pdf file
""" """

View file

@ -1,5 +1,6 @@
from typing import List
from fastapi import APIRouter, Depends, UploadFile, Form, Request from fastapi import APIRouter, Depends, UploadFile, Form, Request
from src.db.activities import ActivityCreate, ActivityUpdate from src.db.activities import ActivityCreate, ActivityRead, ActivityUpdate
from src.db.users import PublicUser from src.db.users import PublicUser
from src.core.events.database import get_db_session from src.core.events.database import get_db_session
from src.services.courses.activities.activities import ( from src.services.courses.activities.activities import (
@ -26,7 +27,7 @@ async def api_create_activity(
activity_object: ActivityCreate, activity_object: ActivityCreate,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> ActivityRead:
""" """
Create new activity Create new activity
""" """
@ -39,7 +40,7 @@ async def api_get_activity(
activity_id: str, activity_id: str,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> ActivityRead:
""" """
Get single activity by activity_id Get single activity by activity_id
""" """
@ -54,7 +55,7 @@ async def api_get_activities(
coursechapter_id: str, coursechapter_id: str,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> List[ActivityRead]:
""" """
Get CourseChapter activities Get CourseChapter activities
""" """
@ -67,7 +68,7 @@ async def api_update_activity(
activity_object: ActivityUpdate, activity_object: ActivityUpdate,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> ActivityRead:
""" """
Update activity by activity_id Update activity by activity_id
""" """
@ -98,7 +99,7 @@ async def api_create_video_activity(
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
video_file: UploadFile | None = None, video_file: UploadFile | None = None,
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> ActivityRead:
""" """
Create new activity Create new activity
""" """
@ -118,7 +119,7 @@ async def api_create_external_video_activity(
external_video: ExternalVideo, external_video: ExternalVideo,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> ActivityRead:
""" """
Create new activity Create new activity
""" """
@ -135,7 +136,7 @@ async def api_create_documentpdf_activity(
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
pdf_file: UploadFile | None = None, pdf_file: UploadFile | None = None,
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> ActivityRead:
""" """
Create new activity Create new activity
""" """

View file

@ -60,7 +60,9 @@ async def api_get_chapter_meta(
""" """
Get Chapters metadata Get Chapters metadata
""" """
return await get_depreceated_course_chapters(request, course_id, current_user, db_session) return await get_depreceated_course_chapters(
request, course_id, current_user, db_session
)
@router.put("/order/{course_id}") @router.put("/order/{course_id}")
@ -85,12 +87,15 @@ async def api_get_chapter_by(
course_id: int, course_id: int,
page: int, page: int,
limit: int, limit: int,
current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
) -> List[ChapterRead]: ) -> List[ChapterRead]:
""" """
Get Course Chapters by page and limit Get Course Chapters by page and limit
""" """
return await get_course_chapters(request, course_id, db_session, page, limit) return await get_course_chapters(
request, course_id, db_session, current_user, page, limit
)
@router.put("/{coursechapter_id}") @router.put("/{coursechapter_id}")
@ -118,6 +123,4 @@ async def api_delete_coursechapter(
Delete CourseChapters by ID Delete CourseChapters by ID
""" """
return await delete_chapter( return await delete_chapter(request, coursechapter_id, current_user, db_session)
request, coursechapter_id, current_user, db_session
)

View file

@ -1,6 +1,7 @@
from typing import List
from fastapi import APIRouter, Depends, Request from fastapi import APIRouter, Depends, Request
from src.core.events.database import get_db_session from src.core.events.database import get_db_session
from src.db.collections import CollectionCreate, CollectionUpdate from src.db.collections import CollectionCreate, CollectionRead, CollectionUpdate
from src.security.auth import get_current_user from src.security.auth import get_current_user
from src.services.users.users import PublicUser from src.services.users.users import PublicUser
from src.services.courses.collections import ( from src.services.courses.collections import (
@ -21,7 +22,7 @@ async def api_create_collection(
collection_object: CollectionCreate, collection_object: CollectionCreate,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> CollectionRead:
""" """
Create new Collection Create new Collection
""" """
@ -34,7 +35,7 @@ async def api_get_collection(
collection_id: str, collection_id: str,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> CollectionRead:
""" """
Get single collection by ID Get single collection by ID
""" """
@ -49,7 +50,7 @@ async def api_get_collections_by(
org_id: str, org_id: str,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> List[CollectionRead]:
""" """
Get collections by page and limit Get collections by page and limit
""" """
@ -62,7 +63,7 @@ async def api_update_collection(
collection_object: CollectionUpdate, collection_object: CollectionUpdate,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session), db_session=Depends(get_db_session),
): ) -> CollectionRead:
""" """
Update collection by ID Update collection by ID
""" """

View file

@ -1,8 +1,9 @@
from typing import List
from fastapi import APIRouter, Depends, UploadFile, Form, Request from fastapi import APIRouter, Depends, UploadFile, Form, Request
from sqlmodel import Session from sqlmodel import Session
from src.core.events.database import get_db_session from src.core.events.database import get_db_session
from src.db.users import PublicUser from src.db.users import PublicUser
from src.db.courses import CourseCreate, CourseUpdate from src.db.courses import CourseCreate, CourseRead, CourseUpdate, FullCourseReadWithTrail
from src.security.auth import get_current_user from src.security.auth import get_current_user
from src.services.courses.courses import ( from src.services.courses.courses import (
create_course, create_course,
@ -31,7 +32,7 @@ async def api_create_course(
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
thumbnail: UploadFile | None = None, thumbnail: UploadFile | None = None,
): ) -> CourseRead:
""" """
Create new Course Create new Course
""" """
@ -55,7 +56,7 @@ async def api_create_course_thumbnail(
thumbnail: UploadFile | None = None, thumbnail: UploadFile | None = None,
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> CourseRead:
""" """
Update new Course Thumbnail Update new Course Thumbnail
""" """
@ -70,7 +71,7 @@ async def api_get_course(
course_id: str, course_id: str,
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> CourseRead:
""" """
Get single Course by course_id Get single Course by course_id
""" """
@ -85,7 +86,7 @@ async def api_get_course_meta(
course_id: int, course_id: int,
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> FullCourseReadWithTrail:
""" """
Get single Course Metadata (chapters, activities) by course_id Get single Course Metadata (chapters, activities) by course_id
""" """
@ -102,9 +103,9 @@ async def api_get_course_by_orgslug(
org_slug: str, org_slug: str,
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> List[CourseRead]:
""" """
Get houses by page and limit Get courses by page and limit
""" """
return await get_courses_orgslug( return await get_courses_orgslug(
request, current_user, org_slug, db_session, page, limit request, current_user, org_slug, db_session, page, limit
@ -117,7 +118,7 @@ async def api_update_course(
course_object: CourseUpdate, course_object: CourseUpdate,
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
): ) -> CourseRead:
""" """
Update Course by course_id Update Course by course_id
""" """

View file

@ -1,4 +1,5 @@
from fastapi import APIRouter, Depends, Request from fastapi import APIRouter, Depends, Request
from src.db.install import InstallRead
from src.core.events.database import get_db_session from src.core.events.database import get_db_session
from src.db.organizations import OrganizationCreate from src.db.organizations import OrganizationCreate
from src.db.users import UserCreate from src.db.users import UserCreate
@ -18,8 +19,10 @@ router = APIRouter()
@router.post("/start") @router.post("/start")
async def api_create_install_instance( async def api_create_install_instance(
request: Request, data: dict, db_session=Depends(get_db_session), request: Request,
): data: dict,
db_session=Depends(get_db_session),
) -> InstallRead:
# create install # create install
install = await create_install_instance(request, data, db_session) install = await create_install_instance(request, data, db_session)
@ -27,7 +30,9 @@ async def api_create_install_instance(
@router.get("/latest") @router.get("/latest")
async def api_get_latest_install_instance(request: Request, db_session=Depends(get_db_session),): async def api_get_latest_install_instance(
request: Request, db_session=Depends(get_db_session)
) -> InstallRead:
# get latest created install # get latest created install
install = await get_latest_install_instance(request, db_session=db_session) install = await get_latest_install_instance(request, db_session=db_session)
@ -35,7 +40,10 @@ async def api_get_latest_install_instance(request: Request, db_session=Depends(g
@router.post("/default_elements") @router.post("/default_elements")
async def api_install_def_elements(request: Request, db_session=Depends(get_db_session),): async def api_install_def_elements(
request: Request,
db_session=Depends(get_db_session),
):
elements = await install_default_elements(request, {}, db_session) elements = await install_default_elements(request, {}, db_session)
return elements return elements
@ -43,7 +51,9 @@ async def api_install_def_elements(request: Request, db_session=Depends(get_db_s
@router.post("/org") @router.post("/org")
async def api_install_org( async def api_install_org(
request: Request, org: OrganizationCreate, db_session=Depends(get_db_session), request: Request,
org: OrganizationCreate,
db_session=Depends(get_db_session),
): ):
organization = await install_create_organization(request, org, db_session) organization = await install_create_organization(request, org, db_session)
@ -52,7 +62,10 @@ async def api_install_org(
@router.post("/user") @router.post("/user")
async def api_install_user( async def api_install_user(
request: Request, data: UserCreate, org_slug: str, db_session=Depends(get_db_session), request: Request,
data: UserCreate,
org_slug: str,
db_session=Depends(get_db_session),
): ):
user = await install_create_organization_user(request, data, org_slug, db_session) user = await install_create_organization_user(request, data, org_slug, db_session)
@ -61,8 +74,11 @@ async def api_install_user(
@router.post("/update") @router.post("/update")
async def api_update_install_instance( async def api_update_install_instance(
request: Request, data: dict, step: int, db_session=Depends(get_db_session), request: Request,
): data: dict,
step: int,
db_session=Depends(get_db_session),
) -> InstallRead:
request.app.db["installs"] request.app.db["installs"]
# get latest created install # get latest created install

View file

@ -1,7 +1,13 @@
from typing import List
from fastapi import APIRouter, Depends, Request, UploadFile from fastapi import APIRouter, Depends, Request, UploadFile
from sqlmodel import Session from sqlmodel import Session
from src.db.users import PublicUser from src.db.users import PublicUser
from src.db.organizations import OrganizationCreate, OrganizationUpdate from src.db.organizations import (
Organization,
OrganizationCreate,
OrganizationRead,
OrganizationUpdate,
)
from src.core.events.database import get_db_session from src.core.events.database import get_db_session
from src.security.auth import get_current_user from src.security.auth import get_current_user
from src.services.orgs.orgs import ( from src.services.orgs.orgs import (
@ -24,7 +30,7 @@ async def api_create_org(
org_object: OrganizationCreate, org_object: OrganizationCreate,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
): ) -> OrganizationRead:
""" """
Create new organization Create new organization
""" """
@ -37,7 +43,7 @@ async def api_get_org(
org_id: str, org_id: str,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
): ) -> OrganizationRead:
""" """
Get single Org by ID Get single Org by ID
""" """
@ -50,7 +56,7 @@ async def api_get_org_by_slug(
org_slug: str, org_slug: str,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
): ) -> OrganizationRead:
""" """
Get single Org by Slug Get single Org by Slug
""" """
@ -84,7 +90,7 @@ async def api_user_orgs(
limit: int, limit: int,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
): ) -> List[Organization]:
""" """
Get orgs by page and limit by user Get orgs by page and limit by user
""" """
@ -99,7 +105,7 @@ async def api_update_org(
org_object: OrganizationUpdate, org_object: OrganizationUpdate,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
): ) -> OrganizationRead:
""" """
Update Org by ID Update Org by ID
""" """

View file

@ -1,7 +1,7 @@
from fastapi import APIRouter, Depends, Request from fastapi import APIRouter, Depends, Request
from sqlmodel import Session from sqlmodel import Session
from src.core.events.database import get_db_session from src.core.events.database import get_db_session
from src.db.roles import RoleCreate, RoleUpdate from src.db.roles import RoleCreate, RoleRead, RoleUpdate
from src.security.auth import get_current_user from src.security.auth import get_current_user
from src.services.roles.roles import create_role, delete_role, read_role, update_role from src.services.roles.roles import create_role, delete_role, read_role, update_role
from src.db.users import PublicUser from src.db.users import PublicUser
@ -16,7 +16,7 @@ async def api_create_role(
role_object: RoleCreate, role_object: RoleCreate,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
): )-> RoleRead:
""" """
Create new role Create new role
""" """
@ -29,7 +29,7 @@ async def api_get_role(
role_id: str, role_id: str,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
): )-> RoleRead:
""" """
Get single role by role_id Get single role by role_id
""" """
@ -42,7 +42,7 @@ async def api_update_role(
role_object: RoleUpdate, role_object: RoleUpdate,
current_user: PublicUser = Depends(get_current_user), current_user: PublicUser = Depends(get_current_user),
db_session: Session = Depends(get_db_session), db_session: Session = Depends(get_db_session),
): )-> RoleRead:
""" """
Update role by role_id Update role by role_id
""" """

View file

@ -38,9 +38,7 @@ async def api_get_user_trail(
""" """
Get a user trails Get a user trails
""" """
return await get_user_trails( return await get_user_trails(request, user=user, db_session=db_session)
request, user=user, db_session=db_session
)
@router.get("/org_slug/{org_id}/trail") @router.get("/org_slug/{org_id}/trail")
@ -58,9 +56,6 @@ async def api_get_trail_by_org_id(
) )
# Courses in trail
@router.post("/add_course/{course_id}") @router.post("/add_course/{course_id}")
async def api_add_course_to_trail( async def api_add_course_to_trail(
request: Request, request: Request,

View file

@ -3,7 +3,7 @@ from uuid import uuid4
from fastapi import HTTPException, status, UploadFile, Request from fastapi import HTTPException, status, UploadFile, Request
from sqlmodel import Session, select from sqlmodel import Session, select
from src.db.activities import Activity from src.db.activities import Activity
from src.db.blocks import Block, BlockTypeEnum from src.db.blocks import Block, BlockRead, BlockTypeEnum
from src.db.courses import Course from src.db.courses import Course
from src.services.blocks.utils.upload_files import upload_file_and_return_file_object from src.services.blocks.utils.upload_files import upload_file_and_return_file_object
from src.services.users.users import PublicUser from src.services.users.users import PublicUser
@ -65,6 +65,8 @@ async def create_image_block(
db_session.commit() db_session.commit()
db_session.refresh(block) db_session.refresh(block)
block = BlockRead.from_orm(block)
return block return block
@ -75,6 +77,9 @@ async def get_image_block(
block = db_session.exec(statement).first() block = db_session.exec(statement).first()
if block: if block:
block = BlockRead.from_orm(block)
return block return block
else: else:
raise HTTPException( raise HTTPException(

View file

@ -3,7 +3,7 @@ from uuid import uuid4
from fastapi import HTTPException, status, UploadFile, Request from fastapi import HTTPException, status, UploadFile, Request
from sqlmodel import Session, select from sqlmodel import Session, select
from src.db.activities import Activity from src.db.activities import Activity
from src.db.blocks import Block, BlockTypeEnum from src.db.blocks import Block, BlockRead, BlockTypeEnum
from src.db.courses import Course from src.db.courses import Course
from src.services.blocks.utils.upload_files import upload_file_and_return_file_object from src.services.blocks.utils.upload_files import upload_file_and_return_file_object
@ -66,6 +66,8 @@ async def create_pdf_block(
db_session.commit() db_session.commit()
db_session.refresh(block) db_session.refresh(block)
block = BlockRead.from_orm(block)
return block return block
@ -80,4 +82,6 @@ async def get_pdf_block(
status_code=status.HTTP_404_NOT_FOUND, detail="Video file does not exist" status_code=status.HTTP_404_NOT_FOUND, detail="Video file does not exist"
) )
block = BlockRead.from_orm(block)
return block return block

View file

@ -3,7 +3,7 @@ from uuid import uuid4
from fastapi import HTTPException, status, UploadFile, Request from fastapi import HTTPException, status, UploadFile, Request
from sqlmodel import Session, select from sqlmodel import Session, select
from src.db.activities import Activity from src.db.activities import Activity
from src.db.blocks import Block, BlockTypeEnum from src.db.blocks import Block, BlockRead, BlockTypeEnum
from src.db.courses import Course from src.db.courses import Course
from src.services.blocks.utils.upload_files import upload_file_and_return_file_object from src.services.blocks.utils.upload_files import upload_file_and_return_file_object
@ -66,6 +66,8 @@ async def create_video_block(
db_session.commit() db_session.commit()
db_session.refresh(block) db_session.refresh(block)
block = BlockRead.from_orm(block)
return block return block
@ -80,4 +82,6 @@ async def get_video_block(
status_code=status.HTTP_404_NOT_FOUND, detail="Video file does not exist" status_code=status.HTTP_404_NOT_FOUND, detail="Video file does not exist"
) )
block = BlockRead.from_orm(block)
return block return block

View file

@ -96,6 +96,8 @@ async def get_activity(
# RBAC check # RBAC check
await rbac_check(request, activity.activity_uuid, current_user, "read", db_session) await rbac_check(request, activity.activity_uuid, current_user, "read", db_session)
activity = ActivityRead.from_orm(activity)
return activity return activity
@ -130,6 +132,8 @@ async def update_activity(
db_session.commit() db_session.commit()
db_session.refresh(activity) db_session.refresh(activity)
activity = ActivityRead.from_orm(activity)
return activity return activity
@ -182,7 +186,7 @@ async def get_activities(
coursechapter_id: str, coursechapter_id: str,
current_user: PublicUser | AnonymousUser, current_user: PublicUser | AnonymousUser,
db_session: Session, db_session: Session,
): ) -> list[ActivityRead]:
statement = select(ChapterActivity).where( statement = select(ChapterActivity).where(
ChapterActivity.chapter_id == coursechapter_id ChapterActivity.chapter_id == coursechapter_id
) )
@ -197,6 +201,8 @@ async def get_activities(
# RBAC check # RBAC check
await rbac_check(request, "activity_x", current_user, "read", db_session) await rbac_check(request, "activity_x", current_user, "read", db_session)
activities = [ActivityRead.from_orm(activity) for activity in activities]
return activities return activities

View file

@ -51,6 +51,8 @@ async def get_course(
# RBAC check # RBAC check
await rbac_check(request, course.course_uuid, current_user, "read", db_session) await rbac_check(request, course.course_uuid, current_user, "read", db_session)
course = CourseRead.from_orm(course)
return course return course
@ -188,6 +190,8 @@ async def update_course_thumbnail(
db_session.commit() db_session.commit()
db_session.refresh(course) db_session.refresh(course)
course = CourseRead.from_orm(course)
return course return course
@ -223,6 +227,8 @@ async def update_course(
db_session.commit() db_session.commit()
db_session.refresh(course) db_session.refresh(course)
course = CourseRead.from_orm(course)
return course return course
@ -277,6 +283,8 @@ async def get_courses_orgslug(
courses = db_session.exec(statement) courses = db_session.exec(statement)
courses = [CourseRead.from_orm(course) for course in courses]
return courses return courses

View file

@ -3,7 +3,7 @@ from uuid import uuid4
from fastapi import HTTPException, Request from fastapi import HTTPException, Request
from sqlalchemy import desc from sqlalchemy import desc
from sqlmodel import Session, select from sqlmodel import Session, select
from src.db.install import Install from src.db.install import Install, InstallRead
from src.db.organizations import Organization, OrganizationCreate from src.db.organizations import Organization, OrganizationCreate
from src.db.roles import Permission, Rights, Role, RoleTypeEnum from src.db.roles import Permission, Rights, Role, RoleTypeEnum
from src.db.user_organizations import UserOrganization from src.db.user_organizations import UserOrganization
@ -41,6 +41,8 @@ async def create_install_instance(request: Request, data: dict, db_session: Sess
# refresh install instance # refresh install instance
db_session.refresh(install) db_session.refresh(install)
install = InstallRead.from_orm(install)
return install return install
@ -54,6 +56,8 @@ async def get_latest_install_instance(request: Request, db_session: Session):
detail="No install instance found", detail="No install instance found",
) )
install = InstallRead.from_orm(install)
return install return install
@ -78,6 +82,8 @@ async def update_install_instance(
# refresh install instance # refresh install instance
db_session.refresh(install) db_session.refresh(install)
install = InstallRead.from_orm(install)
return install return install

View file

@ -38,6 +38,8 @@ async def get_organization(
# RBAC check # RBAC check
await rbac_check(request, org.org_uuid, current_user, "read", db_session) await rbac_check(request, org.org_uuid, current_user, "read", db_session)
org = OrganizationRead.from_orm(org)
return org return org
@ -61,6 +63,8 @@ async def get_organization_by_slug(
# RBAC check # RBAC check
await rbac_check(request, org.org_uuid, current_user, "read", db_session) await rbac_check(request, org.org_uuid, current_user, "read", db_session)
org = OrganizationRead.from_orm(org)
return org return org
@ -160,6 +164,8 @@ async def update_org(
db_session.commit() db_session.commit()
db_session.refresh(org) db_session.refresh(org)
org = OrganizationRead.from_orm(org)
return org return org
@ -197,6 +203,7 @@ async def update_org_logo(
db_session.commit() db_session.commit()
db_session.refresh(org) db_session.refresh(org)
return {"detail": "Logo updated"} return {"detail": "Logo updated"}
@ -244,7 +251,7 @@ async def get_orgs_by_user(
user_id: str, user_id: str,
page: int = 1, page: int = 1,
limit: int = 10, limit: int = 10,
): ) -> list[Organization]:
statement = ( statement = (
select(Organization) select(Organization)
.join(UserOrganization) .join(UserOrganization)

View file

@ -7,7 +7,7 @@ from src.security.rbac.rbac import (
authorization_verify_if_user_is_author, authorization_verify_if_user_is_author,
) )
from src.db.users import AnonymousUser, PublicUser from src.db.users import AnonymousUser, PublicUser
from src.db.roles import Role, RoleCreate, RoleUpdate from src.db.roles import Role, RoleCreate, RoleRead, RoleUpdate
from fastapi import HTTPException, Request from fastapi import HTTPException, Request
from datetime import datetime from datetime import datetime
@ -32,6 +32,8 @@ async def create_role(
db_session.commit() db_session.commit()
db_session.refresh(role) db_session.refresh(role)
role = RoleRead(**role.dict())
return role return role
@ -52,6 +54,8 @@ async def read_role(
# RBAC check # RBAC check
await rbac_check(request, current_user, "read", role.role_uuid, db_session) await rbac_check(request, current_user, "read", role.role_uuid, db_session)
role = RoleRead(**role.dict())
return role return role
@ -90,6 +94,8 @@ async def update_role(
db_session.commit() db_session.commit()
db_session.refresh(role) db_session.refresh(role)
role = RoleRead(**role.dict())
return role return role