Ejemplo n.º 1
0
Archivo: page.py Proyecto: lexpar/Rodan
    def post(self, request, *args, **kwargs):
        if not request.FILES:
            return Response(
                {"message": "You must supply at least one file to upload"}, status=status.HTTP_400_BAD_REQUEST
            )
        response = []
        current_user = User.objects.get(pk=request.user.id)

        start_seq = request.DATA.get("page_order", None)
        if not start_seq:
            return Response(
                {"message": "The start sequence for the page ordering may not be empty."},
                status=status.HTTP_400_BAD_REQUEST,
            )

        project = request.DATA.get("project", None)
        if not project:
            return Response(
                {"message": "You must supply a project identifier for the pages."}, status=status.HTTP_400_BAD_REQUEST
            )
        value = urlparse.urlparse(project).path

        try:
            p = resolve(value)
        except:
            return Response({"message": "Could not resolve {0} to a Project"}, status=status.HTTP_400_BAD_REQUEST)

        try:
            project = Project.objects.get(pk=p.kwargs.get("pk"))
        except:
            return Response(
                {"message": "You must specify an existing project for this page"}, status=status.HTTP_400_BAD_REQUEST
            )

        for seq, fileobj in enumerate(request.FILES.getlist("files"), start=int(start_seq)):
            page_obj = Page()
            page_obj.name = fileobj.name
            page_obj.project = project
            page_obj.page_order = seq
            page_obj.creator = current_user
            page_obj.save()
            page_obj.page_image.save(upload_path(page_obj, fileobj.name), fileobj)

            # Create a chain that will first ensure the
            # file is converted to PNG and then create the thumbnails.
            # The ensure_compatible() method returns the page_object
            # as the first (invisible) argument to the create_thumbnails
            # method.
            res = celery.chain(ensure_compatible.s(page_obj), create_thumbnails.s(), processed.s())
            res.apply_async()

            try:
                d = PageSerializer(page_obj).data
                response.append(d)
            except:
                return Response({"message": "Could not serialize page object"}, status=status.HTTP_400_BAD_REQUEST)

        return Response({"pages": response}, status=status.HTTP_201_CREATED)
Ejemplo n.º 2
0
def default_on_success(self, retval, task_id, args, kwargs):
    # create thumbnails and set runjob status to HAS_FINISHED after successfully processing an image object.
    result = Result.objects.get(pk=retval)
    result.run_job.status = RunJobStatus.HAS_FINISHED
    result.run_job.error_summary = ""
    result.run_job.error_details = ""
    save_instance(result.run_job)

    res = create_thumbnails.s(result)
    res.link(processed.s())
    res.apply_async()
Ejemplo n.º 3
0
def default_on_success(self, retval, task_id, args, kwargs):
    # create thumbnails and set runjob status to HAS_FINISHED after successfully processing an image object.
    result = Result.objects.get(pk=retval)
    result.run_job.status = RunJobStatus.HAS_FINISHED
    result.run_job.error_summary = ""
    result.run_job.error_details = ""
    save_instance(result.run_job)

    res = create_thumbnails.s(result)
    res.link(processed.s())
    res.apply_async()
Ejemplo n.º 4
0
    def post(self, request, *args, **kwargs):
        if not request.FILES:
            return Response(
                {'message': "You must supply at least one file to upload"},
                status=status.HTTP_400_BAD_REQUEST)
        response = []
        current_user = User.objects.get(pk=request.user.id)

        start_seq = request.DATA.get('page_order', None)
        if not start_seq:
            return Response(
                {
                    'message':
                    "The start sequence for the page ordering may not be empty."
                },
                status=status.HTTP_400_BAD_REQUEST)

        project = request.DATA.get('project', None)
        if not project:
            return Response(
                {
                    "message":
                    "You must supply a project identifier for the pages."
                },
                status=status.HTTP_400_BAD_REQUEST)
        value = urlparse.urlparse(project).path

        try:
            p = resolve(value)
        except:
            return Response({"message": "Could not resolve {0} to a Project"},
                            status=status.HTTP_400_BAD_REQUEST)

        try:
            project = Project.objects.get(pk=p.kwargs.get("pk"))
        except:
            return Response(
                {
                    "message":
                    "You must specify an existing project for this page"
                },
                status=status.HTTP_400_BAD_REQUEST)

        for seq, fileobj in enumerate(request.FILES.getlist('files'),
                                      start=int(start_seq)):
            page_obj = Page()
            page_obj.name = fileobj.name
            page_obj.project = project
            page_obj.page_order = seq
            page_obj.creator = current_user
            page_obj.save()
            page_obj.page_image.save(upload_path(page_obj, fileobj.name),
                                     fileobj)

            # Create a chain that will first ensure the
            # file is converted to PNG and then create the thumbnails.
            # The ensure_compatible() method returns the page_object
            # as the first (invisible) argument to the create_thumbnails
            # method.
            res = celery.chain(ensure_compatible.s(page_obj),
                               create_thumbnails.s(), processed.s())
            res.apply_async()

            try:
                d = PageSerializer(page_obj).data
                response.append(d)
            except:
                return Response({"message": "Could not serialize page object"},
                                status=status.HTTP_400_BAD_REQUEST)

        return Response({"pages": response}, status=status.HTTP_201_CREATED)