Пример #1
0
 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
Пример #2
0
 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)
Пример #3
0
    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
Пример #4
0
 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)
Пример #5
0
 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)