'unconfirmspeaker': 'SELECT fullname AS "Name", u.email AS "E-mail", title AS "Title" FROM confreg_speaker spk INNER JOIN confreg_conferencesession_speaker css ON spk.id=css.speaker_id INNER JOIN confreg_conferencesession s ON css.conferencesession_id=s.id INNER JOIN auth_user u ON u.id=spk.user_id WHERE s.conference_id=%(confid)s AND s.status=3 ORDER BY fullname',
'sessionstatus': 'SELECT ss.id AS _id, statustext AS "Status",count(*) AS "Count", NULL as "Sum" FROM confreg_conferencesession s INNER JOIN confreg_status_strings ss ON ss.id=s.status WHERE conference_id=%(confid)s GROUP BY ss.id UNION ALL SELECT 10000, statusgroup, NULL, count(*) FROM confreg_conferencesession s INNER JOIN confreg_status_strings ss ON ss.id=s.status WHERE conference_id=%(confid)s AND statusgroup IS NOT NULL GROUP BY statusgroup ORDER BY 1',
'tshirtsizes': 'SELECT shirtsize AS "Size", count(*) AS "Num", round(count(*)*100/sum(count(*)) over ()) AS "Percent" FROM confreg_conferenceregistration r INNER JOIN confreg_shirtsize s ON s.id=r.shirtsize_id WHERE r.conference_id=%(confid)s AND payconfirmedat IS NOT NULL GROUP BY shirtsize_id, shirtsize ORDER BY shirtsize_id',
+ 'tshirtsizes__anon': 'SELECT shirtsize AS "Size", num as "Num", round(num*100/sum(num) over (), 0) AS "Percent" FROM confreg_aggregatedtshirtsizes t INNER JOIN confreg_shirtsize s ON s.id=t.size_id WHERE t.conference_id=%(confid)s ORDER BY size_id',
'countries': 'SELECT printable_name AS "Country", count(*) AS "Registrations" FROM confreg_conferenceregistration INNER JOIN country ON country.iso=country_id WHERE payconfirmedat IS NOT NULL AND conference_id=%(confid)s GROUP BY printable_name ORDER BY 2 DESC',
'regdays': 'SELECT day,count(*) FROM confreg_registrationday d INNER JOIN confreg_registrationtype_days rd ON rd.registrationday_id=d.id INNER JOIN confreg_registrationtype rt ON rt.id=rd.registrationtype_id INNER JOIN confreg_conferenceregistration r ON r.regtype_id=rt.id WHERE r.conference_id=%(confid)s AND payconfirmedat IS NOT NULL GROUP BY day ORDER BY day',
'sessnoroom': "SELECT title AS \"Title\", trackname AS \"Track\", starttime || ' - ' || endtime AS \"Timeslot\" FROM confreg_conferencesession s LEFT JOIN confreg_track t ON t.id=s.track_id WHERE s.conference_id=%(confid)s AND status=1 AND room_id IS NULL",
from reports import simple_reports
+ if "__" in request.GET['report']:
+ raise Http404("Invalid character in report name")
+
if not simple_reports.has_key(request.GET['report']):
raise Http404("Report not found")
+ if conference.personal_data_purged and simple_reports.has_key('{0}__anon'.format(request.GET['report'])):
+ query = simple_reports['{0}__anon'.format(request.GET['report'])]
+ else:
+ query = simple_reports[request.GET['report']]
+
curs = connection.cursor()
- curs.execute(simple_reports[request.GET['report']], {
+ curs.execute(query, {
'confid': conference.id,
})
d = curs.fetchall()