[tryton-debian-vcs] tryton-modules-project branch upstream updated. upstream/3.4.1-1-gaf21461

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Thu Apr 23 16:05:13 UTC 2015


The following commit has been merged in the upstream branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-modules-project.git;a=commitdiff;h=upstream/3.4.1-1-gaf21461

commit af21461dcf10bae875d756a5e3282559c830546c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu Apr 23 17:00:02 2015 +0200

    Adding upstream version 3.6.0.
    
    Signed-off-by: Mathias Behrle <mathiasb at m9s.biz>

diff --git a/CHANGELOG b/CHANGELOG
index 311b11c..549e5ad 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,7 @@
-Version 3.4.1 - 2015-02-22
+Version 3.6.0 - 2015-04-20
 * Bug fixes (see mercurial logs for details)
+* Add support for PyPy
+* Use TimeDelta field
 
 Version 3.4.0 - 2014-10-20
 * Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index 873e0da..9d17fcf 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_project
-Version: 3.4.1
+Version: 3.6.0
 Summary: Tryton module with projects
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/3.4/
+Download-URL: http://downloads.tryton.org/3.6/
 Description: trytond_project
         ===============
         
@@ -65,4 +65,6 @@ Classifier: Natural Language :: Slovenian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Office/Business
diff --git a/__init__.py b/__init__.py
index 64de74e..46c526f 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,5 +1,5 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
 
 from trytond.pool import Pool
 from .work import *
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index d8e0b3a..714d4bb 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -44,14 +44,9 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr "Създадено от"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
-msgstr "Услие"
-
-#, fuzzy
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Часове от график"
+msgstr ""
 
 msgctxt "field:project.work,id:"
 msgid "ID"
@@ -86,6 +81,11 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Наличен в график"
 
+#, fuzzy
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Продължителност"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Общо усилия"
@@ -110,14 +110,13 @@ msgctxt "field:timesheet.work,timesheet_lines:"
 msgid "Timesheet Lines"
 msgstr "Редове от график"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
-msgstr "Оценка на усилията за тази работа"
+msgstr ""
 
-#, fuzzy
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr "Общо време за изпълнение на тази задача"
+msgstr ""
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 26bf138..e306d44 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -12,7 +12,7 @@ msgid ""
 "is already done."
 msgstr ""
 "El treball \"%(child)s\" no es pot obrir perquè el treball pare "
-"\"%(parent)s\" ja està realitzat."
+"\"%(parent)s\" ja està finalitzat."
 
 msgctxt "error:project.work:"
 msgid ""
@@ -46,14 +46,10 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr "Usuari creació"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
 msgstr "Esforç"
 
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Hores del full de treball"
-
 msgctxt "field:project.work,id:"
 msgid "ID"
 msgstr "ID"
@@ -86,6 +82,10 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Disponible en fulls de treball"
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Temps"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Total esforç"
@@ -110,13 +110,13 @@ msgctxt "field:timesheet.work,timesheet_lines:"
 msgid "Timesheet Lines"
 msgstr "Línies de full de treball"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
-msgstr "L'esforç estimat per a aquest treball."
+msgstr "Temps estimat per aquest treball."
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr "Temps total empleat en aquest treball."
+msgstr "Temps total dedicat en aquest treball."
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
@@ -184,7 +184,7 @@ msgstr "Administració de projectes"
 
 msgctxt "selection:project.work,state:"
 msgid "Done"
-msgstr "Acabat"
+msgstr "Finalitzat"
 
 msgctxt "selection:project.work,state:"
 msgid "Opened"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index aaf9959..23c5c79 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -42,14 +42,10 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr ""
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
 msgstr ""
 
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr ""
-
 msgctxt "field:project.work,id:"
 msgid "ID"
 msgstr ""
@@ -82,6 +78,10 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr ""
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr ""
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr ""
@@ -102,11 +102,11 @@ msgctxt "field:project.work,write_uid:"
 msgid "Write User"
 msgstr ""
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
 msgstr ""
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
 msgstr ""
 
