[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#687625: pre-approve unblock: tryton-client/2.2.3-1



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Dear release managers,

please approve the upload of tryton-client_2.2.3-1.

The new version contains the upstream bug fix release [1].

The fixes are for

 * Fix wrong sorting to get lazy first
 * Use repr for faultCode in Fault.__repr__
 * Fix test on legend graph attribute
 * get_toplevel_window should return only gtk.WINDOW_TOPLEVEL
 * set_value of M2O must simulate a focus-out in case it did not yet occur
 * Fix name of fields loaded from predefined export
 * Activate form buttons only when they are sensitive
 * Fix domain_inversion for comparison of datetime with None

Mathias

[1] http://news.tryton.org/2012/09/maintenance-releases-for-supported.html


debdiff attached

unblock: tryton-client/2.2.3-1
diff -Nru tryton-client-2.2.2/CHANGELOG tryton-client-2.2.3/CHANGELOG
--- tryton-client-2.2.2/CHANGELOG	2012-05-07 11:10:32.000000000 +0200
+++ tryton-client-2.2.3/CHANGELOG	2012-09-01 18:55:56.000000000 +0200
@@ -1,3 +1,6 @@
+Version 2.2.3 - 2012-09-01
+* Bug fixes (see mercurial logs for details)
+
 Version 2.2.2 - 2012-05-07
 * Bug fixes (see mercurial logs for details)
 
diff -Nru tryton-client-2.2.2/debian/changelog tryton-client-2.2.3/debian/changelog
--- tryton-client-2.2.2/debian/changelog	2012-06-30 17:24:56.000000000 +0200
+++ tryton-client-2.2.3/debian/changelog	2012-09-11 19:37:56.000000000 +0200
@@ -1,3 +1,9 @@
+tryton-client (2.2.3-1) unstable; urgency=low
+
+  * Merging upstream version 2.2.3.
+
+ -- Mathias Behrle <mathiasb@m9s.biz>  Tue, 11 Sep 2012 19:37:56 +0200
+
 tryton-client (2.2.2-2) unstable; urgency=low
 
   * Updating maintainers field.
diff -Nru tryton-client-2.2.2/PKG-INFO tryton-client-2.2.3/PKG-INFO
--- tryton-client-2.2.2/PKG-INFO	2012-05-07 11:10:35.000000000 +0200
+++ tryton-client-2.2.3/PKG-INFO	2012-09-01 18:56:01.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.0
 Name: tryton
-Version: 2.2.2
+Version: 2.2.3
 Summary: Tryton client
 Home-page: http://www.tryton.org/
 Author: B2CK
diff -Nru tryton-client-2.2.2/tryton/common/common.py tryton-client-2.2.3/tryton/common/common.py
--- tryton-client-2.2.2/tryton/common/common.py	2012-04-23 18:28:30.000000000 +0200
+++ tryton-client-2.2.3/tryton/common/common.py	2012-07-30 11:05:49.000000000 +0200
@@ -243,7 +243,8 @@
 
 def get_toplevel_window():
     windows = [x for x in gtk.window_list_toplevels()
-        if x.window and x.props.visible]
+        if x.window and x.props.visible
+        and x.get_window_type() == gtk.WINDOW_TOPLEVEL]
     trans2windows = dict((x.get_transient_for(), x) for x in windows)
     for window in set(windows) - set(trans2windows.iterkeys()):
         return window
diff -Nru tryton-client-2.2.2/tryton/common/domain_inversion.py tryton-client-2.2.3/tryton/common/domain_inversion.py
--- tryton-client-2.2.2/tryton/common/domain_inversion.py	2011-12-25 14:51:07.000000000 +0100
+++ tryton-client-2.2.3/tryton/common/domain_inversion.py	2012-05-22 14:40:45.000000000 +0200
@@ -3,6 +3,7 @@
 
 import operator
 import types
+import datetime
 
 def in_(a, b):
     if isinstance(a, (list, tuple)):
@@ -52,7 +53,18 @@
         # We should consider that other domain inversion will set a correct
         # value to this field
         return True
