Skip to content

Commit

Permalink
Merge pull request #1342 from glogiotatidis/issue-1204-csv-export
Browse files Browse the repository at this point in the history
[Fix #1204] Add CSV Export action to metrics related adminmodels.
  • Loading branch information
glogiotatidis committed Mar 24, 2020
2 parents e91d742 + c231dbb commit 801bdf4
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
22 changes: 22 additions & 0 deletions snippets/base/admin/actions.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,30 @@
import csv
from datetime import datetime

from django.db import transaction
from django.http import HttpResponse


@transaction.atomic
def duplicate_snippets_action(modeladmin, request, queryset):
for snippet in queryset:
snippet.duplicate(request.user)
duplicate_snippets_action.short_description = 'Duplicate selected snippets' # noqa


def export_as_csv(modeladmin, request, queryset):
"""Adapted from https://books.agiliq.com/projects/django-admin-cookbook/en/latest/export.html"""
meta = modeladmin.model._meta
field_names = [field.name for field in meta.fields]
filename = f'{meta}-{datetime.today().strftime("%Y-%m-%d-%H-%M")}'

response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename={}.csv'.format(filename)
writer = csv.writer(response)

writer.writerow(field_names)
for obj in queryset:
writer.writerow([getattr(obj, field) for field in field_names])

return response
export_as_csv.short_description = 'Export Selected to CSV' # noqa
6 changes: 6 additions & 0 deletions snippets/base/admin/adminmodels.py
Original file line number Diff line number Diff line change
Expand Up @@ -1562,6 +1562,9 @@ class JobDailyPerformanceAdmin(admin.ModelAdmin):
),
}),
]
actions = [
actions.export_as_csv,
]

def has_add_permission(self, request):
return False
Expand All @@ -1585,6 +1588,9 @@ class DailyImpressionsAdmin(admin.ModelAdmin):
),
}),
]
actions = [
actions.export_as_csv,
]

def has_add_permission(self, request):
return False
Expand Down

0 comments on commit 801bdf4

Please sign in to comment.