diff --git a/locale/de_DE.po b/locale/de_DE.po
index 15550a0..0a87426 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -47,13 +47,9 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr "Erstellt durch"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
-msgstr "Aufwand (Personenstunden)"
-
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Stunden"
+msgstr "Zeitaufwand"
 
 msgctxt "field:project.work,id:"
 msgid "ID"
@@ -87,6 +83,10 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Verfügbar für Zeiterfassung"
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Dauer"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Gesamtaufwand (Personenstunden)"
@@ -111,17 +111,13 @@ msgctxt "field:timesheet.work,timesheet_lines:"
 msgid "Timesheet Lines"
 msgstr "Zeitpositionen"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
-msgstr ""
-"Veranschlagter Aufwand für diese Aufgabe in Stunden (Format: "
-"Personenstunden, -tage, -wochen)"
+msgstr "Geschätzter Zeitaufwand für diese Aufgabe"
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr ""
-"Die gesamte Zeit, die für diese Aufgabe verwendet wurde (Format: "
-"Personenstunden, -tage, -wochen)"
+msgstr "Die gesamte Zeit, die für diese Aufgabe verwendet wurde"
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 3c4a71e..271e8d6 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -46,14 +46,10 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr "Usuario creación"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
 msgstr "Esfuerzo"
 
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Horas del parte de trabajo"
-
 msgctxt "field:project.work,id:"
 msgid "ID"
 msgstr "ID"
@@ -86,6 +82,10 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Disponible en partes de trabajo"
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Duración"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Total esfuerzo"
@@ -110,13 +110,13 @@ msgctxt "field:timesheet.work,timesheet_lines:"
 msgid "Timesheet Lines"
 msgstr "Líneas de parte de trabajo"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
 msgstr "Esfuerzo estimado para esta actividad"
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr "Tiempo total empleado en este trabajo"
+msgstr "Tiempo total empleado en esta actividad"
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 36e4cea..246e2ba 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -46,14 +46,10 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr "Creado por Usuario"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
 msgstr "Esfuerzo"
 
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Registro de Horas"
-
 msgctxt "field:project.work,id:"
 msgid "ID"
 msgstr "ID"
@@ -86,6 +82,10 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Disponibilidad en los registros de tiempos"
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Duración"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Esfuerzo tTotal"
@@ -110,13 +110,13 @@ msgctxt "field:timesheet.work,timesheet_lines:"
 msgid "Timesheet Lines"
 msgstr "Lineas de Registro de Tiempo"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
-msgstr "El esfuerzo estimado para esta tarea"
+msgstr "Esfuerzo Estimado para este trabajo"
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr "Tiempo total gastado en esta tarea"
+msgstr "Total de tiempo de gastado en este trabajo"
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
diff --git a/locale/es_EC.po b/locale/es_EC.po
index 980c6ed..2b43f40 100644
--- a/locale/es_EC.po
+++ b/locale/es_EC.po
@@ -11,15 +11,15 @@ msgid ""
 "Work \"%(child)s\" can not be opened because its parent work \"%(parent)s\" "
 "is already done."
 msgstr ""
-"El trabajo \"%(child)s\" no puede ser abierto porque su trabajo padre "
-"\"%(parent)s\" ya está realizado."
+"El trabajo \"%(child)s\" no se puede abrir porque el trabajo padre "
+"\"%(parent)s\" ya está finalizado."
 
 msgctxt "error:project.work:"
 msgid ""
 "Work \"%(parent)s\" can not be done because its child work \"%(child)s\" is "
 "still opened."
 msgstr ""
-"El trabajo \"%(parent)s\" no se puede finalizar porque su trabajo hijo "
+"El trabajo \"%(parent)s\" no se puede finalizar porque el trabajo hijo "
 "\"%(child)s\" todavía se encuentra abierto."
 
 msgctxt "field:project.work,active:"
@@ -40,20 +40,16 @@ msgstr "Empresa"
 
 msgctxt "field:project.work,create_date:"
 msgid "Create Date"
-msgstr "Fecha de Creación"
+msgstr "Fecha de creación"
 
 msgctxt "field:project.work,create_uid:"
 msgid "Create User"
-msgstr "Creado por Usuario"
+msgstr "Creado por usuario"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
 msgstr "Esfuerzo"
 
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Horas de Trabajo"
-
 msgctxt "field:project.work,id:"
 msgid "ID"
 msgstr "ID"
