def get_tag_list(self): tag_list = [] for tag_type, name in self.tags: tag = get_or_create_tag_by_name_or_alias(tag_type, name, self.request.user) if tag.name != name: self.messages.append(_('{} has been replaced with {}'.format(name, tag.name))) tag_list.append(tag) return tag_list
def test_get_or_create_tag_by_name_or_alias_create(self): self.assertFalse(Tag.objects.filter(tag_type=TagType.AUTHOR, name='Test Tag').exists()) tag = get_or_create_tag_by_name_or_alias(TagType.AUTHOR, 'Test Tag', self.user) self.assertEqual(tag.tag_type, TagType.AUTHOR) self.assertEqual(tag.name, 'Test Tag') self.assertEqual(tag.slug, 'test-tag') self.assertEqual(tag.updated_by, self.user) self.assertEqual(tag.created_by, self.user)
def save(self): manga = super().save(commit=False) cd = self.cleaned_data tank_name, tank_chapter = cd.get('tank'), cd.get('tank_chapter') if tank_name and tank_chapter: manga.tank = get_or_create_tag_by_name_or_alias(TagType.TANK, tank_name, self.request.user) manga.tank_chapter = tank_chapter else: manga.tank = None manga.tank_chapter = None collection_name, collection_part = cd.get('collection'), cd.get('collection_part') if collection_name and collection_part: manga.collection = get_or_create_tag_by_name_or_alias(TagType.COLLECTION, collection_name, self.request.user) manga.collection_part = collection_part else: manga.collection = None manga.collection_part = None if self.html: manga.html = self.html if cd.get('action') == MangaAction.PUBLISH: manga.status = MangaStatus.PUBLISHED manga.published_on = timezone.now() send_email_alert( subject='[Fufufuu] Published: {}'.format(manga.title), message=manga.info_text, ) manga.save(self.request.user) manga.tags.clear() manga.tags.add(*self.get_tag_list()) if manga.status == MangaStatus.PUBLISHED: MangaArchiveGenerator.generate(manga) if manga.tank and not manga.tank.cover: manga.tank.set_default_cover() if manga.collection and not manga.collection.cover: manga.collection.set_default_cover() return manga
def test_get_or_create_tag_by_name_or_alias_in_alias(self): expected_tag = Tag.objects.all()[0] TagAlias.objects.create(tag=expected_tag, language=Language.ENGLISH, name='Test Alias') actual_tag = get_or_create_tag_by_name_or_alias(expected_tag.tag_type, 'Test Alias', self.user) self.assertEqual(expected_tag, actual_tag)
def test_get_or_create_tag_by_name_or_alias_in_tag(self): expected_tag = Tag.objects.all()[0] actual_tag = get_or_create_tag_by_name_or_alias(expected_tag.tag_type, expected_tag.name, self.user) self.assertEqual(expected_tag, actual_tag)