59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
from django.contrib import admin
|
|
from django.contrib import messages
|
|
from unfold.admin import ModelAdmin
|
|
from igny8_core.admin.base import SiteSectorAdminMixin, Igny8ModelAdmin
|
|
from .models import PublishingRecord, DeploymentRecord
|
|
from import_export.admin import ExportMixin
|
|
from import_export import resources
|
|
|
|
|
|
class PublishingRecordResource(resources.ModelResource):
|
|
"""Resource class for exporting Publishing Records"""
|
|
class Meta:
|
|
model = PublishingRecord
|
|
fields = ('id', 'content__title', 'site__name', 'sector__name', 'destination',
|
|
'status', 'destination_url', 'published_at', 'created_at')
|
|
export_order = fields
|
|
|
|
|
|
@admin.register(PublishingRecord)
|
|
class PublishingRecordAdmin(ExportMixin, SiteSectorAdminMixin, Igny8ModelAdmin):
|
|
resource_class = PublishingRecordResource
|
|
list_display = [
|
|
'content',
|
|
'site',
|
|
'sector',
|
|
'destination',
|
|
'status',
|
|
'destination_url',
|
|
'published_at',
|
|
]
|
|
list_filter = ['destination', 'status', 'site']
|
|
search_fields = ['content__title', 'destination', 'destination_url']
|
|
readonly_fields = ['created_at', 'updated_at']
|
|
actions = ['bulk_retry_failed']
|
|
|
|
def bulk_retry_failed(self, request, queryset):
|
|
"""Retry failed publishing records"""
|
|
failed_records = queryset.filter(status='failed')
|
|
count = failed_records.update(status='pending')
|
|
self.message_user(request, f'{count} failed record(s) marked for retry.', messages.SUCCESS)
|
|
bulk_retry_failed.short_description = 'Retry failed publishes'
|
|
|
|
|
|
@admin.register(DeploymentRecord)
|
|
class DeploymentRecordAdmin(SiteSectorAdminMixin, Igny8ModelAdmin):
|
|
list_display = [
|
|
'site',
|
|
'sector',
|
|
'version',
|
|
'deployed_version',
|
|
'status',
|
|
'deployment_url',
|
|
'deployed_at',
|
|
]
|
|
list_filter = ['status', 'site']
|
|
search_fields = ['site__name', 'deployment_url']
|
|
readonly_fields = ['created_at', 'updated_at']
|
|
|