@@ -68,7 +64,7 @@ msgstr "Tercero"
 
 msgctxt "field:project.work,party_address:"
 msgid "Contact Address"
-msgstr "Dirección de Contacto"
+msgstr "Dirección de contacto"
 
 msgctxt "field:project.work,rec_name:"
 msgid "Name"
@@ -86,6 +82,10 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Disponible en partes de trabajo"
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Duración"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Esfuerzo Total"
@@ -100,23 +100,23 @@ msgstr "Trabajo"
 
 msgctxt "field:project.work,write_date:"
 msgid "Write Date"
-msgstr "Fecha de Modificación"
+msgstr "Fecha de modificación"
 
 msgctxt "field:project.work,write_uid:"
 msgid "Write User"
-msgstr "Modificado por Usuario"
+msgstr "Modificado por usuario"
 
 msgctxt "field:timesheet.work,timesheet_lines:"
 msgid "Timesheet Lines"
-msgstr "Líneas de Parte de Trabajo"
+msgstr "Líneas de parte de trabajo"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
-msgstr "Esfuerzo estimado para este trabajo"
+msgstr "Tiempo estimado para este trabajo"
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr "Tiempo total empleado en este trabajo"
+msgstr "Tiempo total dedicado en este trabajo"
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
@@ -140,11 +140,11 @@ msgstr "Tareas"
 
 msgctxt "model:ir.action,name:act_work_list"
 msgid "Works Efforts"
-msgstr "Proyectos y Tareas"
+msgstr "Proyectos y tareas"
 
 msgctxt "model:ir.action,name:act_work_tree"
 msgid "Works Efforts"
-msgstr "Proyectos y Tareas"
+msgstr "Proyectos y tareas"
 
 msgctxt "model:ir.ui.menu,name:menu_configuration"
 msgid "Configuration"
@@ -176,7 +176,7 @@ msgstr "Proyectos y Tareas"
 
 msgctxt "model:project.work,name:"
 msgid "Work Effort"
-msgstr "Proyecto y Tarea"
+msgstr "Proyecto y tarea"
 
 msgctxt "model:res.group,name:group_project_admin"
 msgid "Project Administration"
@@ -184,7 +184,7 @@ msgstr "Administración de Proyectos"
 
 msgctxt "selection:project.work,state:"
 msgid "Done"
-msgstr "Hecho"
+msgstr "Finalizado"
 
 msgctxt "selection:project.work,state:"
 msgid "Opened"
@@ -212,4 +212,4 @@ msgstr "Tareas"
 
 msgctxt "view:project.work:"
 msgid "Works Efforts"
-msgstr "Proyectos y Tareas"
+msgstr "Proyectos y tareas"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 067880e..9b0252e 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -11,8 +11,8 @@ msgid ""
 "Work \"%(child)s\" can not be opened because its parent work \"%(parent)s\" "
 "is already done."
 msgstr ""
-"El trabajo \"%(child)s\" no puede abrir porque el trabajo padre "
-"\"%(parent)s\" ya está realizado."
+"El trabajo \"%(child)s\" no se puede abrir porque el trabajo padre "
+"\"%(parent)s\" ya está finalizado."
 
 msgctxt "error:project.work:"
 msgid ""
@@ -46,14 +46,10 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr "Usuario creación"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
 msgstr "Esfuerzo"
 
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Horas parte de trabajo"
-
 msgctxt "field:project.work,id:"
 msgid "ID"
 msgstr "ID"
@@ -86,6 +82,10 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Disponible en partes de trabajo"
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Tiempo"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Total esfuerzo"
@@ -110,17 +110,17 @@ msgctxt "field:timesheet.work,timesheet_lines:"
 msgid "Timesheet Lines"
 msgstr "Líneas de parte de trabajo"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
-msgstr "El esfuerzo estimado para esta actividad."
+msgstr "Tiempo estimado para este trabajo."
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr "Tiempo total empleado en este trabajo."
+msgstr "Tiempo total dedicado en este trabajo."
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
-msgstr "El esfuerzo total estimado para esta actividad y sus subactividades."
+msgstr "El esfuerzo total estimado para este trabajo y sus subtrabajos."
 
 msgctxt "model:ir.action,name:act_open_child_work"
 msgid "Tasks"
