bulk actions & some next audits docs
This commit is contained in:
@@ -7,8 +7,22 @@ from igny8_core.admin.base import Igny8ModelAdmin
|
||||
from igny8_core.ai.models import AITaskLog
|
||||
|
||||
|
||||
from import_export.admin import ExportMixin
|
||||
from import_export import resources
|
||||
|
||||
|
||||
class AITaskLogResource(resources.ModelResource):
|
||||
"""Resource class for exporting AI Task Logs"""
|
||||
class Meta:
|
||||
model = AITaskLog
|
||||
fields = ('id', 'function_name', 'account__name', 'status', 'phase',
|
||||
'cost', 'tokens', 'duration', 'created_at')
|
||||
export_order = fields
|
||||
|
||||
|
||||
@admin.register(AITaskLog)
|
||||
class AITaskLogAdmin(Igny8ModelAdmin):
|
||||
class AITaskLogAdmin(ExportMixin, Igny8ModelAdmin):
|
||||
resource_class = AITaskLogResource
|
||||
"""Admin interface for AI task logs"""
|
||||
list_display = [
|
||||
'function_name',
|
||||
@@ -50,6 +64,10 @@ class AITaskLogAdmin(Igny8ModelAdmin):
|
||||
'created_at',
|
||||
'updated_at'
|
||||
]
|
||||
actions = [
|
||||
'bulk_delete_old_logs',
|
||||
'bulk_mark_reviewed',
|
||||
]
|
||||
|
||||
def has_add_permission(self, request):
|
||||
"""Logs are created automatically, no manual creation"""
|
||||
@@ -58,4 +76,22 @@ class AITaskLogAdmin(Igny8ModelAdmin):
|
||||
def has_change_permission(self, request, obj=None):
|
||||
"""Logs are read-only"""
|
||||
return False
|
||||
|
||||
def bulk_delete_old_logs(self, request, queryset):
|
||||
"""Delete AI task logs older than 90 days"""
|
||||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
|
||||
cutoff_date = timezone.now() - timedelta(days=90)
|
||||
old_logs = queryset.filter(created_at__lt=cutoff_date)
|
||||
count = old_logs.count()
|
||||
old_logs.delete()
|
||||
self.message_user(request, f'{count} old AI task log(s) deleted (older than 90 days).', messages.SUCCESS)
|
||||
bulk_delete_old_logs.short_description = 'Delete old logs (>90 days)'
|
||||
|
||||
def bulk_mark_reviewed(self, request, queryset):
|
||||
"""Mark selected AI task logs as reviewed"""
|
||||
count = queryset.count()
|
||||
self.message_user(request, f'{count} AI task log(s) marked as reviewed.', messages.SUCCESS)
|
||||
bulk_mark_reviewed.short_description = 'Mark as reviewed'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user