Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
60 lines
2.0 KiB
Python
Executable File
60 lines
2.0 KiB
Python
Executable File
import importlib
|
|
import typing
|
|
|
|
from django.conf import settings
|
|
from django.core import management
|
|
from tqdm import tqdm
|
|
|
|
|
|
class Command(management.BaseCommand):
|
|
help = "factory database with"
|
|
|
|
def print(self, message, is_type="success"):
|
|
if is_type == "success":
|
|
self.stdout.write(self.style.SUCCESS(message))
|
|
else:
|
|
self.stdout.write(self.style.ERROR(message))
|
|
|
|
def handle(self, *args, **options):
|
|
FACTORYS: list[typing.Any] | typing.Any = (
|
|
settings.FACTORYS if hasattr(settings, "FACTORYS") else []
|
|
)
|
|
|
|
if len(FACTORYS) == 0:
|
|
self.print(
|
|
"FACTORYS not defined:\n\nsettings file add FACTORYS variable",
|
|
"error",
|
|
)
|
|
return
|
|
|
|
for factory in FACTORYS:
|
|
count = factory[1]
|
|
factory = factory[0]
|
|
|
|
class_name = str(factory).split(".")[-1]
|
|
module_path = ".".join(str(factory).split(".")[:-1])
|
|
module = importlib.import_module(module_path)
|
|
my_class = getattr(module, class_name)()
|
|
|
|
if not hasattr(my_class, "handle"):
|
|
self.print("Handle function not found", "error")
|
|
return
|
|
if not hasattr(my_class, "model") or my_class.model is None:
|
|
self.print("Model not found", "error")
|
|
return
|
|
try:
|
|
self.print(f"Start factory: {factory}")
|
|
progress_bar = tqdm(total=count)
|
|
for i in range(count):
|
|
progress_bar.update(1)
|
|
try:
|
|
data = my_class.handle()
|
|
model = my_class.model
|
|
model.objects.create(**data)
|
|
except Exception as e:
|
|
self.print(e, "error")
|
|
except Exception as e:
|
|
self.print(f"ERROR: {class_name} {e}", "error")
|
|
return
|
|
self.print(f"SUCCESS: {class_name}")
|