"""Import/Export resources for cloudkit models.""" from import_export import resources, fields from import_export.widgets import ForeignKeyWidget from .models import CloudKitConfiguration, CloudKitSyncState, CloudKitSyncJob class CloudKitConfigurationResource(resources.ModelResource): class Meta: model = CloudKitConfiguration import_id_fields = ['name'] fields = [ 'name', 'environment', 'container_id', 'key_id', 'is_active', 'batch_size', 'auto_sync_after_scrape', ] export_order = fields # Exclude private_key for security exclude = ['private_key', 'private_key_path'] class CloudKitSyncStateResource(resources.ModelResource): class Meta: model = CloudKitSyncState import_id_fields = ['record_type', 'record_id'] fields = [ 'record_type', 'record_id', 'cloudkit_record_name', 'sync_status', 'local_hash', 'remote_change_tag', 'last_synced', 'last_error', 'retry_count', ] export_order = fields class CloudKitSyncJobResource(resources.ModelResource): configuration = fields.Field( column_name='configuration', attribute='configuration', widget=ForeignKeyWidget(CloudKitConfiguration, 'name') ) class Meta: model = CloudKitSyncJob fields = [ 'id', 'configuration', 'status', 'triggered_by', 'started_at', 'finished_at', 'records_synced', 'records_created', 'records_updated', 'records_deleted', 'records_failed', 'error_message', 'created_at', ] export_order = fields