@@ -184,7 +184,7 @@ msgstr "Administración de proyectos"
 
 msgctxt "selection:project.work,state:"
 msgid "Done"
-msgstr "Realizado"
+msgstr "Finalizado"
 
 msgctxt "selection:project.work,state:"
 msgid "Opened"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 4cd4138..ff17fcf 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -46,14 +46,10 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr "Créé par"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
 msgstr "Effort"
 
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Heures de présence"
-
 msgctxt "field:project.work,id:"
 msgid "ID"
 msgstr "ID"
@@ -86,6 +82,10 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Disponible sur les feuilles de présence"
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Durée"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Effort total"
@@ -110,11 +110,11 @@ msgctxt "field:timesheet.work,timesheet_lines:"
 msgid "Timesheet Lines"
 msgstr "Lignes de feuille de présence"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
 msgstr "Effort estimé pour ce travail"
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
 msgstr "Temps total passé sur ce travail"
 
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 4a6c475..50113b9 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -46,15 +46,10 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr ""
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
 msgstr ""
 
-#, fuzzy
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Tijdregistratie uren"
-
 msgctxt "field:project.work,id:"
 msgid "ID"
 msgstr ""
@@ -93,6 +88,10 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Beschikbaar in tijdregistartie"
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr ""
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr ""
@@ -115,14 +114,13 @@ msgctxt "field:project.work,write_uid:"
 msgid "Write User"
 msgstr ""
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
 msgstr ""
 
-#, fuzzy
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr "Tijd besteed aan dit werk"
+msgstr ""
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index f508a52..fea054c 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -42,13 +42,9 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr "Создано пользователем"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
-msgstr "Затраты"
-
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Часы табеля"
+msgstr ""
 
 msgctxt "field:project.work,id:"
 msgid "ID"
@@ -82,6 +78,11 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Доступно в табелях"
 
+#, fuzzy
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Продолжительность"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Общие затраты"
@@ -102,13 +103,13 @@ msgctxt "field:project.work,write_uid:"
 msgid "Write User"
 msgstr "Изменено пользователем"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
-msgstr "Предположительные затраты для этой работы"
+msgstr ""
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr "Общее время потраченное на эту работу"
+msgstr ""
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
diff --git a/locale/sl_SI.po b/locale/sl_SI.po
index b768b2a..7f285cd 100644
--- a/locale/sl_SI.po
+++ b/locale/sl_SI.po
@@ -46,13 +46,9 @@ msgctxt "field:project.work,create_uid:"
 msgid "Create User"
 msgstr "Izdelal"
 
-msgctxt "field:project.work,effort:"
+msgctxt "field:project.work,effort_duration:"
 msgid "Effort"
-msgstr "Ocena"
-
-msgctxt "field:project.work,hours:"
-msgid "Timesheet Hours"
-msgstr "Dejanske ure"
+msgstr "Porabljen čas"
 
 msgctxt "field:project.work,id:"
 msgid "ID"
@@ -86,13 +82,17 @@ msgctxt "field:project.work,timesheet_available:"
 msgid "Available on timesheets"
 msgstr "Na evidenci"
 
+msgctxt "field:project.work,timesheet_duration:"
+msgid "Duration"
+msgstr "Trajanje"
+
 msgctxt "field:project.work,total_effort:"
 msgid "Total Effort"
 msgstr "Ocena skupaj"
 
 msgctxt "field:project.work,type:"
 msgid "Type"
-msgstr "Vrsta"
+msgstr "Tip"
 
 msgctxt "field:project.work,work:"
 msgid "Work"
@@ -106,17 +106,17 @@ msgctxt "field:project.work,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
-msgctxt "help:project.work,effort:"
+msgctxt "help:project.work,effort_duration:"
 msgid "Estimated Effort for this work"
-msgstr "Ocena za to dejavnost"
+msgstr "Ocenjen porabljen čas za ta teden"
 
-msgctxt "help:project.work,hours:"
+msgctxt "help:project.work,timesheet_duration:"
 msgid "Total time spent on this work"
