You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

39 lines
1.4 KiB

from django.shortcuts import get_object_or_404
from rest_framework import status
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from .celery_tasks import import_dataset
from .pipeline.catalog import Options
from projects.models import Project
from projects.permissions import IsProjectAdmin
class DatasetCatalog(APIView):
permission_classes = [IsAuthenticated & IsProjectAdmin]
def get(self, request, *args, **kwargs):
project_id = kwargs["project_id"]
project = get_object_or_404(Project, pk=project_id)
use_relation = getattr(project, "use_relation", False)
options = Options.filter_by_task(project.project_type, use_relation)
return Response(data=options, status=status.HTTP_200_OK)
class DatasetImportAPI(APIView):
permission_classes = [IsAuthenticated & IsProjectAdmin]
def post(self, request, *args, **kwargs):
upload_ids = request.data.pop("uploadIds")
file_format = request.data.pop("format")
task = request.data.pop("task")
celery_task = import_dataset.delay(
user_id=request.user.id,
project_id=self.kwargs["project_id"],
file_format=file_format,
upload_ids=upload_ids,
task=task,
**request.data,
)
return Response({"task_id": celery_task.task_id})