Files
cbwebreader/comic/management/commands/scan_comics.py
T
ajurna 1148f4072b **Replace Flake8 with Ruff, refactor type hints, and enhance archive processing logic**
- 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.
2026-10-13 11:36:28 +01:00

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)