-msgstr "Skupni porabljen čas na tem dejavnosti"
+msgstr "Skupen porabljen čas na tej nalogi"
 
 msgctxt "help:project.work,total_effort:"
 msgid "Estimated total effort for this work and the sub-works"
-msgstr "Skupna ocena za to dejavnost in njene poddejavnosti"
+msgstr "Skupna ocena porabljenega časa za to dejavnost in njene poddejavnosti"
 
 msgctxt "model:ir.action,name:act_open_child_work"
 msgid "Tasks"
diff --git a/setup.py b/setup.py
index edabcc0..36ea69a 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
 
 from setuptools import setup
 import re
@@ -41,7 +41,7 @@ if minor_version % 2:
         'hg+http://hg.tryton.org/modules/%s#egg=%s-%s' % (
             name[8:], name, version))
 
-requires = []
+requires = ['python-sql >= 0.4']
 for dep in info.get('depends', []):
     if not re.match(r'(ir|res|webdav)(\W|$)', dep):
         requires.append(get_require_version('trytond_%s' % dep))
@@ -86,6 +86,8 @@ setup(name=name,
         'Natural Language :: Spanish',
         'Operating System :: OS Independent',
         'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: Implementation :: CPython',
+        'Programming Language :: Python :: Implementation :: PyPy',
         'Topic :: Office/Business',
         ],
     license='GPL-3',
diff --git a/tests/__init__.py b/tests/__init__.py
index f4ef562..434b207 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,5 +1,5 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
 
 from .test_project import suite
 
diff --git a/tests/test_project.py b/tests/test_project.py
index 1a906d0..4e6b07f 100644
--- a/tests/test_project.py
+++ b/tests/test_project.py
@@ -1,31 +1,26 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
 import unittest
 import doctest
+import datetime
 
 import trytond.tests.test_tryton
-from trytond.tests.test_tryton import test_view, test_depends
+from trytond.tests.test_tryton import ModuleTestCase
 from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT
 from trytond.transaction import Transaction
 
 
-class ProjectTestCase(unittest.TestCase):
+class ProjectTestCase(ModuleTestCase):
     'Test Project module'
+    module = 'project'
 
     def setUp(self):
+        super(ProjectTestCase, self).setUp()
         trytond.tests.test_tryton.install_module('project')
         self.timesheet_work = POOL.get('timesheet.work')
         self.project_work = POOL.get('project.work')
         self.company = POOL.get('company.company')
 
-    def test0005views(self):
-        'Test views'
-        test_view('project')
-
-    def test0006depends(self):
-        'Test depends'
-        test_depends()
-
     def test0010sum_tree(self):
         'Test sum_tree'
         with Transaction().start(DB_NAME, USER, context=CONTEXT):
@@ -39,7 +34,7 @@ class ProjectTestCase(unittest.TestCase):
                         }])
             p_work_1, = self.project_work.create([{
                         'work': t_work_1.id,
-                        'effort': 1,
+                        'effort_duration': datetime.timedelta(hours=1),
                         }])
 
             t_work_1_1, = self.timesheet_work.create([{
@@ -49,7 +44,7 @@ class ProjectTestCase(unittest.TestCase):
                         }])
             p_work_1_1, = self.project_work.create([{
                         'work': t_work_1_1.id,
-                        'effort': 1,
+                        'effort_duration': datetime.timedelta(hours=1),
                         }])
 
             t_work_1_2, = self.timesheet_work.create([{
@@ -59,7 +54,7 @@ class ProjectTestCase(unittest.TestCase):
                         }])
             p_work_1_2, = self.project_work.create([{
                         'work': t_work_1_2.id,
-                        'effort': 1,
+                        'effort_duration': datetime.timedelta(hours=1),
                         }])
 
             t_work_1_1_1, = self.timesheet_work.create([{
@@ -69,7 +64,7 @@ class ProjectTestCase(unittest.TestCase):
                         }])
             p_work_1_1_1, = self.project_work.create([{
                         'work': t_work_1_1_1.id,
-                        'effort': 1,
+                        'effort_duration': datetime.timedelta(hours=1),
                         }])
 
             t_work_1_1_2, = self.timesheet_work.create([{
@@ -79,7 +74,7 @@ class ProjectTestCase(unittest.TestCase):
                         }])
             p_work_1_1_2, = self.project_work.create([{
                         'work': t_work_1_1_2.id,
-                        'effort': 1,
+                        'effort_duration': datetime.timedelta(hours=1),
                         }])
 
             t_work_1_1_3, = self.timesheet_work.create([{
@@ -89,7 +84,7 @@ class ProjectTestCase(unittest.TestCase):
                         }])
             p_work_1_1_3, = self.project_work.create([{
                         'work': t_work_1_1_3.id,
-                        'effort': 1,
+                        'effort_duration': datetime.timedelta(hours=1),
                         }])
 
             for work, total_effort in (
@@ -100,7 +95,8 @@ class ProjectTestCase(unittest.TestCase):
                     (p_work_1_1_2, 1),
                     (p_work_1_1_3, 1),
                     ):
-                self.assertEqual(work.total_effort, total_effort)
+                self.assertEqual(work.total_effort,
+                    datetime.timedelta(hours=total_effort))
 
 
 def suite():
diff --git a/tryton.cfg b/tryton.cfg
index 28ebaec..ce2f54c 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=3.4.1
+version=3.6.0
 depends:
     company_work_time
     ir
diff --git a/trytond_project.egg-info/PKG-INFO b/trytond_project.egg-info/PKG-INFO
index d2ceb8c..60b68b4 100644
--- a/trytond_project.egg-info/PKG-INFO
+++ b/trytond_project.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond-project
-Version: 3.4.1
+Version: 3.6.0
 Summary: Tryton module with projects
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/3.4/
+Download-URL: http://downloads.tryton.org/3.6/
 Description: trytond_project
         ===============
         
@@ -65,4 +65,6 @@ Classifier: Natural Language :: Slovenian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Office/Business
diff --git a/trytond_project.egg-info/requires.txt b/trytond_project.egg-info/requires.txt
index b3cb3e4..ff48034 100644
--- a/trytond_project.egg-info/requires.txt
+++ b/trytond_project.egg-info/requires.txt
@@ -1,4 +1,5 @@
-trytond_company_work_time >= 3.4, < 3.5
-trytond_party >= 3.4, < 3.5
-trytond_timesheet >= 3.4, < 3.5
-trytond >= 3.4, < 3.5
\ No newline at end of file
+python-sql >= 0.4
+trytond_company_work_time >= 3.6, < 3.7
+trytond_party >= 3.6, < 3.7
+trytond_timesheet >= 3.6, < 3.7
+trytond >= 3.6, < 3.7
\ No newline at end of file
diff --git a/view/work_form.xml b/view/work_form.xml
index db8aca2..5694073 100644
--- a/view/work_form.xml
+++ b/view/work_form.xml
@@ -23,13 +23,13 @@ this repository contains the full copyright notices and license terms. -->
             <label name="timesheet_available"/>
             <field name="timesheet_available"/>
             <newline/>
-            <label name="effort"/>
-            <field name="effort" widget="float_time" float_time="company_work_time"/>
+            <label name="effort_duration"/>
+            <field name="effort_duration"/>
             <newline/>
-            <label name="hours"/>
-            <field name="hours" widget="float_time" float_time="company_work_time"/>
+            <label name="timesheet_duration"/>
+            <field name="timesheet_duration"/>
             <label name="total_effort"/>
-            <field name="total_effort" widget="float_time" float_time="company_work_time"/>
+            <field name="total_effort"/>
             <newline/>
             <separator name="comment" colspan="6"/>
             <field name="comment" colspan="6"/>
@@ -42,8 +42,7 @@ this repository contains the full copyright notices and license terms. -->
                 </group>
             </group>
         </page>
-        <page string="Children" id="children"
-              states="{'invisible': Not(Equal(Eval('type'), 'project'))}">
+        <page string="Children" id="children">
               <field name="children" colspan="4"/>
         </page>
     </notebook>
diff --git a/view/work_list.xml b/view/work_list.xml
index 6b28430..ffc4cc0 100644
--- a/view/work_list.xml
+++ b/view/work_list.xml
@@ -3,9 +3,8 @@
 this repository contains the full copyright notices and license terms. -->
 <tree string="Works Efforts">
     <field name="work"/>
-    <field name="hours" widget="float_time" float_time="company_work_time"/>
-    <field name="total_effort" widget="float_time"
-        float_time="company_work_time"/>
+    <field name="timesheet_duration"/>
+    <field name="total_effort"/>
     <field name="type"/>
     <field name="state"/>
     <field name="active" tree_invisible="1"/>
diff --git a/view/work_list2.xml b/view/work_list2.xml
index 6f57569..dcf6724 100644
--- a/view/work_list2.xml
+++ b/view/work_list2.xml
@@ -3,9 +3,8 @@
 this repository contains the full copyright notices and license terms. -->
 <tree string="Tasks">
     <field name="work"/>
-    <field name="hours" widget="float_time" float_time="company_work_time"/>
-    <field name="total_effort" widget="float_time"
-        float_time="company_work_time"/>
+    <field name="timesheet_duration"/>
+    <field name="total_effort"/>
     <field name="state"/>
     <field name="active" tree_invisible="1"/>
 </tree>
diff --git a/view/work_tree.xml b/view/work_tree.xml
index dbb8fcd..d587d01 100644
--- a/view/work_tree.xml
+++ b/view/work_tree.xml
@@ -3,8 +3,8 @@
 this repository contains the full copyright notices and license terms. -->
 <tree string="Works Efforts">
     <field name="rec_name"/>
-    <field name="hours" widget="float_time" float_time="company_work_time"/>
-    <field name="total_effort" widget="float_time" float_time="company_work_time"/>
+    <field name="timesheet_duration"/>
+    <field name="total_effort"/>
     <field name="type"/>
     <field name="state"/>
     <field name="active" tree_invisible="1"/>
diff --git a/work.py b/work.py
index 513cdd0..1044a23 100644
--- a/work.py
+++ b/work.py
@@ -1,5 +1,9 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+import datetime
+
+from sql import Null
+
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.pyson import Eval
 from trytond import backend
@@ -36,14 +40,16 @@ class Work(ModelSQL, ModelView):
     timesheet_available = fields.Function(
         fields.Boolean('Available on timesheets'),
         'on_change_with_timesheet_available')
-    hours = fields.Function(fields.Float('Timesheet Hours', digits=(16, 2),
-            help="Total time spent on this work"), 'on_change_with_hours')
-    effort = fields.Float("Effort",
+    timesheet_duration = fields.Function(fields.TimeDelta('Duration',
+            'company_work_time', help="Total time spent on this work"),
+        'on_change_with_timesheet_duration')
+    effort_duration = fields.TimeDelta('Effort', 'company_work_time',
         states={
             'invisible': Eval('type') != 'task',
             }, depends=['type'], help="Estimated Effort for this work")
-    total_effort = fields.Function(fields.Float('Total Effort',
-        help="Estimated total effort for this work and the sub-works"),
+    total_effort = fields.Function(fields.TimeDelta('Total Effort',
+            'company_work_time',
+            help="Estimated total effort for this work and the sub-works"),
         'get_total_effort')
     comment = fields.Text('Comment')
     parent = fields.Function(fields.Many2One('project.work', 'Parent'),
@@ -58,7 +64,7 @@ class Work(ModelSQL, ModelView):
     @staticmethod
     def order_sequence(tables):
         table, _ = tables[None]
-        return [table.sequence == None, table.sequence]
+        return [table.sequence == Null, table.sequence]
 
     @staticmethod
     def default_type():
@@ -79,6 +85,9 @@ class Work(ModelSQL, ModelView):
         cursor = Transaction().cursor
         table_project_work = TableHandler(cursor, cls, module_name)
         table_timesheet_work = TableHandler(cursor, TimesheetWork, module_name)
+        project = cls.__table__()
+        timesheet = TimesheetWork.__table__()
+
         migrate_sequence = (not table_project_work.column_exist('sequence')
             and table_timesheet_work.column_exist('sequence'))
 
@@ -86,8 +95,6 @@ class Work(ModelSQL, ModelView):
 
         # Migration from 2.0: copy sequence from timesheet to project
         if migrate_sequence:
-            project = cls.__table__()
-            timesheet = TimesheetWork.__table__()
             cursor.execute(*timesheet.join(project,
                     condition=project.work == timesheet.id
                     ).select(timesheet.sequence, timesheet.id))
@@ -100,6 +107,18 @@ class Work(ModelSQL, ModelView):
         # Migration from 2.4: drop required on sequence
         table_project_work.not_null_action('sequence', action='remove')
 
+        # Migration from 3.4: change effort into timedelta effort_duration
+        if table_project_work.column_exist('effort'):
+            cursor.execute(*project.select(project.id, project.effort,
+                    where=project.effort != Null))
+            for id_, effort in cursor.fetchall():
+                duration = datetime.timedelta(hours=effort)
+                cursor.execute(*project.update(
+                        [project.effort_duration],
+                        [duration],
+                        where=project.id == id_))
+            table_project_work.drop_column('effort')
+
     @classmethod
     def __setup__(cls):
         super(Work, cls).__setup__()
@@ -173,8 +192,8 @@ class Work(ModelSQL, ModelView):
         return self.work.timesheet_available if self.work else None
 
     @fields.depends('work')
-    def on_change_with_hours(self, name=None):
-        return self.work.hours if self.work else None
+    def on_change_with_timesheet_duration(self, name=None):
+        return self.work.duration if self.work else None
 
     @classmethod
     def get_parent(cls, project_works, name):
@@ -304,7 +323,8 @@ class Work(ModelSQL, ModelView):
                 ('parent', 'child_of', [w.id for w in works]),
                 ('active', '=', True),
                 ]) + works
-        return cls.sum_tree(works, lambda w: w.effort or 0)
+        return cls.sum_tree(works,
+            lambda w: w.effort_duration or datetime.timedelta())
 
     @classmethod
     def copy(cls, project_works, default=None):
@@ -342,6 +362,6 @@ class Work(ModelSQL, ModelView):
 
     @classmethod
     def search_global(cls, text):
-        for id_, rec_name, icon in super(Work, cls).search_global(text):
+        for record, rec_name, icon in super(Work, cls).search_global(text):
             icon = icon or 'tryton-project'
-            yield id_, rec_name, icon
+            yield record, rec_name, icon
diff --git a/work.xml b/work.xml
index 80174cc..f6082f0 100644
--- a/work.xml
+++ b/work.xml
@@ -31,7 +31,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_work_tree">
             <field name="name">Works Efforts</field>
             <field name="res_model">project.work</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view"
             id="act_work_tree_view1">
@@ -70,7 +70,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_project_tree">
             <field name="name">Projects</field>
             <field name="res_model">project.work</field>
-            <field name="domain">[('parent', '=', None)]</field>
+            <field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
         </record>
         <record model="ir.action.act_window.view"
             id="act_project_tree_view1">
@@ -90,7 +90,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_project_form">
             <field name="name">Projects</field>
             <field name="res_model">project.work</field>
-            <field name="domain">[('type', '=', 'project')]</field>
+            <field name="domain" eval="[('type', '=', 'project')]" pyson="1"/>
             <field name="context"></field>
         </record>
         <record model="ir.action.act_window.view"
@@ -111,7 +111,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_task_form">
             <field name="name">Tasks</field>
             <field name="res_model">project.work</field>
-            <field name="domain">[('type', '=', 'task')]</field>
+            <field name="domain" eval="[('type', '=', 'task')]" pyson="1"/>
             <field name="context"></field>
         </record>
         <record model="ir.action.act_window.view"
@@ -133,7 +133,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Tasks</field>
             <field name="res_model">project.work</field>
             <field name="context"></field>
-            <field name="domain">[('parent', 'in', Eval('active_ids')), ('type', '=', 'task')]</field>
+            <field name="domain"
+                eval="[('parent', 'in', Eval('active_ids')), ('type', '=', 'task')]"
+                pyson="1"/>
         </record>
         <record model="ir.action.keyword"
                 id="act_open_project_work_keyword1">
-- 
tryton-modules-project



More information about the tryton-debian-vcs mailing list