mirror of
https://github.com/ajurna/cbwebreader.git
synced 2025-12-06 06:17:17 +00:00
Merge remote-tracking branch 'origin/master'
# Conflicts: # .pre-commit-config.yaml # Dockerfile # frontend/package-lock.json # frontend/package.json # poetry.lock # pyproject.toml
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.syndication.views import Feed
|
||||
from django.db.models import Case, When, PositiveSmallIntegerField, F
|
||||
from django.db.models import Case, When, PositiveSmallIntegerField, F, QuerySet
|
||||
from django.http import HttpRequest
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
@@ -18,7 +18,7 @@ class RecentComicsAPI(Feed):
|
||||
self.user = user_misc.user
|
||||
return user_misc.user
|
||||
|
||||
def items(self) -> ComicBook:
|
||||
def items(self) -> QuerySet[ComicBook]:
|
||||
comics = ComicBook.objects.order_by("-date_added")
|
||||
comics = comics.annotate(
|
||||
classification=Case(
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
from typing import Optional, Union
|
||||
from typing import Optional
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.base_user import AbstractBaseUser
|
||||
from django.core.management.base import BaseCommand, CommandParser
|
||||
from loguru import logger
|
||||
|
||||
from comic.models import ComicBook, Directory
|
||||
from comic.models import Directory
|
||||
from comic.processing import generate_directory
|
||||
|
||||
|
||||
@@ -27,12 +27,11 @@ class Command(BaseCommand):
|
||||
self.OUTPUT = options.get('out', False)
|
||||
self.scan_directory()
|
||||
|
||||
def scan_directory(self, user: Optional[User] = None, directory: Optional[Directory] = None) -> None:
|
||||
def scan_directory(self, user: Optional[AbstractBaseUser] = None, directory: Optional[Directory] = None) -> None:
|
||||
if not user:
|
||||
user_model = get_user_model()
|
||||
user = user_model.objects.first()
|
||||
user: AbstractBaseUser = user_model.objects.first()
|
||||
for item in generate_directory(user, directory):
|
||||
item: Union[Directory, ComicBook]
|
||||
if item.type == 'Directory':
|
||||
if item is Directory:
|
||||
logger.info(item)
|
||||
self.scan_directory(user, item)
|
||||
|
||||
@@ -6,7 +6,7 @@ from typing import NamedTuple, List, Optional, Union
|
||||
|
||||
import rarfile
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.base_user import AbstractBaseUser
|
||||
from django.db.models import Count, Q, F, Case, When, PositiveSmallIntegerField, QuerySet, ExpressionWrapper, \
|
||||
IntegerField
|
||||
|
||||
@@ -14,7 +14,8 @@ from comic import models
|
||||
from comic.errors import NotCompatibleArchive
|
||||
|
||||
|
||||
def generate_directory(user: User, directory: Optional[models.Directory] = None) -> List[QuerySet]:
|
||||
def generate_directory(user: AbstractBaseUser, directory: Optional[models.Directory] = None) \
|
||||
-> List[Union[models.Directory, models.ComicBook]]:
|
||||
dir_path = Path(settings.COMIC_BOOK_VOLUME, directory.path) if directory else settings.COMIC_BOOK_VOLUME
|
||||
files = []
|
||||
|
||||
@@ -74,7 +75,8 @@ def clean_directories(directories: QuerySet, dir_path: Path, directory: Optional
|
||||
models.Directory.objects.get(name=stale_directory.name, parent=directory).delete()
|
||||
|
||||
|
||||
def clean_files(files: QuerySet, user: User, dir_path: Path, directory: Optional[models.Directory] = None) -> None:
|
||||
def clean_files(files: QuerySet, user: AbstractBaseUser, dir_path: Path, directory: Optional[models.Directory] = None) \
|
||||
-> None:
|
||||
file_list = set(x for x in sorted(dir_path.glob('*')) if x.is_file())
|
||||
files_db_set = set(Path(dir_path, x.file_name) for x in files)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user