Skip to content

Commit

Permalink
Merge pull request #833 from CodingPirates/Bug/809-UTF8-for-CSV-expor…
Browse files Browse the repository at this point in the history
…t-in-Person-view

UTF8 and formatted a timestamp as YYYY-MM-DD hh:mm (like in GUI)
  • Loading branch information
mhewel authored Feb 12, 2023
2 parents b2ecbee + 3dc5f8f commit 6abd229
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ members.db

# MacOS temp file
.DS_Store
live_data_dump
18 changes: 13 additions & 5 deletions members/admin/person_admin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import codecs
from datetime import timedelta

from django import forms
from django.contrib import admin
from django.contrib import messages
Expand Down Expand Up @@ -314,7 +314,8 @@ def export_emaillist(self, request, queryset):
export_emaillist.short_description = "Exporter e-mail liste"

def export_csv(self, request, queryset):
result_string = '"Navn";"Alder";"Opskrevet";"Tlf (barn)";"Email (barn)";"Tlf (forælder)";"Email (familie)";"Postnummer"\n'
result_string = "Navn;Alder;Opskrevet;Tlf (barn);Email (barn);"
result_string += "Tlf (forælder);Email (familie);Postnummer;Noter\n"
for person in queryset:
parent = person.family.get_first_parent()
if parent:
Expand All @@ -335,7 +336,7 @@ def export_csv(self, request, queryset):
+ ";"
+ str(person.age_years())
+ ";"
+ str(person.added_at)
+ str(person.added_at.strftime("%Y-%m-%d %H:%M"))
+ ";"
+ person.phone
+ ";"
Expand All @@ -346,13 +347,20 @@ def export_csv(self, request, queryset):
+ family_email
+ ";"
+ person.zipcode
+ ";"
+ '"'
+ person.notes.replace('"', '""')
+ '"'
+ "\n"
)
response = HttpResponse(result_string, content_type="text/csv")
response = HttpResponse(
f'{codecs.BOM_UTF8.decode("utf-8")}{result_string}',
content_type="text/csv; charset=utf-8",
)
response["Content-Disposition"] = 'attachment; filename="personer.csv"'
return response

export_csv.short_description = "Exporter CSV"
export_csv.short_description = "CSV Export"

# Only view persons related to users department (all family, via participant, waitinglist & invites)
def get_queryset(self, request):
Expand Down

0 comments on commit 6abd229

Please sign in to comment.