def test_manga_edit_form_tags(self): authors = Tag.objects.filter(tag_type=TagType.AUTHOR) circles = Tag.objects.filter(tag_type=TagType.CIRCLE) content = Tag.objects.filter(tag_type=TagType.CONTENT) events = Tag.objects.filter(tag_type=TagType.EVENT) magazines = Tag.objects.filter(tag_type=TagType.MAGAZINE) parodies = Tag.objects.filter(tag_type=TagType.PARODY) scanlators = Tag.objects.filter(tag_type=TagType.SCANLATOR) form = MangaEditForm(request=self.request, instance=self.manga, data={ 'title': 'Test Manga Title', 'category': MangaCategory.VANILLA, 'language': Language.ENGLISH, 'authors': ', '.join([t.name for t in authors]), 'circles': ', '.join([t.name for t in circles]), 'content': ', '.join([t.name for t in content]), 'events': ', '.join([t.name for t in events]), 'magazines': ', '.join([t.name for t in magazines]), 'parodies': ', '.join([t.name for t in parodies]), 'scanlators': ', '.join([t.name for t in scanlators]), 'action': 'save', }) self.assertTrue(form.is_valid()) form.save() manga = Manga.objects.get(id=self.manga.id) tag_dictionary = manga.tag_dictionary self.assertEqual(set(tag_dictionary[TagType.AUTHOR]), set(authors)) self.assertEqual(set(tag_dictionary[TagType.CIRCLE]), set(circles)) self.assertEqual(set(tag_dictionary[TagType.CONTENT]), set(content)) self.assertEqual(set(tag_dictionary[TagType.EVENT]), set(events)) self.assertEqual(set(tag_dictionary[TagType.MAGAZINE]), set(magazines)) self.assertEqual(set(tag_dictionary[TagType.PARODY]), set(parodies)) self.assertEqual(set(tag_dictionary[TagType.SCANLATOR]), set(scanlators))
def test_manga_edit_form_tank_and_collection(self): tank = Tag.objects.filter(tag_type=TagType.TANK)[0] collection = Tag.objects.filter(tag_type=TagType.COLLECTION)[0] form = MangaEditForm(request=self.request, instance=self.manga, data={ 'title': 'Test Manga Title', 'category': MangaCategory.VANILLA, 'language': Language.ENGLISH, 'tank': tank.name, 'tank_chapter': '2', 'collection': collection.name, 'collection_part': '3', 'action': 'save', }) self.assertTrue(form.is_valid()) form.save() manga = Manga.objects.get(id=self.manga.id) self.assertEqual(manga.tank, tank) self.assertEqual(manga.tank_chapter, '2') self.assertEqual(manga.collection, collection) self.assertEqual(manga.collection_part, '3') form = MangaEditForm(request=self.request, instance=manga) self.assertEqual(form.fields['tank'].initial, tank.name) self.assertEqual(form.fields['tank_chapter'].initial, '2') self.assertEqual(form.fields['collection'].initial, collection.name) self.assertEqual(form.fields['collection_part'].initial, '3')
def test_manga_edit_form_markdown_utf8(self): form = MangaEditForm(request=self.request, instance=self.manga, data={ 'title': self.manga.title, 'category': self.manga.category, 'language': self.manga.language, 'markdown': '北京', 'action': 'save', }) self.assertTrue(form.is_valid()) form.save() manga = Manga.objects.get(id=self.manga.id) self.assertEqual(manga.markdown, '北京')
def test_manga_edit_form_publish(self): self.manga.status = MangaStatus.DRAFT self.manga.published_on = None self.manga.save(updated_by=self.user) form = MangaEditForm(request=self.request, instance=self.manga, data={ 'title': 'Test Manga Title', 'category': MangaCategory.VANILLA, 'language': Language.ENGLISH, 'action': 'publish', }) self.assertTrue(form.is_valid()) form.save() manga = Manga.objects.get(id=self.manga.id) self.assertEqual(manga.status, MangaStatus.PUBLISHED) self.assertTrue(manga.published_on)
def test_manga_edit_form_no_changes(self): data = { 'title': self.manga.title, 'category': self.manga.category, 'language': self.manga.language, 'markdown': self.manga.markdown, 'authors': ', '.join([t.name for t in self.manga.tag_dictionary[TagType.AUTHOR]]), 'circles': ', '.join([t.name for t in self.manga.tag_dictionary[TagType.CIRCLE]]), 'content': ', '.join([t.name for t in self.manga.tag_dictionary[TagType.CONTENT]]), 'events': ', '.join([t.name for t in self.manga.tag_dictionary[TagType.EVENT]]), 'magazines': ', '.join([t.name for t in self.manga.tag_dictionary[TagType.MAGAZINE]]), 'parodies': ', '.join([t.name for t in self.manga.tag_dictionary[TagType.PARODY]]), 'scanlators': ', '.join([t.name for t in self.manga.tag_dictionary[TagType.SCANLATOR]]), 'action': 'save', } form = MangaEditForm(request=self.request, instance=self.manga, data=data) self.assertTrue(form.is_valid()) form.save()
def test_manga_edit_form_cover_update(self): self.manga.cover = SimpleUploadedFile('test1.jpg', self.create_test_image_file().getvalue()) self.manga.save(self.user) old_cover = self.manga.cover.file.read() form = MangaEditForm(request=self.request, instance=self.manga, data={ 'title': 'Test Manga Title', 'category': MangaCategory.VANILLA, 'language': Language.ENGLISH, 'action': 'save', }, files={ 'cover': SimpleUploadedFile('test2.jpg', self.create_test_image_file(format='JPEG').getvalue()) }) self.assertTrue(form.is_valid()) form.save() manga = Manga.objects.get(id=self.manga.id) self.assertNotEqual(old_cover, manga.cover.file.read())
def post(self, request, id, slug): manga = self.get_manga_for_edit(id) if request.POST.get('action') == MangaAction.DELETE: manga.delete(updated_by=request.user) return redirect('upload.list') form = MangaEditForm(request=request, instance=manga, data=request.POST, files=request.FILES) if form.is_valid(): manga = form.save() messages.success(request, _('{} has been updated').format(manga.title)) for message in form.messages: messages.info(request, message) return redirect('manga.edit', id=id, slug=manga.slug) messages.error(request, _('{} has not been updated. Please fix the errors on the page and try again.').format(manga.title)) return self.render_to_response({ 'manga': manga, 'form': form, })
def test_manga_edit_form_basic(self): self.manga.tank = Tag.objects.filter(tag_type=TagType.TANK)[0] self.manga.tank_chapter = '1' self.manga.save(updated_by=self.user) form = MangaEditForm(request=self.request, instance=self.manga, data={ 'title': 'Test Manga Title', 'category': MangaCategory.VANILLA, 'language': Language.ENGLISH, 'action': 'save', }) self.assertTrue(form.is_valid()) manga = form.save() self.assertEqual(manga.category, MangaCategory.VANILLA) self.assertEqual(manga.language, Language.ENGLISH) self.assertEqual(manga.title, 'Test Manga Title') self.assertFalse(manga.tank) self.assertFalse(manga.tank_chapter) self.assertFalse(manga.collection) self.assertFalse(manga.collection_part)