Remove aws-admin pattern completely - use account + GlobalIntegrationSettings
ARCHITECTURE FIX: - aws-admin IntegrationSettings will NEVER exist (it's a legacy pattern) - Only user's own account IntegrationSettings can exist (if they override defaults) - Otherwise GlobalIntegrationSettings is used directly - API keys are ALWAYS from GlobalIntegrationSettings (accounts cannot override API keys) REMOVED: - All aws-admin Account lookups - All aws-admin IntegrationSettings fallback attempts - Confusing nested try/except chains CORRECT FLOW NOW: 1. Try account's IntegrationSettings for config overrides 2. Use GlobalIntegrationSettings for missing values and ALL API keys 3. No intermediate aws-admin lookups
This commit is contained in:
@@ -220,17 +220,15 @@ class GenerateImagePromptsFunction(BaseAIFunction):
|
||||
def _get_max_in_article_images(self, account) -> int:
|
||||
"""
|
||||
Get max_in_article_images from settings.
|
||||
Tries aws-admin IntegrationSettings first, falls back to GlobalIntegrationSettings.
|
||||
Uses account's IntegrationSettings override, or GlobalIntegrationSettings.
|
||||
"""
|
||||
from igny8_core.modules.system.models import IntegrationSettings
|
||||
from igny8_core.modules.system.global_settings_models import GlobalIntegrationSettings
|
||||
from igny8_core.auth.models import Account
|
||||
|
||||
# Try aws-admin IntegrationSettings first (legacy pattern)
|
||||
# Try account-specific override first
|
||||
try:
|
||||
system_account = Account.objects.get(slug='aws-admin')
|
||||
settings = IntegrationSettings.objects.get(
|
||||
account=system_account,
|
||||
account=account,
|
||||
integration_type='image_generation',
|
||||
is_active=True
|
||||
)
|
||||
@@ -238,15 +236,15 @@ class GenerateImagePromptsFunction(BaseAIFunction):
|
||||
|
||||
if max_images is not None:
|
||||
max_images = int(max_images)
|
||||
logger.info(f"Using max_in_article_images={max_images} from aws-admin IntegrationSettings")
|
||||
logger.info(f"Using max_in_article_images={max_images} from account {account.id} IntegrationSettings override")
|
||||
return max_images
|
||||
except (Account.DoesNotExist, IntegrationSettings.DoesNotExist):
|
||||
logger.debug("aws-admin IntegrationSettings not found, falling back to GlobalIntegrationSettings")
|
||||
except IntegrationSettings.DoesNotExist:
|
||||
logger.debug(f"No IntegrationSettings override for account {account.id}, using GlobalIntegrationSettings")
|
||||
|
||||
# Fall back to GlobalIntegrationSettings
|
||||
# Use GlobalIntegrationSettings default
|
||||
global_settings = GlobalIntegrationSettings.get_instance()
|
||||
max_images = global_settings.max_in_article_images
|
||||
logger.info(f"Using max_in_article_images={max_images} from GlobalIntegrationSettings")
|
||||
logger.info(f"Using max_in_article_images={max_images} from GlobalIntegrationSettings (account {account.id})")
|
||||
return max_images
|
||||
|
||||
def _extract_content_elements(self, content: Content, max_images: int) -> Dict:
|
||||
|
||||
@@ -68,25 +68,23 @@ class GenerateImagesFunction(BaseAIFunction):
|
||||
raise ValueError("No tasks found")
|
||||
|
||||
# Get image generation settings
|
||||
# Try aws-admin IntegrationSettings first (legacy), fall back to GlobalIntegrationSettings
|
||||
# Try account-specific override, otherwise use GlobalIntegrationSettings
|
||||
from igny8_core.modules.system.models import IntegrationSettings
|
||||
from igny8_core.modules.system.global_settings_models import GlobalIntegrationSettings
|
||||
from igny8_core.auth.models import Account
|
||||
|
||||
image_settings = {}
|
||||
try:
|
||||
system_account = Account.objects.get(slug='aws-admin')
|
||||
integration = IntegrationSettings.objects.get(
|
||||
account=system_account,
|
||||
account=account,
|
||||
integration_type='image_generation',
|
||||
is_active=True
|
||||
)
|
||||
image_settings = integration.config or {}
|
||||
logger.info("Using image settings from aws-admin IntegrationSettings")
|
||||
except (Account.DoesNotExist, IntegrationSettings.DoesNotExist):
|
||||
logger.info("aws-admin IntegrationSettings not found, using GlobalIntegrationSettings")
|
||||
logger.info(f"Using image settings from account {account.id} IntegrationSettings override")
|
||||
except IntegrationSettings.DoesNotExist:
|
||||
logger.info(f"No IntegrationSettings override for account {account.id}, using GlobalIntegrationSettings")
|
||||
|
||||
# Fall back to GlobalIntegrationSettings for missing values
|
||||
# Use GlobalIntegrationSettings for missing values
|
||||
global_settings = GlobalIntegrationSettings.get_instance()
|
||||
|
||||
# Extract settings with defaults from global settings
|
||||
|
||||
Reference in New Issue
Block a user