From b7dcdc5d9450ee2a689007314125e9b0461f28f8 Mon Sep 17 00:00:00 2001 From: ajurna Date: Mon, 22 Jun 2015 13:24:37 +0100 Subject: [PATCH] made sorting work in all locations. --- comic/models.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++--- comic/util.py | 41 +--------------------------------------- comic/views.py | 4 ++-- 3 files changed, 50 insertions(+), 45 deletions(-) diff --git a/comic/models.py b/comic/models.py index d2e90b5..4ea5a3f 100644 --- a/comic/models.py +++ b/comic/models.py @@ -2,6 +2,7 @@ from django.db import models from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode from comic import rarfile +from comic.util import get_ordered_dir_list import zipfile from os import path import os @@ -86,7 +87,7 @@ class ComicBook(models.Model): base_dir = Setting.objects.get(name='BASE_DIR').value comic_path = urlsafe_base64_decode(comic_path) directory, comic = path.split(comic_path) - dir_list = os.listdir(path.join(base_dir, directory)) + dir_list = get_ordered_dir_list(path.join(base_dir, directory)) comic_index = dir_list.index(comic) if comic_index == 0: comic_path = urlsafe_base64_encode(directory) @@ -111,7 +112,7 @@ class ComicBook(models.Model): base_dir = Setting.objects.get(name='BASE_DIR') comic_path = urlsafe_base64_decode(comic_path) directory, comic = path.split(comic_path) - dir_list = os.listdir(path.join(base_dir.value, directory)) + dir_list = get_ordered_dir_list(path.join(base_dir.value, directory)) comic_index = dir_list.index(comic) try: next_comic = dir_list[comic_index + 1] @@ -167,9 +168,52 @@ class ComicBook(models.Model): content_type='image/gif') page.save() i += 1 - return book + class DirFile: + def __init__(self): + self.name = '' + self.isdir = False + self.icon = '' + self.iscb = False + self.location = '' + self.label = '' + self.cur_page = 0 + + def __str__(self): + return self.name + + @staticmethod + def generate_directory(base_dir, comic_path): + files = [] + for fn in get_ordered_dir_list(path.join(base_dir, comic_path)): + df = ComicBook.DirFile() + df.name = fn + if path.isdir(path.join(base_dir, comic_path, fn)): + df.isdir = True + df.icon = 'glyphicon-folder-open' + df.location = urlsafe_base64_encode(path.join(comic_path, fn)) + elif fn.lower().endswith('cbz') or fn.lower().endswith('cbr'): + df.iscb = True + df.icon = 'glyphicon-book' + df.location = urlsafe_base64_encode(path.join(comic_path, fn)) + try: + book = ComicBook.objects.get(file_name=fn) + last_page = book.last_read_page + if book.unread: + df.label = 'Unread' + elif (last_page + 1) == book.page_count: + df.label = 'Read' + df.cur_page = last_page + else: + label_text = '%s/%s' % \ + (last_page + 1, book.page_count) + df.label = label_text + df.cur_page = last_page + except ComicBook.DoesNotExist: + df.label = 'Unprocessed' + files.append(df) + return files class Comic: def __init__(self): self.name = '' diff --git a/comic/util.py b/comic/util.py index d7a618b..a1104cf 100644 --- a/comic/util.py +++ b/comic/util.py @@ -1,7 +1,5 @@ from django.utils.http import urlsafe_base64_encode -from comic.models import ComicBook - from os import path import os @@ -35,18 +33,7 @@ def generate_breadcrumbs(comic_path): return output -class DirFile: - def __init__(self): - self.name = '' - self.isdir = False - self.icon = '' - self.iscb = False - self.location = '' - self.label = '' - self.cur_page = 0 - def __str__(self): - return self.name def get_ordered_dir_list(folder): directories = [] @@ -60,30 +47,4 @@ def get_ordered_dir_list(folder): print(directories) return sorted(directories) + sorted(files) -def generate_directory(base_dir, comic_path): - files = [] - for fn in get_ordered_dir_list(path.join(base_dir, comic_path)): - df = DirFile() - df.name = fn - if path.isdir(path.join(base_dir, comic_path, fn)): - df.isdir = True - df.icon = 'glyphicon-folder-open' - df.location = urlsafe_base64_encode(path.join(comic_path, fn)) - elif fn.lower().endswith('cbz') or fn.lower().endswith('cbr'): - df.iscb = True - df.icon = 'glyphicon-book' - df.location = urlsafe_base64_encode(path.join(comic_path, fn)) - try: - book = ComicBook.objects.get(file_name=fn) - if book.unread: - df.label = 'Unread' - else: - last_page = book.last_read_page - label_text = '%s/%s' % \ - (last_page, book.page_count) - df.label = label_text - df.cur_page = last_page - except ComicBook.DoesNotExist: - df.label = 'Unprocessed' - files.append(df) - return files + diff --git a/comic/views.py b/comic/views.py index 4362d58..76d90e8 100644 --- a/comic/views.py +++ b/comic/views.py @@ -5,7 +5,7 @@ from django.shortcuts import render from django.contrib.auth.decorators import login_required from comic.models import Setting, ComicBook -from util import generate_breadcrumbs, generate_directory +from util import generate_breadcrumbs from os import path @@ -14,7 +14,7 @@ def comic_list(request, comic_path=''): base_dir = Setting.objects.get(name='BASE_DIR').value comic_path = urlsafe_base64_decode(comic_path) breadcrumbs = generate_breadcrumbs(comic_path) - files = generate_directory(base_dir, comic_path) + files = ComicBook.generate_directory(base_dir, comic_path) context = RequestContext(request, { 'file_list': files, 'breadcrumbs': breadcrumbs,