flamingo-run/django-cloud-tasks

View on GitHub
django_cloud_tasks/management/commands/__init__.py

Summary

Maintainability
A
0 mins
Test Coverage
import abc
from typing import List

from django.apps import apps
from django.core.management.base import BaseCommand


class BaseInitCommand(BaseCommand, abc.ABC):
    action = "initialize"
    name = None

    @property
    def help(self):
        return f"{self.action} {self.name}".title()

    @abc.abstractmethod
    def perform_init(self, app_config, *args, **options) -> List[str]:
        raise NotImplementedError()

    def handle(self, *args, **options):
        app_config = apps.get_app_config("django_cloud_tasks")
        report = self.perform_init(app_config=app_config, *args, **options)

        n = len(report)
        report_str = "\n".join([f"- {name}" for name in report])

        message = f"Successfully {self.action}d {n} {self.name} to domain {app_config.domain}\n{report_str}"
        self.stdout.write(self.style.SUCCESS(message))