-    return OPERATORS[operand](context[field], value)
+    context_field = context[field]
+    if isinstance(context_field, datetime.date) and not value:
+        if isinstance(context_field, datetime.datetime):
+            value = datetime.datetime.min
+        else:
+            value = datetime.date.min
+    if isinstance(value, datetime.date) and not context_field:
+        if isinstance(value, datetime.datetime):
+            context_field = datetime.datetime.min
+        else:
+            context_field = datetime.date.min
+    return OPERATORS[operand](context_field, value)
 
 def inverse_leaf(domain):
     if domain in ('AND', 'OR'):
@@ -396,6 +408,15 @@
     assert eval_domain(domain, {'x': 6})
     assert not eval_domain(domain, {'x': 4})
 
+    domain = [['x', '>', None]]
+    assert eval_domain(domain, {'x': datetime.date.today()})
+    assert eval_domain(domain, {'x': datetime.datetime.now()})
+
+    domain = [['x', '<', datetime.date.today()]]
+    assert eval_domain(domain, {'x': None})
+    domain = [['x', '<', datetime.datetime.now()]]
+    assert eval_domain(domain, {'x': None})
+
     domain = [['x', 'in', [3, 5]]]
     assert eval_domain(domain, {'x': 3})
     assert not eval_domain(domain, {'x': 4})
diff -Nru tryton-client-2.2.2/tryton/gui/window/form.py tryton-client-2.2.3/tryton/gui/window/form.py
--- tryton-client-2.2.2/tryton/gui/window/form.py	2012-04-23 18:28:30.000000000 +0200
+++ tryton-client-2.2.3/tryton/gui/window/form.py	2012-05-22 14:46:14.000000000 +0200
@@ -406,19 +406,24 @@
         return True
 
     def sig_action(self, widget):
-        self.buttons['action'].props.active = True
+        if self.buttons['action'].props.sensitive:
+            self.buttons['action'].props.active = True
 
     def sig_print(self, widget):
-        self.buttons['print'].props.active = True
+        if self.buttons['print'].props.sensitive:
+            self.buttons['print'].props.active = True
 
     def sig_print_open(self, widget):
-        self.buttons['open'].props.active = True
+        if self.buttons['open'].props.sensitive:
+            self.buttons['open'].props.active = True
 
     def sig_print_email(self, widget):
-        self.buttons['email'].props.active = True
+        if self.buttons['email'].props.sensitive:
+            self.buttons['email'].props.active = True
 
     def sig_relate(self, widget):
-        self.buttons['relate'].props.active = True
+        if self.buttons['relate'].props.sensitive:
+            self.buttons['relate'].props.active = True
 
     def action_popup(self, widget):
         button, = widget.get_children()
diff -Nru tryton-client-2.2.2/tryton/gui/window/view_form/view/form_gtk/many2one.py tryton-client-2.2.3/tryton/gui/window/view_form/view/form_gtk/many2one.py
--- tryton-client-2.2.2/tryton/gui/window/view_form/view/form_gtk/many2one.py	2011-11-22 13:26:54.000000000 +0100
+++ tryton-client-2.2.3/tryton/gui/window/view_form/view/form_gtk/many2one.py	2012-07-10 16:12:14.000000000 +0200
@@ -83,7 +83,7 @@
     def _color_widget(self):
         return self.wid_text
 
-    def sig_activate(self, widget, event=None, key_press=False):
+    def sig_activate(self, widget=None, event=None, key_press=False):
         if not self.focus_out:
             return
         if not self.field:
@@ -93,7 +93,7 @@
 
         self.focus_out = False
         if not value:
-            if not key_press and not event:
+            if not key_press and not event and widget:
                 widget.emit_stop_by_name('activate')
             if not self._readonly and (self.wid_text.get_text() or \
                     (self.field.get_state_attrs(
@@ -243,7 +243,8 @@
         return False
 
     def set_value(self, record, field):
-        pass # No update of the model, the model is updated in real time !
+        # Simulate a focus-out
+        self.sig_activate()
 
     def display(self, record, field):
         self.changed = False
diff -Nru tryton-client-2.2.2/tryton/gui/window/view_form/view/form.py tryton-client-2.2.3/tryton/gui/window/view_form/view/form.py
--- tryton-client-2.2.2/tryton/gui/window/view_form/view/form.py	2011-11-22 13:26:54.000000000 +0100
+++ tryton-client-2.2.3/tryton/gui/window/view_form/view/form.py	2012-08-26 15:44:38.000000000 +0200
@@ -106,7 +106,7 @@
             # Get first the lazy one to reduce number of requests
             fields = [(name, field.attrs.get('loading', 'eager'))
                     for name, field in record.group.fields.iteritems()]
-            fields.sort(key=operator.itemgetter(1))
+            fields.sort(key=operator.itemgetter(1), reverse=True)
             for field, _ in fields:
                 record[field].get(record, check_load=False)
         for name, widgets in self.widgets.iteritems():
diff -Nru tryton-client-2.2.2/tryton/gui/window/view_form/view/graph_gtk/graph.py tryton-client-2.2.3/tryton/gui/window/view_form/view/graph_gtk/graph.py
--- tryton-client-2.2.2/tryton/gui/window/view_form/view/graph_gtk/graph.py	2011-11-22 13:26:54.000000000 +0100
+++ tryton-client-2.2.3/tryton/gui/window/view_form/view/graph_gtk/graph.py	2012-08-07 12:28:57.000000000 +0200
@@ -276,7 +276,7 @@
         cr.restore()
 
     def drawLegend(self, cr, width, height):
-        if not self.attrs.get('legend', True):
+        if not int(self.attrs.get('legend', 1)):
             return
 
         padding = 4
diff -Nru tryton-client-2.2.2/tryton/gui/window/win_export.py tryton-client-2.2.3/tryton/gui/window/win_export.py
--- tryton-client-2.2.2/tryton/gui/window/win_export.py	2012-04-23 18:28:30.000000000 +0200
+++ tryton-client-2.2.3/tryton/gui/window/win_export.py	2012-07-10 15:43:15.000000000 +0200
@@ -246,7 +246,8 @@
         child = self.model1.iter_children(iter)
         if self.model1.get_value(child, 0) is None:
             prefix_field = self.model1.get_value(iter, 1)
-            name, model = self.fields[prefix_field]
+            _, model = self.fields[prefix_field]
+            name = self.fields_data[prefix_field]['string']
             self.model_populate(self._get_fields(model), iter, prefix_field +
                     '/', name + '/')
             self.model1.remove(child)
diff -Nru tryton-client-2.2.2/tryton/jsonrpc.py tryton-client-2.2.3/tryton/jsonrpc.py
--- tryton-client-2.2.2/tryton/jsonrpc.py	2012-04-23 18:28:30.000000000 +0200
+++ tryton-client-2.2.3/tryton/jsonrpc.py	2012-08-26 15:40:34.000000000 +0200
@@ -32,6 +32,11 @@
         super(Fault, self).__init__(faultCode, faultString, **extra)
         self.args = faultString
 
+    def __repr__(self):
+        return (
+            "<Fault %s: %s>" %
+            (repr(self.faultCode), repr(self.faultString))
+            )
 
 class ProtocolError(xmlrpclib.ProtocolError):
     pass
diff -Nru tryton-client-2.2.2/tryton/version.py tryton-client-2.2.3/tryton/version.py
--- tryton-client-2.2.2/tryton/version.py	2011-12-26 10:42:07.000000000 +0100
+++ tryton-client-2.2.3/tryton/version.py	2012-05-07 14:53:45.000000000 +0200
@@ -1,7 +1,7 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 PACKAGE = "tryton"
-VERSION = "2.2.2"
+VERSION = "2.2.3"
 LICENSE = "GPL-3"
 WEBSITE = "http://www.tryton.org/";
 
diff -Nru tryton-client-2.2.2/tryton.egg-info/PKG-INFO tryton-client-2.2.3/tryton.egg-info/PKG-INFO
--- tryton-client-2.2.2/tryton.egg-info/PKG-INFO	2012-05-07 11:10:33.000000000 +0200
+++ tryton-client-2.2.3/tryton.egg-info/PKG-INFO	2012-09-01 18:55:59.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.0
 Name: tryton
-Version: 2.2.2
+Version: 2.2.3
 Summary: Tryton client
 Home-page: http://www.tryton.org/
 Author: B2CK

Attachment: signature.asc
Description: PGP signature


Reply to: