mirror of
https://github.com/ajurna/cbwebreader.git
synced 2026-11-02 10:36:55 +00:00
- Removed `flake8` and `flake8-annotations` from dependencies, replaced by `ruff` for linting. - Introduced cleaner type hinting and modern Python annotations (PEP 604 style) across multiple modules. - Moved archive processing to a dedicated helper (`comic.archives`) for improved maintainability. - Updated and simplified logic for archive file retrieval, directory cleaning, and user access validation. - Improved error handling and added support for user classification restrictions in API responses.
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.base_user import AbstractBaseUser
|
|
from django.core.management.base import BaseCommand, CommandParser
|
|
from loguru import logger
|
|
|
|
from comic.models import Directory
|
|
from comic.processing import generate_directory
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Scan directories to Update Comic DB"
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__()
|
|
self.OUTPUT = False
|
|
|
|
def add_arguments(self, parser: CommandParser) -> None:
|
|
parser.add_argument(
|
|
'--out',
|
|
action='store_true',
|
|
help='Output to console',
|
|
)
|
|
|
|
def handle(self, *args, **options) -> None:
|
|
self.OUTPUT = options.get('out', False)
|
|
self.scan_directory()
|
|
|
|
def scan_directory(self, user: AbstractBaseUser | None = None, directory: Directory | None = None) -> None:
|
|
if not user:
|
|
user_model = get_user_model()
|
|
user = user_model.objects.first()
|
|
if not user:
|
|
logger.error("No user found, cannot scan comics.")
|
|
return
|
|
for item in generate_directory(user, directory):
|
|
if isinstance(item, Directory):
|
|
logger.info(item)
|
|
self.scan_directory(user, item)
|