46 lines
1.9 KiB
Python
46 lines
1.9 KiB
Python
from django.contrib import admin
|
|
from django.contrib import messages
|
|
from unfold.admin import ModelAdmin
|
|
from igny8_core.admin.base import AccountAdminMixin, Igny8ModelAdmin
|
|
from .models import OptimizationTask
|
|
from import_export.admin import ExportMixin
|
|
from import_export import resources
|
|
|
|
|
|
class OptimizationTaskResource(resources.ModelResource):
|
|
"""Resource class for exporting Optimization Tasks"""
|
|
class Meta:
|
|
model = OptimizationTask
|
|
fields = ('id', 'content__title', 'account__name', 'status',
|
|
'credits_used', 'created_at')
|
|
export_order = fields
|
|
|
|
|
|
@admin.register(OptimizationTask)
|
|
class OptimizationTaskAdmin(ExportMixin, AccountAdminMixin, Igny8ModelAdmin):
|
|
resource_class = OptimizationTaskResource
|
|
list_display = ['content', 'account', 'status', 'credits_used', 'created_at']
|
|
list_filter = ['status', 'created_at']
|
|
search_fields = ['content__title', 'account__name']
|
|
readonly_fields = ['created_at', 'updated_at']
|
|
actions = [
|
|
'bulk_mark_completed',
|
|
'bulk_mark_failed',
|
|
'bulk_retry',
|
|
]
|
|
|
|
def bulk_mark_completed(self, request, queryset):
|
|
updated = queryset.update(status='completed')
|
|
self.message_user(request, f'{updated} optimization task(s) marked as completed.', messages.SUCCESS)
|
|
bulk_mark_completed.short_description = 'Mark as completed'
|
|
|
|
def bulk_mark_failed(self, request, queryset):
|
|
updated = queryset.update(status='failed')
|
|
self.message_user(request, f'{updated} optimization task(s) marked as failed.', messages.SUCCESS)
|
|
bulk_mark_failed.short_description = 'Mark as failed'
|
|
|
|
def bulk_retry(self, request, queryset):
|
|
updated = queryset.filter(status='failed').update(status='pending')
|
|
self.message_user(request, f'{updated} failed optimization task(s) queued for retry.', messages.SUCCESS)
|
|
bulk_retry.short_description = 'Retry failed tasks'
|