def get(self, request, *args, **kwargs): asset_qs = Asset.objects.filter( item__project__campaign__slug=self.kwargs["campaign_slug"] ) assets = get_latest_transcription_data(asset_qs) headers, data = flatten_queryset( assets, field_names=[ "item__project__campaign__title", "item__project__title", "item__title", "item__item_id", "title", "transcription_status", "download_url", "latest_transcription", ], extra_verbose_names={ "item__project__campaign__title": "Campaign", "item__project__title": "Project", "item__title": "Item", "item__item_id": "ItemId", "item_id": "ItemId", "title": "Asset", "transcription_status": "AssetStatus", "download_url": "DownloadUrl", "latest_transcription": "Transcription", }, ) return export_to_csv_response( "%s.csv" % self.kwargs["campaign_slug"], headers, data )
def events_csv(request): headers, data = flatten_queryset( models.LoadBatchEvent.objects.all().order_by("-created"), field_names=["created", "batch_name", "message"], extra_verbose_names={ "created": "Time", "batch_name": "Batch name" }, ) return export_to_csv_response("chronam_events.csv", headers, data)
def admin_site_report_view(request): site_reports = SiteReport.objects.all() headers, data = flatten_queryset( site_reports, field_names=SiteReport.DEFAULT_EXPORT_FIELDNAMES, extra_verbose_names={"created_on": "Date", "campaign__title": "Campaign"}, ) return export_to_csv_response("site-report.csv", headers, data)
def test_flatten_queryset(self): TestModel.objects.create(pk=1, title='ABC') headers, rows = flatten_queryset(TestModel.objects.all()) self.assertListEqual(['ID', 'title'], headers) self.assertListEqual(list(rows), [(1, 'ABC')]) headers, rows = flatten_queryset(TestModel.objects.all(), field_names=['title']) self.assertListEqual(['title'], headers) self.assertListEqual(list(rows), [('ABC', )]) headers, rows = flatten_queryset( TestModel.objects.all(), field_names=['title'], extra_verbose_names={'title': 'The Title'}) self.assertListEqual( ['The Title'], headers, msg='extra_verbose_names must override default headers') self.assertListEqual(list(rows), [('ABC', )])
def batches_csv(request): qs = models.Batch.viewable_batches() qs = qs.annotate(page_count=Count("issues__pages")) headers, data = flatten_queryset( qs, field_names=[ "created", "name", "awardee__name", "page_count", "released" ], extra_verbose_names={"awardee__name": "Awardee"}, ) return export_to_csv_response("chronam_batches.csv", headers, data)