Skip to content
Snippets Groups Projects
Commit 8f65a96f authored by Tim Repke's avatar Tim Repke
Browse files

Merge branch 'project-management' into 'master'

add endpoint for creating project (slightly redundant to PUT /project/info)

Closes nacsos-web#24

See merge request !5
parents 553f25b6 1b576683
No related branches found
No related tags found
2 merge requests!15Master,!5add endpoint for creating project (slightly redundant to PUT /project/info)
Pipeline #1017 canceled
from typing import TYPE_CHECKING
from pydantic import BaseModel
from sqlalchemy import select
from sqlalchemy.orm import load_only
from sqlalchemy.ext.asyncio import AsyncSession # noqa: F401
from fastapi import APIRouter, Depends, HTTPException, status as http_status, Query
from nacsos_data.db.schemas import \
......@@ -71,6 +72,9 @@ from server.api.errors import \
from server.util.security import UserPermissionChecker
from server.data import db_engine
if TYPE_CHECKING:
from sqlalchemy.ext.asyncio import AsyncSession # noqa F401
router = APIRouter()
......
import uuid
from typing import TYPE_CHECKING
from fastapi import APIRouter, Depends
from nacsos_data.db.schemas import Project
from nacsos_data.models.users import UserModel
from nacsos_data.models.projects import ProjectModel
......@@ -6,9 +10,12 @@ from nacsos_data.db.crud.projects import read_all_projects, read_all_projects_fo
from server.api.errors import MissingInformationError
from server.data import db_engine
from server.util.security import get_current_active_user
from server.util.security import get_current_active_user, get_current_active_superuser
from server.util.logging import get_logger
if TYPE_CHECKING:
from sqlalchemy.ext.asyncio import AsyncSession # noqa F401
logger = get_logger('nacsos.api.route.projects')
router = APIRouter()
......@@ -31,3 +38,14 @@ async def get_all_projects(current_user: UserModel = Depends(get_current_active_
raise MissingInformationError('`current_user` has no `user_id`, which points to a serious issue in the system!')
return await read_all_projects_for_user(current_user.user_id, engine=db_engine)
@router.put('/create', response_model=str)
async def create_project(project: ProjectModel,
superuser: UserModel = Depends(get_current_active_superuser)) -> str:
async with db_engine.session() as session: # type: AsyncSession
if project.project_id is None:
project.project_id = str(uuid.uuid4())
session.add(Project(**project.dict()))
await session.commit()
return str(project.project_id)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment