Esempio n. 1
0
    def get(self, request, id, slug):
        context = {}
        manga = self.get_manga_for_view(id)

        manga_page_list = list(manga.mangapage_set.order_by('page'))
        payload = self.get_payload(manga_page_list)

        if manga.tank_id:
            manga_list = Manga.published.filter(tank_id=manga.tank_id)
            context['chapter_list'] = natural_sort(manga_list, 'tank_chapter')

        if manga.collection_id:
            manga_list = Manga.published.filter(collection_id=manga.collection_id)
            context['collection_list'] = natural_sort(manga_list, 'collection_part')

        try:
            archive = MangaArchive.objects.get(manga=manga)
        except MangaArchive.DoesNotExist:
            archive = MangaArchiveGenerator.generate(manga)

        download_available = (archive != None) and os.path.exists(archive.file.path)
        if not download_available:
            MangaArchiveGenerator.generate(manga)

        context.update({
            'archive': archive,
            'download_available': download_available,
            'manga': manga,
            'page_count': len(manga_page_list),
            'payload': payload,
        })
        return self.render_to_response(context)
Esempio n. 2
0
    def test_natural_sort(self):
        class TestObj:
            def __init__(self, value): self.value = value

        expected_list = [
            TestObj('5'),
            TestObj('007'),
            TestObj('08'),
            TestObj('9'),
            TestObj('10'),
            TestObj('011'),
            TestObj('12'),
        ]

        for test_list in permutations(expected_list):
            self.assertEqual(natural_sort(test_list, 'value'), expected_list)