import csv
import datetime
from django.contrib.auth.decorators import user_passes_test
from django.core.exceptions import ObjectDoesNotExist
from django.http import Http404
from django.db import connection
from django.http import Http404, HttpResponse
from django.shortcuts import render, redirect, get_object_or_404
from django.views.decorators.clickjacking import xframe_options_exempt
@@ -135,3 +140,28 @@ def speaker_profile(request, pk):
"speaker": speaker,
"presentations": presentations,
})
@login_required
@user_passes_test(lambda u: u.is_staff)
def speaker_track_report(request):
query = """
SELECT speaker.name speaker, email, telephone, kind.name track, title
FROM symposion_proposals_proposalbase
INNER JOIN symposion_speakers_speaker speaker ON speaker_id = speaker.id
INNER JOIN symposion_proposals_proposalkind kind ON kind_id = kind.id
INNER JOIN auth_user ON user_id = auth_user.id
ORDER BY speaker.name, title, track
"""
response = HttpResponse(content_type='text/csv')
filename = 'speaker_track_report-{}.csv'.format(
datetime.datetime.now().strftime('%Y-%m-%d'),
)
response['Content-Disposition'] = f'attachment; filename={filename}'
writer = csv.writer(response)
with connection.cursor() as cursor:
cursor.execute(query)
writer.writerow([i[0] for i in cursor.description])
for row in cursor.fetchall():
writer.writerow(row)
return response