def test_process_zipfile_page_limit(self): upload_file = BytesIO() upload_file_zip = zipfile.ZipFile(upload_file, 'w') for i in range(MANGA_PAGE_LIMIT+1): upload_file_zip.writestr('{0:03d}.png'.format(i), bytes('0', 'utf-8')) upload_file_zip.close() errors = process_zipfile(self.manga, SimpleUploadedFile('test.zip', upload_file.getvalue()), self.user) self.assertEqual(errors[0], 'The zip archive contains more than 100 images, some images were ignored.')
def post(self, request, id, slug): manga = self.get_manga_for_edit(id) if 'zipfile' in request.FILES: errors = process_zipfile(manga, request.FILES.get('zipfile'), request.user) elif 'images' in request.FILES: errors = process_images(manga, request.FILES.getlist('images', []), request.user) else: raise Http404 if errors: messages.error(request, '\n'.join(errors)) return redirect('manga.edit.images', id=manga.id, slug=manga.slug)
def test_process_zipfile(self): initial_page_count = MangaPage.objects.filter(manga=self.manga).count() content = self.create_test_image_file().getvalue() upload_file = BytesIO() upload_file_zip = zipfile.ZipFile(upload_file, 'w') upload_file_zip.writestr('01.png', bytes(content)) upload_file_zip.writestr('02.png', bytes(content)) upload_file_zip.writestr('03.png', bytes('0', 'utf-8')) upload_file_zip.close() errors = process_zipfile(self.manga, SimpleUploadedFile('test.zip', upload_file.getvalue()), self.user) self.assertEqual(errors, ['03.png failed to verify as an image file.']) actual_page_count = MangaPage.objects.filter(manga=self.manga).count() self.assertEqual(initial_page_count+2, actual_page_count)
def test_process_zipfile_invalid(self): errors = process_zipfile(self.manga, BytesIO(), self.user) self.assertEqual(errors, ['The uploaded file is not a valid zip file.'])