X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=ods.py;h=ff6f0b897213ddb0022b5cbebab2d50ee4d13246;hb=HEAD;hp=1f07b0fa80eb95d4ae1d1b32cd69d91218cc0ded;hpb=737323a6447b2540ab3f12759b6fba271dcd6d19;p=oeodf%2Ftodolist_ods_builder.git diff --git a/ods.py b/ods.py index 1f07b0f..ff6f0b8 100644 --- a/ods.py +++ b/ods.py @@ -1,16 +1,17 @@ #-*- coding: utf-8 -*- """ -Module contenant le code permettant de créer des feuilles ods contenant les tâches pour chaque contener. +Module contenant le code permettant de créer des feuilles ods contenant +les tâches pour chaque contener. """ from odf.opendocument import OpenDocumentSpreadsheet -from odf.style import Style, TextProperties, TableColumnProperties,\ -ParagraphProperties +from odf.style import Style, TextProperties,\ + TableColumnProperties, ParagraphProperties, GraphicProperties from odf.text import P from odf.table import Table, TableColumn, TableRow, TableCell -def create_cell(text): +def create_cell(text, style=None): """ Permet de créer une cellule contenant le text. @@ -18,67 +19,104 @@ def create_cell(text): Revoit une cellule TableCell """ - tc = TableCell() + if style == None: + tc = TableCell() + else: + tc = TableCell(stylename=style) tc.addElement(P(text=text)) return tc def create_doc(containers, container_tasks): """ - Permet de créer un document ods comprenant une feuille pour chaque contener, avec la liste des tâches. + Permet de créer un document ods comprenant une feuille + pour chaque contener, avec la liste des tâches. containers : une liste de dictionnaires de containers - tasks : un dictionnaire qui assosie à chaque ID de container la liste des tâches qu'il contient + tasks : un dictionnaire qui assosie à chaque ID de container + la liste des tâches qu'il contient """ document = OpenDocumentSpreadsheet() tablecontents = Style(name="Table Contents", family="paragraph") - tablecontents.addElement(ParagraphProperties(numberlines="false", linenumber="0")) + tablecontents.addElement(ParagraphProperties(numberlines="false", + linenumber="0")) document.styles.addElement(tablecontents) - #container_keys = ['name','description'] - task_keys = ['name', 'description', 'manday', 'priority', 'state', 'planned', 'milestone'] + + # Création des styles de colonnes + width25 = Style(name="Wshort", family="table-column") + width25.addElement(TableColumnProperties(columnwidth="2.5cm")) + document.automaticstyles.addElement(width25) + + width3 = Style(name="Wwide", family="table-column") + width3.addElement(TableColumnProperties(columnwidth="3cm")) + document.automaticstyles.addElement(width3) + + width9 = Style(name="Wwide", family="table-column") + width9.addElement(TableColumnProperties(columnwidth="9cm")) + document.automaticstyles.addElement(width9) + + #Création des styles de titres + titre1= Style(name="titre1", family="table-cell") + titre1.addElement(TextProperties(fontweight="bold", fontsize="11", color="#1FA055")) + document.automaticstyles.addElement(titre1) + + titre2= Style(name="titre2", family="table-cell") + titre2.addElement(TextProperties(fontweight="bold", fontsize="10")) + document.automaticstyles.addElement(titre2) + + #container_keys = ["name", "description", "target", "milestone"] + task_keys = ['name', 'description', 'priority', 'state', 'manday', + 'planned', 'milestone'] for c in containers: table = Table(name=c['name']) + + table.addElement(TableColumn(numbercolumnsrepeated=1,stylename=width3)) + table.addElement(TableColumn(numbercolumnsrepeated=1,stylename=width9)) + table.addElement(TableColumn(numbercolumnsrepeated=5,stylename=width25)) document.spreadsheet.addElement(table) tasks = container_tasks[c['id']] tr = TableRow() table.addElement(tr) - tr.addElement(create_cell("Name")) + tr.addElement(create_cell("Name :", "titre1")) tr.addElement(create_cell(c["name"])) tr.addElement(create_cell("")) - tr.addElement(create_cell("Target")) + tr.addElement(create_cell("Target :", "titre1")) tr.addElement(create_cell(c["target"])) + tr.addElement(create_cell("Milestone :", "titre1")) + tr.addElement(create_cell(c["milestone"])) tr = TableRow() table.addElement(tr) - tr.addElement(create_cell("Description")) + tr.addElement(create_cell("Description :", "titre1")) tr.addElement(create_cell(c["description"])) - tr.addElement(create_cell("")) - tr.addElement(create_cell("Milestone")) - tr.addElement(create_cell(c["milestone"])) if not tasks: continue + #New line + table.addElement(TableRow()) + tr = TableRow() table.addElement(tr) + tr.addElement(create_cell("Tasks :", "titre1")) tr = TableRow() table.addElement(tr) for k in task_keys: - tc = TableCell() - tc.addElement(P(text=k)) + tc = TableCell(stylename="titre2") tr.addElement(tc) + tc.addElement(P(text=k.capitalize())) for t in tasks: tr = TableRow() table.addElement(tr) for tk in task_keys: tc = TableCell() - tc.addElement(P(text=t[tk])) tr.addElement(tc) + tc.addElement(P(text=t[tk])) - document.save("Mes todolist.ods") \ No newline at end of file + document.save("Mes_todolist.ods")