diff --git a/agent_base/admin.py b/agent_base/admin.py index 6e2014d..594d8fe 100644 --- a/agent_base/admin.py +++ b/agent_base/admin.py @@ -4,26 +4,71 @@ from .models import BaseAgent @admin.register(BaseAgent) class BaseAgentAdmin(admin.ModelAdmin): - list_display = ['name', 'slug', 'is_active', 'price', 'created_at'] - list_filter = ['is_active', 'agent_type', 'created_at'] + 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', 'agent_type') + 'fields': ('name', 'slug', 'description', 'category', 'agent_type'), + 'description': 'Core agent information and classification' }), - ('Configuration', { - 'fields': ('is_active', 'price', 'icon') + ('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',) + '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 \ No newline at end of file + 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 \ No newline at end of file