Beispiel #1
0
    def test_save(self):
        page = Page(project=self.test_project,
                    creator=self.test_user,
                    name="test page")
        page.save()

        retr_page = Page.objects.get(name="test page")
        self.assertEqual(retr_page.name, page.name)
Beispiel #2
0
    def test_delete(self):
        page = Page(project=self.test_project,
                    creator=self.test_user,
                    name="test page")
        page.save()

        retr_page = Page.objects.get(name="test page")
        retr_page.delete()

        retr_page2 = Page.objects.filter(name="test page")
        self.assertFalse(retr_page2.exists())
Beispiel #3
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)
Beispiel #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)