[Debconf-video-commits] r636 - package/trunk/src

Ben Hutchings benh at alioth.debian.org
Wed Sep 29 21:13:31 UTC 2010


Author: benh
Date: 2010-09-29 21:13:26 +0000 (Wed, 29 Sep 2010)
New Revision: 636

Modified:
   package/trunk/src/dc-export-csv
Log:
dc-export-csv: Add speaker information to output

Use the event_person table and the new debconf.person_public view to find
speakers.


Modified: package/trunk/src/dc-export-csv
===================================================================
--- package/trunk/src/dc-export-csv	2010-09-20 02:06:09 UTC (rev 635)
+++ package/trunk/src/dc-export-csv	2010-09-29 21:13:26 UTC (rev 636)
@@ -30,22 +30,34 @@
     name_ext = cur.fetchone()[0]
 
     out_csv = csv.writer(out_file)
-    out_csv.writerow(['title', 'url', 'subtitle', 'language',
+    out_csv.writerow(['title', 'speakers', 'url', 'subtitle', 'language',
                       'abstract', 'date', 'type', 'event'])
 
-    cur.execute('SELECT event_recording_base_name, title, subtitle, language,'
-                ' abstract, recording_time, event_type'
+    # Get all speakers - there can be several for an event and there is
+    # no suitable aggregate operator.
+    event_speakers = {}
+    cur.execute('SELECT event_id, public_name'
+                ' FROM event_person, debconf.person_public'
+                ' WHERE event_person.person_id=person_public.person_id'
+                ' AND event_role=\'speaker\'')
+    for event_id, speaker_name in cur.fetchall():
+	if speaker_name:
+            event_speakers.setdefault(event_id, []).append(speaker_name)
+
+    cur.execute('SELECT event.event_id, event_recording_base_name, title,'
+                ' subtitle, language, abstract, recording_time, event_type'
                 ' FROM video_event_recording, event, video_recording'
                 ' WHERE video_event_recording.event_id=event.event_id'
                 ' AND video_event_recording.recording_id=video_recording.id'
                 ' AND event.conference_id=%(conf_id)d',
                 {'conf_id': conf_id})
-    for (base_name, title, subtitle, language,
+    for (event_id, base_name, title, subtitle, language,
          abstract, recording_time, event_type) in cur.fetchall():
+        speakers = '; '.join(event_speakers.get(event_id, []))
         url = '%s/%s/%s/%s/%s%s' % (video_base_url, recording_time[:4],
                                     conf_name.lower().replace(' ', ''),
                                     target_format_abbr, base_name, name_ext)
-        out_csv.writerow([title, url, subtitle, language,
+        out_csv.writerow([title, speakers, url, subtitle, language,
                           abstract, recording_time[:10], event_type, conf_name])
 
 if __name__ == '__main__':




More information about the Debconf-video-commits mailing list