mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
feat: add response models to endpoints
This commit is contained in:
parent
7738316200
commit
71279a1294
20 changed files with 148 additions and 68 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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]
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
)
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue