From 737323a6447b2540ab3f12759b6fba271dcd6d19 Mon Sep 17 00:00:00 2001 From: Alicia FLOREZ Date: Wed, 27 Mar 2013 16:09:51 +0100 Subject: [PATCH] Commit initial --- ods.py | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ odsgen | 48 +++++++++++++++++++++++++++++++++++++ oe.py | 35 +++++++++++++++++++++++++++ 3 files changed, 167 insertions(+) create mode 100644 ods.py create mode 100644 odsgen create mode 100644 oe.py diff --git a/ods.py b/ods.py new file mode 100644 index 0000000..1f07b0f --- /dev/null +++ b/ods.py @@ -0,0 +1,84 @@ +#-*- 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 diff --git a/odsgen b/odsgen new file mode 100644 index 0000000..5fe52bd --- /dev/null +++ b/odsgen @@ -0,0 +1,48 @@ +#!/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 diff --git a/oe.py b/oe.py new file mode 100644 index 0000000..622bfca --- /dev/null +++ b/oe.py @@ -0,0 +1,35 @@ +#-*- 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) -- 1.7.10.4