mirror of
https://github.com/thecyberlearn/quantum-ai.git
synced 2026-08-18 22:53:00 +00:00
- Add explicit list_display_links to make agent names clickable - Enable list_editable for quick price/status changes in list view - Add comprehensive permission methods to ensure edit access - Improve admin interface with better fieldsets and descriptions - Add useful admin actions (activate/deactivate/reset ratings) - Enhanced filtering and search capabilities - Fix list_display/list_editable mismatch that prevented editing 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
74 lines
2.8 KiB
Python
74 lines
2.8 KiB
Python
from django.contrib import admin
|
|
from .models import BaseAgent
|
|
|
|
|
|
@admin.register(BaseAgent)
|
|
class BaseAgentAdmin(admin.ModelAdmin):
|
|
list_display = ['name', 'slug', 'is_active', 'price', 'agent_type', 'created_at']
|
|
list_display_links = ['name', 'slug'] # Make these clickable for editing
|
|
list_filter = ['is_active', 'agent_type', 'category', 'created_at']
|
|
search_fields = ['name', 'slug', 'description']
|
|
readonly_fields = ['slug', 'created_at', 'updated_at']
|
|
ordering = ['name']
|
|
list_editable = ['is_active', 'price'] # Allow quick editing in list view
|
|
list_per_page = 25
|
|
|
|
fieldsets = (
|
|
('Basic Information', {
|
|
'fields': ('name', 'slug', 'description', 'category', 'agent_type'),
|
|
'description': 'Core agent information and classification'
|
|
}),
|
|
('Pricing & Display', {
|
|
'fields': ('price', 'icon', 'is_active'),
|
|
'description': 'Pricing and visual configuration'
|
|
}),
|
|
('Statistics', {
|
|
'fields': ('rating', 'review_count'),
|
|
'classes': ('collapse',),
|
|
'description': 'Agent performance metrics'
|
|
}),
|
|
('Timestamps', {
|
|
'fields': ('created_at', 'updated_at'),
|
|
'classes': ('collapse',),
|
|
'description': 'Creation and modification dates'
|
|
}),
|
|
)
|
|
|
|
actions = ['activate_agents', 'deactivate_agents', 'reset_ratings']
|
|
|
|
def get_readonly_fields(self, request, obj=None):
|
|
if obj: # editing an existing object
|
|
return self.readonly_fields + ('agent_type',)
|
|
return self.readonly_fields
|
|
|
|
def price_display(self, obj):
|
|
return f"{obj.price} AED"
|
|
price_display.short_description = 'Price'
|
|
price_display.admin_order_field = 'price'
|
|
|
|
def activate_agents(self, request, queryset):
|
|
updated = queryset.update(is_active=True)
|
|
self.message_user(request, f'{updated} agents were successfully activated.')
|
|
activate_agents.short_description = "Activate selected agents"
|
|
|
|
def deactivate_agents(self, request, queryset):
|
|
updated = queryset.update(is_active=False)
|
|
self.message_user(request, f'{updated} agents were successfully deactivated.')
|
|
deactivate_agents.short_description = "Deactivate selected agents"
|
|
|
|
def reset_ratings(self, request, queryset):
|
|
updated = queryset.update(rating=4.5, review_count=0)
|
|
self.message_user(request, f'{updated} agents had their ratings reset.')
|
|
reset_ratings.short_description = "Reset ratings to default"
|
|
|
|
def has_add_permission(self, request):
|
|
return True
|
|
|
|
def has_change_permission(self, request, obj=None):
|
|
return True
|
|
|
|
def has_delete_permission(self, request, obj=None):
|
|
return True
|
|
|
|
def has_view_permission(self, request, obj=None):
|
|
return True |