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)
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)
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())
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)