37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
from django.contrib import admin
|
|
from .models import Company, Profile, AIChatHistory, AIConfiguration, SyncHistoryLog
|
|
from .utils import encrypt_value, decrypt_value
|
|
|
|
@admin.register(Company)
|
|
class CompanyAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'tenant_id', 'created_at')
|
|
search_fields = ('name', 'tenant_id')
|
|
|
|
@admin.register(Profile)
|
|
class ProfileAdmin(admin.ModelAdmin):
|
|
list_display = ('user', 'company', 'role')
|
|
list_filter = ('company', 'role')
|
|
|
|
@admin.register(AIConfiguration)
|
|
class AIConfigurationAdmin(admin.ModelAdmin):
|
|
list_display = ('company', 'provider', 'is_active', 'last_sync')
|
|
list_filter = ('provider', 'is_active')
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
# Encrypt API key before saving if it's changed or new
|
|
if 'api_key' in form.changed_data or not change:
|
|
obj.api_key = encrypt_value(obj.api_key)
|
|
super().save_model(request, obj, form, change)
|
|
|
|
@admin.register(AIChatHistory)
|
|
class AIChatHistoryAdmin(admin.ModelAdmin):
|
|
list_display = ('chat_title', 'company', 'ai_chat_engine', 'chat_last_date')
|
|
list_filter = ('company', 'ai_chat_engine')
|
|
search_fields = ('chat_title', 'chat_content')
|
|
|
|
@admin.register(SyncHistoryLog)
|
|
class SyncHistoryLogAdmin(admin.ModelAdmin):
|
|
list_display = ('timestamp', 'company', 'configuration', 'status', 'records_synced')
|
|
list_filter = ('status', 'company')
|
|
readonly_fields = ('timestamp', 'company', 'configuration', 'status', 'records_synced', 'error_message')
|