Commit initial
[oeodf/todolist_ods_builder.git] / ods.py
1 #-*- coding: utf-8 -*-
2 """
3 Module contenant le code permettant de créer des feuilles ods contenant les tâches pour chaque contener.
4 """
5
6 from odf.opendocument import OpenDocumentSpreadsheet
7 from odf.style import Style, TextProperties, TableColumnProperties,\
8 ParagraphProperties
9 from odf.text import P
10 from odf.table import Table, TableColumn, TableRow, TableCell
11
12
13 def create_cell(text):
14     """
15     Permet de créer une cellule contenant le text.
16
17     text : une chaine de caractères
18
19     Revoit une cellule TableCell
20     """
21     tc = TableCell()
22     tc.addElement(P(text=text))
23     return tc
24
25
26 def create_doc(containers, container_tasks):
27     """
28     Permet de créer un document ods comprenant une feuille pour chaque contener, avec la liste des tâches.
29
30     containers : une liste de dictionnaires de containers
31     tasks : un dictionnaire qui assosie à chaque ID de container la liste des tâches qu'il contient
32     """
33     document = OpenDocumentSpreadsheet()
34     tablecontents = Style(name="Table Contents", family="paragraph")
35     tablecontents.addElement(ParagraphProperties(numberlines="false", linenumber="0"))
36     document.styles.addElement(tablecontents)
37
38     #container_keys = ['name','description']
39     task_keys = ['name', 'description', 'manday', 'priority', 'state', 'planned', 'milestone']
40
41     for c in containers:
42         table = Table(name=c['name'])
43         document.spreadsheet.addElement(table)
44
45         tasks = container_tasks[c['id']]
46
47         tr = TableRow()
48         table.addElement(tr)
49         tr.addElement(create_cell("Name"))
50         tr.addElement(create_cell(c["name"]))
51         tr.addElement(create_cell(""))
52         tr.addElement(create_cell("Target"))
53         tr.addElement(create_cell(c["target"]))
54
55         tr = TableRow()
56         table.addElement(tr)
57         tr.addElement(create_cell("Description"))
58         tr.addElement(create_cell(c["description"]))
59         tr.addElement(create_cell(""))
60         tr.addElement(create_cell("Milestone"))
61         tr.addElement(create_cell(c["milestone"]))
62
63         if not tasks:
64             continue
65
66         tr = TableRow()
67         table.addElement(tr)
68
69         tr = TableRow()
70         table.addElement(tr)
71         for k in task_keys:
72             tc = TableCell()
73             tc.addElement(P(text=k))
74             tr.addElement(tc)
75
76         for t in tasks:
77             tr = TableRow()
78             table.addElement(tr)
79             for tk in task_keys:
80                 tc = TableCell()
81                 tc.addElement(P(text=t[tk]))
82                 tr.addElement(tc)
83
84     document.save("Mes todolist.ods")