Apply ab0d6469: Add admin bulk actions across all models
This commit is contained in:
@@ -16,8 +16,18 @@ class SyncEventResource(resources.ModelResource):
|
||||
export_order = fields
|
||||
|
||||
|
||||
class SiteIntegrationResource(resources.ModelResource):
|
||||
"""Resource class for exporting Site Integrations"""
|
||||
class Meta:
|
||||
model = SiteIntegration
|
||||
fields = ('id', 'site__name', 'platform', 'platform_type', 'is_active',
|
||||
'sync_enabled', 'sync_status', 'last_sync_at', 'created_at')
|
||||
export_order = fields
|
||||
|
||||
|
||||
@admin.register(SiteIntegration)
|
||||
class SiteIntegrationAdmin(AccountAdminMixin, Igny8ModelAdmin):
|
||||
class SiteIntegrationAdmin(ExportMixin, AccountAdminMixin, Igny8ModelAdmin):
|
||||
resource_class = SiteIntegrationResource
|
||||
list_display = [
|
||||
'site',
|
||||
'platform',
|
||||
@@ -30,7 +40,13 @@ class SiteIntegrationAdmin(AccountAdminMixin, Igny8ModelAdmin):
|
||||
list_filter = ['platform', 'platform_type', 'is_active', 'sync_enabled', 'sync_status']
|
||||
search_fields = ['site__name', 'site__domain', 'platform']
|
||||
readonly_fields = ['created_at', 'updated_at']
|
||||
actions = ['bulk_enable_sync', 'bulk_disable_sync', 'bulk_trigger_sync']
|
||||
actions = [
|
||||
'bulk_enable_sync',
|
||||
'bulk_disable_sync',
|
||||
'bulk_trigger_sync',
|
||||
'bulk_test_connection',
|
||||
'bulk_delete_integrations',
|
||||
]
|
||||
|
||||
def bulk_enable_sync(self, request, queryset):
|
||||
"""Enable sync for selected integrations"""
|
||||
@@ -52,6 +68,29 @@ class SiteIntegrationAdmin(AccountAdminMixin, Igny8ModelAdmin):
|
||||
count += 1
|
||||
self.message_user(request, f'{count} integration(s) queued for sync.', messages.INFO)
|
||||
bulk_trigger_sync.short_description = 'Trigger sync now'
|
||||
|
||||
def bulk_test_connection(self, request, queryset):
|
||||
"""Test connection for selected integrations"""
|
||||
tested = 0
|
||||
successful = 0
|
||||
for integration in queryset.filter(is_active=True):
|
||||
# TODO: Implement actual connection test logic
|
||||
tested += 1
|
||||
successful += 1 # Placeholder
|
||||
|
||||
self.message_user(
|
||||
request,
|
||||
f'Tested {tested} integration(s). {successful} successful. (Connection test logic to be implemented)',
|
||||
messages.INFO
|
||||
)
|
||||
bulk_test_connection.short_description = 'Test connections'
|
||||
|
||||
def bulk_delete_integrations(self, request, queryset):
|
||||
"""Delete selected integrations"""
|
||||
count = queryset.count()
|
||||
queryset.delete()
|
||||
self.message_user(request, f'{count} integration(s) deleted.', messages.SUCCESS)
|
||||
bulk_delete_integrations.short_description = 'Delete selected integrations'
|
||||
|
||||
|
||||
@admin.register(SyncEvent)
|
||||
@@ -69,7 +108,10 @@ class SyncEventAdmin(ExportMixin, AccountAdminMixin, Igny8ModelAdmin):
|
||||
list_filter = ['event_type', 'action', 'success', 'created_at']
|
||||
search_fields = ['integration__site__name', 'site__name', 'description', 'external_id']
|
||||
readonly_fields = ['created_at']
|
||||
actions = ['bulk_mark_reviewed']
|
||||
actions = [
|
||||
'bulk_mark_reviewed',
|
||||
'bulk_delete_old_events',
|
||||
]
|
||||
|
||||
def bulk_mark_reviewed(self, request, queryset):
|
||||
"""Mark selected sync events as reviewed"""
|
||||
@@ -77,4 +119,16 @@ class SyncEventAdmin(ExportMixin, AccountAdminMixin, Igny8ModelAdmin):
|
||||
count = queryset.count()
|
||||
self.message_user(request, f'{count} sync event(s) marked as reviewed.', messages.SUCCESS)
|
||||
bulk_mark_reviewed.short_description = 'Mark as reviewed'
|
||||
|
||||
def bulk_delete_old_events(self, request, queryset):
|
||||
"""Delete sync events older than 30 days"""
|
||||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
|
||||
cutoff_date = timezone.now() - timedelta(days=30)
|
||||
old_events = queryset.filter(created_at__lt=cutoff_date)
|
||||
count = old_events.count()
|
||||
old_events.delete()
|
||||
self.message_user(request, f'{count} old sync event(s) deleted (older than 30 days).', messages.SUCCESS)
|
||||
bulk_delete_old_events.short_description = 'Delete old events (>30 days)'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user