summaryrefslogtreecommitdiff
path: root/activity/parser/timecsv.py
diff options
context:
space:
mode:
Diffstat (limited to 'activity/parser/timecsv.py')
-rw-r--r--activity/parser/timecsv.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/activity/parser/timecsv.py b/activity/parser/timecsv.py
new file mode 100644
index 0000000..7e988eb
--- /dev/null
+++ b/activity/parser/timecsv.py
@@ -0,0 +1,46 @@
1from cStringIO import StringIO
2from .._activitybase import Analysis, parse_rows
3
4
5DAY_TEMPLATE_TOP = """
6<h2>{day}</h2>
7<table class="timecsv">
8 <thead>
9 <tr>
10 <th>Project</th>
11 <th>Time Spent</th>
12 </tr>
13 </thead>
14 <tbody>
15"""
16
17
18DAY_TEMPLATE_BOTTOM = """\
19 </tbody>
20</table>
21"""
22
23
24ROW_TEMPLATE = '\t<tr class="{active}"><td>{task}</td><td>{time}</td></tr>\n'
25
26
27class Parser:
28
29 def __init__(self, raw, request, **kw):
30 self.request = request
31 self.analysis = Analysis(parse_rows(raw))
32 self.analysis.process()
33
34 def format(self, formatter, **kw):
35 output = StringIO()
36
37 for day, rows in self.analysis:
38 output.write(DAY_TEMPLATE_TOP.format(day=day.strftime('%A %B %d, %Y')))
39
40 for task, (time, still_active) in rows.items():
41 output.write(ROW_TEMPLATE.format(task=task, time=time,
42 active='active' if still_active else ''))
43
44 output.write(DAY_TEMPLATE_BOTTOM)
45
46 self.request.write(output.getvalue())