[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