-
Notifications
You must be signed in to change notification settings - Fork 3
/
agenda.py
34 lines (25 loc) · 983 Bytes
/
agenda.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sqlite3
from collections import namedtuple
Schedule = namedtuple('Schedule', ['start', 'end', 'type'])
Slot = namedtuple('Slot', ['track', 'room', 'name', 'speakers', 'url', 'language', 'tags'])
SCHEDULE_SQL = '''
select distinct start, end, type
from agenda where day="{}" order by start;
'''
SLOT_SQL = '''
select track, room, name, speakers, url, language, tags
from agenda where day="{}" and start="{}";
'''
class Agenda(object):
def __init__(self):
self._conn = sqlite3.connect('agenda.db')
self._cur = self._conn.cursor()
def get_schedules(self, day):
self._cur.execute(SCHEDULE_SQL.format(day))
return [Schedule(*row) for row in self._cur.fetchall()]
def get_slots(self, day, start):
self._cur.execute(SLOT_SQL.format(day, start))
return [Slot(*row) for row in self._cur.fetchall()]
__all__ = ['Agenda']