[Python-checkins] r42217 - sandbox/trunk/pycon/sched2sessions.py

david.goodger python-checkins at python.org
Wed Feb 1 01:52:56 CET 2006


Author: david.goodger
Date: Wed Feb  1 01:52:48 2006
New Revision: 42217

Added:
   sandbox/trunk/pycon/sched2sessions.py   (contents, props changed)
Log:
process FinalSchedule data into reST sessions

Added: sandbox/trunk/pycon/sched2sessions.py
==============================================================================
--- (empty file)
+++ sandbox/trunk/pycon/sched2sessions.py	Wed Feb  1 01:52:48 2006
@@ -0,0 +1,107 @@
+#! /usr/bin/env python
+
+"""
+Processes the schedule data retrieved by get.sh from
+http://wiki.python.org/moin/PyCon2006/FinalSchedule into reST session tables
+suitable for http://wiki.python.org/moin/PyCon2006/SessionChairs.
+"""
+
+import sys
+import calendar
+import datetime
+from pprint import pprint, pformat
+import parse_sched
+import talks
+
+
+start_date = (2006, 02, 24)
+end_date = (2006, 02, 26)
+weekdays = 'Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split()
+rooms = ('Ballroom A-E', 'Ballroom F-J', 'Preston Trail')
+
+# template strings:
+
+list_table = """
+.. list-table::
+   :header-rows: 1
+   :widths: 1 3 3 3
+
+   * - 
+     - Ballroom A-E
+     - Ballroom F-J
+     - Preston Trail
+"""
+
+time_start = """
+   * - %s
+"""
+
+session_start = u"""
+     - Session %s \u2014 Chair: UNASSIGNED
+
+"""
+
+empty_session = """
+     - (no talks)
+"""
+
+talk_line = """\
+       * %s
+         (`%s <http://wiki.python.org/moin/PyCon2006/Talks#%s>`__)
+"""
+
+def process_sessions(data):
+    dates = data.keys()
+    dates.sort()
+    all_sessions = []
+    for date in dates:
+        if date < start_date:
+            continue
+        if date > end_date:
+            break
+        times = []
+        all_sessions.append((date, times))
+        for room, time, duration, talk in data[date]:
+            if room == '---':
+                sessions = None
+            if talk.startswith('#'):
+                talk = int(talk[1:])
+            else:
+                continue
+            if sessions is None:
+                sessions = {}
+                times.append((time, sessions))
+            sessions.setdefault(room, []).append(talk)
+    return all_sessions
+
+def format_sessions(sessions):
+    lines = []
+    s = 0
+    for date, times in sessions:
+        weekday = weekdays[datetime.date(*date).weekday()]
+        datestr = '%s, February %s' % (weekday, date[2])
+        lines.append('\n\n%s\n%s\n%s' % (datestr, '=' * len(datestr),
+                                         list_table))
+        for time, sessions in times:
+            lines.append(time_start % time)
+            for room in rooms:
+                s += 1
+                if room in sessions:
+                    lines.append(session_start % s)
+                    for talk in sessions[room]:
+                        title = talks.get_title(talk)
+                        lines.append(talk_line % (title, talk, talk))
+                else:
+                    lines.append(empty_session)
+    return ''.join(lines)
+
+def main():
+    lines = sys.stdin.readlines()
+    data = parse_sched.parse(lines)
+    sessions = process_sessions(data)
+    output = format_sessions(sessions)
+    sys.stdout.write(output.encode('utf-8'))
+
+
+if __name__ == '__main__':
+    main()


More information about the Python-checkins mailing list