diff --git a/ai_integration/models/ai_model.py b/ai_integration/models/ai_model.py
index 04666a6..bf2db12 100644
--- a/ai_integration/models/ai_model.py
+++ b/ai_integration/models/ai_model.py
@@ -9,6 +9,19 @@ class AIModel(models.Model):
_order = 'sequence, name'
_check_company = False # Disable automatic company checks
+ @api.model
+ def _has_provider_modules(self):
+ """Check if any AI provider modules are installed."""
+ modules = ['ollama_ai_integration', 'chatgpt_ai_integration']
+ return any(self.env['ir.module.module'].search([('name', 'in', modules), ('state', '=', 'installed')]))
+
+ @api.model
+ def default_get(self, fields_list):
+ """Override default_get to prevent creation if no provider modules are installed."""
+ if not self._has_provider_modules():
+ raise UserError(_('No AI provider modules are installed. Please install at least one provider module (e.g., Ollama or ChatGPT) before creating an AI model.'))
+ return super().default_get(fields_list)
+
active = fields.Boolean(
string='Active',
default=True,
diff --git a/ai_integration/models/ai_model_stats.py b/ai_integration/models/ai_model_stats.py
index 89442f6..263124c 100644
--- a/ai_integration/models/ai_model_stats.py
+++ b/ai_integration/models/ai_model_stats.py
@@ -6,6 +6,19 @@ class AIModelStats(models.Model):
_description = 'AI Model Usage Statistics'
_order = 'date desc'
+ @api.model
+ def _has_provider_modules(self):
+ """Check if any AI provider modules are installed."""
+ modules = ['ollama_ai_integration', 'chatgpt_ai_integration']
+ return any(self.env['ir.module.module'].search([('name', 'in', modules), ('state', '=', 'installed')]))
+
+ @api.model
+ def default_get(self, fields_list):
+ """Override default_get to prevent creation if no provider modules are installed."""
+ if not self._has_provider_modules():
+ raise UserError(_('No AI provider modules are installed. Please install at least one provider module (e.g., Ollama or ChatGPT) before creating model statistics.'))
+ return super().default_get(fields_list)
+
model_id = fields.Many2one('ai.model', string='Model', required=True, ondelete='cascade')
provider_instance_id = fields.Many2one(
related='model_id.provider_instance_id',
diff --git a/ai_integration/models/ai_provider_instance.py b/ai_integration/models/ai_provider_instance.py
index 4469c6f..012bbd0 100644
--- a/ai_integration/models/ai_provider_instance.py
+++ b/ai_integration/models/ai_provider_instance.py
@@ -11,6 +11,19 @@ class AIProviderInstance(models.Model):
_check_company = False # Disable automatic company checks
_inherit = ['mail.thread', 'ai.base.mixin']
+ @api.model
+ def _has_provider_modules(self):
+ """Check if any AI provider modules are installed."""
+ modules = ['ollama_ai_integration', 'chatgpt_ai_integration']
+ return any(self.env['ir.module.module'].search([('name', 'in', modules), ('state', '=', 'installed')]))
+
+ @api.model
+ def default_get(self, fields_list):
+ """Override default_get to prevent creation if no provider modules are installed."""
+ if not self._has_provider_modules():
+ raise UserError(_('No AI provider modules are installed. Please install at least one provider module (e.g., Ollama or ChatGPT) before creating a provider instance.'))
+ return super().default_get(fields_list)
+
active = fields.Boolean(
string='Active',
default=True,
diff --git a/ai_integration/views/ai_model_stats_views.xml b/ai_integration/views/ai_model_stats_views.xml
index d756d78..b8370f4 100644
--- a/ai_integration/views/ai_model_stats_views.xml
+++ b/ai_integration/views/ai_model_stats_views.xml
@@ -114,10 +114,5 @@
-
-
+
diff --git a/ai_integration/views/ai_model_views.xml b/ai_integration/views/ai_model_views.xml
index 85e8372..8d28b35 100644
--- a/ai_integration/views/ai_model_views.xml
+++ b/ai_integration/views/ai_model_views.xml
@@ -92,19 +92,5 @@
-
-
-
-
-
diff --git a/ai_integration/views/ai_provider_instance_views.xml b/ai_integration/views/ai_provider_instance_views.xml
index 4630d19..753df54 100644
--- a/ai_integration/views/ai_provider_instance_views.xml
+++ b/ai_integration/views/ai_provider_instance_views.xml
@@ -103,10 +103,5 @@
-
-
+
diff --git a/ai_integration/views/menu.xml b/ai_integration/views/menu.xml
index 47552f7..83d6948 100644
--- a/ai_integration/views/menu.xml
+++ b/ai_integration/views/menu.xml
@@ -1,14 +1,43 @@
-
-
+ parent="menu_ai_root"
+ sequence="10"/>
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ai_integration/views/res_company_views.xml b/ai_integration/views/res_company_views.xml
index 37a2c6e..6349ecb 100644
--- a/ai_integration/views/res_company_views.xml
+++ b/ai_integration/views/res_company_views.xml
@@ -10,10 +10,5 @@
{'module': 'ai_integration'}
-
+