fixed ai provider admin and prevent accidental update

This commit is contained in:
vabene1111
2025-09-19 17:02:01 +02:00
parent 30b37bf0b6
commit 4515eba9d7
3 changed files with 17 additions and 5 deletions

View File

@@ -91,8 +91,8 @@ admin.site.register(SearchPreference, SearchPreferenceAdmin)
class AiProviderAdmin(admin.ModelAdmin): class AiProviderAdmin(admin.ModelAdmin):
list_display = ('name', 'space', 'model',) list_display = ('name', 'space', 'model_name',)
search_fields = ('name', 'space', 'model',) search_fields = ('name', 'space', 'model_name',)
admin.site.register(AiProvider, AiProviderAdmin) admin.site.register(AiProvider, AiProviderAdmin)

View File

@@ -417,6 +417,9 @@ class AiProvider(models.Model):
created_at = models.DateTimeField(auto_now_add=True) created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True) updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class AiLog(models.Model, PermissionModelMixin): class AiLog(models.Model, PermissionModelMixin):
F_FILE_IMPORT = 'FILE_IMPORT' F_FILE_IMPORT = 'FILE_IMPORT'
@@ -437,6 +440,9 @@ class AiLog(models.Model, PermissionModelMixin):
created_at = models.DateTimeField(auto_now_add=True) created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=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): class ConnectorConfig(models.Model, PermissionModelMixin):
HOMEASSISTANT = 'HomeAssistant' HOMEASSISTANT = 'HomeAssistant'

View File

@@ -335,17 +335,23 @@ class AiProviderSerializer(serializers.ModelSerializer):
return super().create(validated_data) return super().create(validated_data)
def update(self, instance, 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) 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 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: if ('space' not in validated_data or not validated_data['space']) and self.context['request'].user.is_superuser:
validated_data['space'] = None validated_data['space'] = None
else: 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 return validated_data