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

add scheme to resolve response

parent d6c45913
No related branches found
No related tags found
No related merge requests found
Pipeline #870 failed
from pydantic import BaseModel
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from fastapi import APIRouter, Depends, HTTPException, status as http_status, Query from fastapi import APIRouter, Depends, HTTPException, status as http_status, Query
from nacsos_data.db.schemas import BotAnnotationMetaData, BotAnnotation from nacsos_data.db.schemas import BotAnnotationMetaData, BotAnnotation
from nacsos_data.models.annotations import \ from nacsos_data.models.annotations import \
AnnotationSchemeModel, \ AnnotationSchemeModel, \
...@@ -6,7 +10,8 @@ from nacsos_data.models.annotations import \ ...@@ -6,7 +10,8 @@ from nacsos_data.models.annotations import \
AssignmentModel, \ AssignmentModel, \
AssignmentStatus, \ AssignmentStatus, \
AssignmentScopeConfig, \ AssignmentScopeConfig, \
AnnotationSchemeModelFlat AnnotationSchemeModelFlat, \
FlattenedAnnotationSchemeLabel
from nacsos_data.models.bot_annotations import \ from nacsos_data.models.bot_annotations import \
ResolutionMethod, \ ResolutionMethod, \
AnnotationFilters, \ AnnotationFilters, \
...@@ -48,13 +53,14 @@ from nacsos_data.util.annotations.validation import \ ...@@ -48,13 +53,14 @@ from nacsos_data.util.annotations.validation import \
flatten_annotation_scheme flatten_annotation_scheme
from nacsos_data.util.annotations.assignments.random import random_assignments from nacsos_data.util.annotations.assignments.random import random_assignments
from uuid import UUID from server.api.errors import \
from pydantic import BaseModel SaveFailedError, \
from sqlalchemy import select AssignmentScopeNotFoundError, \
from sqlalchemy.ext.asyncio import AsyncSession NoNextAssignmentWarning, \
ProjectNotFoundError, \
from server.api.errors import SaveFailedError, AssignmentScopeNotFoundError, NoNextAssignmentWarning, \ AnnotationSchemeNotFoundError, \
ProjectNotFoundError, AnnotationSchemeNotFoundError, MissingInformationError, NoDataForKeyError MissingInformationError, \
NoDataForKeyError
from server.util.security import UserPermissionChecker from server.util.security import UserPermissionChecker
from server.data import db_engine from server.data import db_engine
...@@ -324,6 +330,7 @@ async def make_assignments(payload: MakeAssignmentsRequestModel, ...@@ -324,6 +330,7 @@ async def make_assignments(payload: MakeAssignmentsRequestModel,
class ResolutionProposalResponse(BaseModel): class ResolutionProposalResponse(BaseModel):
collection: AnnotationCollection collection: AnnotationCollection
proposal: list[BotAnnotationModel] proposal: list[BotAnnotationModel]
scheme_flat: list[FlattenedAnnotationSchemeLabel]
class SavedResolutionResponse(BaseModel): class SavedResolutionResponse(BaseModel):
...@@ -366,12 +373,17 @@ async def get_item_annotation_matrix(strategy: ResolutionMethod, ...@@ -366,12 +373,17 @@ async def get_item_annotation_matrix(strategy: ResolutionMethod,
key=key, key=key,
repeat=repeat, repeat=repeat,
) )
collection, resolved = await get_resolved_item_annotations(strategy=strategy, if ignore_hierarchy is None:
filters=AnnotationFilterObject.parse_obj(filters), ignore_hierarchy = False
ignore_order=ignore_order, if ignore_order is None:
ignore_hierarchy=ignore_hierarchy, ignore_order = False
db_engine=db_engine) scheme, flat_labels, collection, resolved = \
return ResolutionProposalResponse(collection=collection, proposal=resolved) await get_resolved_item_annotations(strategy=strategy,
filters=AnnotationFilterObject.parse_obj(filters),
ignore_order=ignore_order,
ignore_hierarchy=ignore_hierarchy,
db_engine=db_engine)
return ResolutionProposalResponse(collection=collection, proposal=resolved, scheme_flat=flat_labels)
@router.get('/config/resolved/:bot_annotation_meta_id', response_model=SavedResolutionResponse) @router.get('/config/resolved/:bot_annotation_meta_id', response_model=SavedResolutionResponse)
...@@ -386,5 +398,5 @@ async def get_saved_resolved_annotations(bot_annotation_meta_id: str, ...@@ -386,5 +398,5 @@ async def get_saved_resolved_annotations(bot_annotation_meta_id: str,
return SavedResolutionResponse( return SavedResolutionResponse(
meta=meta.meta, meta=meta.meta,
saved=[BotAnnotationModel.parse_obj(bot_annotation)for bot_annotation in bot_annotations] saved=[BotAnnotationModel.parse_obj(bot_annotation) for bot_annotation in bot_annotations]
) )
...@@ -42,7 +42,7 @@ async def list_project_data(item_type: ItemTypeLiteral, ...@@ -42,7 +42,7 @@ async def list_project_data(item_type: ItemTypeLiteral,
async def list_project_data_paged(item_type: ItemTypeLiteral, page: int, page_size: int, async def list_project_data_paged(item_type: ItemTypeLiteral, page: int, page_size: int,
permission=Depends(UserPermissionChecker('dataset_read'))): permission=Depends(UserPermissionChecker('dataset_read'))):
project_id = permission.permissions.project_id project_id = permission.permissions.project_id
if item_type == 'basic': if item_type == 'generic':
return await read_paged_for_project(Model=GenericItemModel, Schema=GenericItem, return await read_paged_for_project(Model=GenericItemModel, Schema=GenericItem,
page=page, page_size=page_size, page=page, page_size=page_size,
project_id=project_id, engine=db_engine) project_id=project_id, engine=db_engine)
......
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