|
9 | 9 | from django.conf import settings |
10 | 10 |
|
11 | 11 | import csv |
| 12 | +import io |
12 | 13 | import json |
13 | 14 | from collections import OrderedDict |
14 | 15 |
|
|
25 | 26 | from .jinjapdf import render_jinja_ticket, render_jinja_badges |
26 | 27 | from .util import send_conference_mail, get_conference_or_404, send_conference_notification |
27 | 28 |
|
28 | | -from .models import Conference, ConferenceSeries |
| 29 | +from .models import Conference, ConferenceSeries, ConferenceSession |
29 | 30 | from .models import ConferenceRegistration |
30 | 31 | from .models import Speaker |
31 | 32 | from .models import PrepaidBatch |
@@ -976,12 +977,53 @@ def tokendata(request, urlname, token, datatype, dataformat, subrequest=None): |
976 | 977 | return sponsorclaimsfile(conference, subrequest.lstrip('/')) |
977 | 978 | else: |
978 | 979 | return _structured_tokendata(sponsorclaimsdata(conference), dataformat) |
| 980 | + elif datatype == 'sessions': |
| 981 | + sessiondata(conference, writer) |
979 | 982 | else: |
980 | 983 | raise Http404() |
981 | 984 |
|
982 | 985 | return writer.response |
983 | 986 |
|
984 | 987 |
|
| 988 | +def csvembed(iter): |
| 989 | + f = io.StringIO() |
| 990 | + writer = csv.writer(f, lineterminator='', delimiter=';') |
| 991 | + writer.writerow(iter) |
| 992 | + return f.getvalue() |
| 993 | + |
| 994 | + |
| 995 | +def sessiondata(conference, writer): |
| 996 | + result = [] |
| 997 | + status_filter = [] |
| 998 | + sessions = ConferenceSession.objects.filter(conference=conference) |
| 999 | + header = ['id', 'title', 'shorttitle', 'abstract', 'status', 'speaker', 'company', |
| 1000 | + 'email', 'track', 'starttime', 'endtime', 'recordingconsent', 'room', 'submissionnote'] |
| 1001 | + writer.columns(header) |
| 1002 | + writer.grouping = False |
| 1003 | + for s in sessions: |
| 1004 | + speaker_names = csvembed(map(lambda spk: spk.name, s.speaker.all())) |
| 1005 | + speaker_emails = csvembed(map(lambda spk: spk.email, s.speaker.all())) |
| 1006 | + speaker_companies = csvembed(map(lambda spk: spk.company, s.speaker.all())) |
| 1007 | + row = [ |
| 1008 | + s.id, |
| 1009 | + s.title, |
| 1010 | + s.shorttitle, |
| 1011 | + s.abstract, |
| 1012 | + s.status_string, |
| 1013 | + speaker_names, |
| 1014 | + speaker_companies, |
| 1015 | + speaker_emails, |
| 1016 | + None if s.track is None else s.track.trackname, |
| 1017 | + s.starttime, |
| 1018 | + s.endtime, |
| 1019 | + s.recordingconsent, |
| 1020 | + None if s.room is None else s.room.roomname, |
| 1021 | + s.submissionnote, |
| 1022 | + ] |
| 1023 | + result.append(row) |
| 1024 | + writer.write_rows(result) |
| 1025 | + |
| 1026 | + |
985 | 1027 | def registration_dashboard_send_email(request, urlname): |
986 | 1028 | conference = get_authenticated_conference(request, urlname) |
987 | 1029 |
|
|
0 commit comments