--- /dev/null
+#-*- coding: utf-8 -*-
+"""
+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.text import P
+from odf.table import Table, TableColumn, TableRow, TableCell
+
+
+def create_cell(text):
+ """
+ Permet de créer une cellule contenant le text.
+
+ text : une chaine de caractères
+
+ Revoit une cellule TableCell
+ """
+ tc = TableCell()
+ 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.
+
+ containers : une liste de dictionnaires de containers
+ 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"))
+ document.styles.addElement(tablecontents)
+
+ #container_keys = ['name','description']
+ task_keys = ['name', 'description', 'manday', 'priority', 'state', 'planned', 'milestone']
+
+ for c in containers:
+ table = Table(name=c['name'])
+ document.spreadsheet.addElement(table)
+
+ tasks = container_tasks[c['id']]
+
+ tr = TableRow()
+ table.addElement(tr)
+ tr.addElement(create_cell("Name"))
+ tr.addElement(create_cell(c["name"]))
+ tr.addElement(create_cell(""))
+ tr.addElement(create_cell("Target"))
+ tr.addElement(create_cell(c["target"]))
+
+ tr = TableRow()
+ table.addElement(tr)
+ tr.addElement(create_cell("Description"))
+ 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
+
+ tr = TableRow()
+ table.addElement(tr)
+
+ tr = TableRow()
+ table.addElement(tr)
+ for k in task_keys:
+ tc = TableCell()
+ tc.addElement(P(text=k))
+ tr.addElement(tc)
+
+ 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)
+
+ document.save("Mes todolist.ods")
\ No newline at end of file
--- /dev/null
+#!/usr/bin/python
+#-*- coding: utf-8 -*-
+
+#odf : 608
+import openerplib
+from oe import *
+from ods import *
+#from getpass import getpass
+
+
+def get_user_name(connection, user_login):
+ user_model = connection.get_model('res.users')
+ ids = user_model.search([("login", "=", user_login)])
+ if ids:
+ user_info = user_model.read(ids[0], ["name"])
+ return user_info["name"]
+ return None
+
+
+if __name__ == '__main__':
+# login = raw_input('Utilisateur: ')
+# password = getpass('Mot de passe: ')
+
+ connection = openerplib.get_connection(
+ hostname='localhost',
+ database='testing',
+# login = login,
+# password = password
+ login = "admin",
+ password = "admin",
+ )
+
+ try:
+ connection.check_login()
+ except:
+ print('Serveur éteint ou Identifiants incorrects')
+ else:
+ print('Test sur res.user : %s' % (get_user_name(connection, 'admin') == 'Administrator'))
+ containers = get_containers(connection)
+ tasks = {c["id"]: get_tasks(connection, c["tasks"]) for c in containers}
+
+ #============================================================================
+ # _tasks = []
+ # for c in containers:
+ # _tasks[c["id"]] = get_tasks(connection, c["tasks"])
+ #============================================================================
+
+ create_doc(containers, tasks)
\ No newline at end of file
--- /dev/null
+#-*- coding: utf-8 -*-
+
+"""
+Module contenant le code permettant d'aller chercher les informations dans OpenERP.
+"""
+
+
+def get_containers(connection):
+ """
+ Permet de retrouver tous les conteneurs.
+
+ connection : objet Connection XML-RPC vers le serveur OpenERP
+
+ Revoit une liste de dictionnaires de données.
+ """
+ container_model = connection.get_model('todolist.container')
+ container_ids = container_model.search()
+ if not container_ids:
+ return []
+ return container_model.read(container_ids)
+
+
+def get_tasks(connection, liste):
+ """
+ Permet de retrouver les informations sur les tâches en paramêtres.
+
+ connection : objet Connection XML-RPC vers le serveur OpenERP
+ liste : liste d'identifiants de tâches.
+
+ Revoit une liste de dictionnaires de données.
+ """
+ task_model = connection.get_model('todolist.task')
+ if not liste:
+ return []
+ return task_model.read(liste)