diff --git a/cookbook/admin.py b/cookbook/admin.py index fbfdaaa2b..cf0470ac9 100644 --- a/cookbook/admin.py +++ b/cookbook/admin.py @@ -91,8 +91,8 @@ admin.site.register(SearchPreference, SearchPreferenceAdmin) class AiProviderAdmin(admin.ModelAdmin): - list_display = ('name', 'space', 'model',) - search_fields = ('name', 'space', 'model',) + list_display = ('name', 'space', 'model_name',) + search_fields = ('name', 'space', 'model_name',) admin.site.register(AiProvider, AiProviderAdmin) diff --git a/cookbook/models.py b/cookbook/models.py index a6cbb2a75..3a287ef8c 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -417,6 +417,9 @@ class AiProvider(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) + def __str__(self): + return self.name + class AiLog(models.Model, PermissionModelMixin): F_FILE_IMPORT = 'FILE_IMPORT' @@ -437,6 +440,9 @@ class AiLog(models.Model, PermissionModelMixin): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) + def __str__(self): + return f"{self.function} {self.ai_provider.name} {self.created_at}" + class ConnectorConfig(models.Model, PermissionModelMixin): HOMEASSISTANT = 'HomeAssistant' diff --git a/cookbook/serializer.py b/cookbook/serializer.py index 3d383682e..7f76a9070 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -335,17 +335,23 @@ class AiProviderSerializer(serializers.ModelSerializer): return super().create(validated_data) def update(self, instance, validated_data): - validated_data = self.handle_global_space_logic(validated_data) + validated_data = self.handle_global_space_logic(validated_data, instance=instance) return super().update(instance, validated_data) - def handle_global_space_logic(self, validated_data): + def handle_global_space_logic(self, validated_data, instance=None): """ allow superusers to create AI providers without a space but make sure everyone else only uses their own space """ if ('space' not in validated_data or not validated_data['space']) and self.context['request'].user.is_superuser: validated_data['space'] = None else: - validated_data['space'] = self.context['request'].space + if instance: + validated_data['space'] = instance.space + else: + validated_data['space'] = self.context['request'].space + + if 'log_credit_cost' in validated_data and not self.context['request'].user.is_superuser: + del validated_data['log_credit_cost'] return validated_data