From 0f6b654603d0494886ae7a3db517e627a68e58eb Mon Sep 17 00:00:00 2001 From: Horilla Date: Tue, 12 Aug 2025 10:26:45 +0530 Subject: [PATCH] [FIX] HORILLA_AUTOMATIONS: #871 --- horilla_automations/apps.py | 80 +++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 43 deletions(-) diff --git a/horilla_automations/apps.py b/horilla_automations/apps.py index ab9130e81..ab760462b 100644 --- a/horilla_automations/apps.py +++ b/horilla_automations/apps.py @@ -1,56 +1,50 @@ -from django.apps import AppConfig +""" +App configuration for the Horilla Automations app. +Initializes model choices and starts automation when the server runs. +""" -from horilla_automations.signals import start_automation +import os +import sys + +from django.apps import AppConfig class HorillaAutomationConfig(AppConfig): + """Configuration class for the Horilla Automations Django app.""" + default_auto_field = "django.db.models.BigAutoField" name = "horilla_automations" - def ready(self) -> None: - ready = super().ready() - try: + def ready(self): + """Run initialization tasks when the app is ready.""" + from base.templatetags.horillafilters import app_installed + from employee.models import Employee + from horilla_automations.methods.methods import get_related_models + from horilla_automations.models import MODEL_CHOICES as model_choices - from base.templatetags.horillafilters import app_installed - from employee.models import Employee - from horilla_automations.methods.methods import get_related_models - from horilla_automations.models import MODEL_CHOICES + # Build MODEL_CHOICES + models = [Employee] + if app_installed("recruitment"): + from recruitment.models import Candidate - recruitment_installed = False - if app_installed("recruitment"): - recruitment_installed = True + models.append(Candidate) - models = [Employee] - if recruitment_installed: - from recruitment.models import Candidate + for main_model in models: + for model in get_related_models(main_model): + model_choices.append( + (f"{model.__module__}.{model.__name__}", model.__name__) + ) - models.append(Candidate) + model_choices.append(("employee.models.Employee", "Employee")) + model_choices.append(("pms.models.EmployeeKeyResult", "Employee Key Results")) + model_choices[:] = list(set(model_choices)) # Update in-place - main_models = models - for main_model in main_models: - related_models = get_related_models(main_model) + # Only start automation when running the server + if ( + len(sys.argv) >= 2 + and sys.argv[1] == "runserver" + and os.environ.get("RUN_MAIN") == "true" + ): + from horilla_automations.signals import start_automation - for model in related_models: - path = f"{model.__module__}.{model.__name__}" - MODEL_CHOICES.append((path, model.__name__)) - MODEL_CHOICES.append(("employee.models.Employee", "Employee")) - MODEL_CHOICES.append( - ("pms.models.EmployeeKeyResult", "Employee Key Results"), - ) - MODEL_CHOICES.append( - ("pms.models.Comment", "Key Result Comment"), - ) - - MODEL_CHOICES = list(set(MODEL_CHOICES)) - try: - start_automation() - except Exception as e: - print(e) - """ - Migrations are not affected yet - """ - except: - """ - Models not ready yet - """ - return ready + start_automation()