library bumps

version bump.
added inital build action
This commit is contained in:
Peter Dwyer
2023-08-28 11:14:53 +01:00
parent bccbff8b33
commit db23064929
9 changed files with 75 additions and 72 deletions

View File

@@ -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(

View File

@@ -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)

View File

@@ -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)