[tryton-debian-vcs] tryton-client branch debian updated. debian/3.8.4-2-3-ge6dd368

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Tue Mar 15 20:34:51 UTC 2016


The following commit has been merged in the debian branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-client.git;a=commitdiff;h=debian/3.8.4-2-3-ge6dd368

commit e6dd3685962eac792919355a9232421b6cfab890
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Mar 15 20:26:11 2016 +0100

    Releasing debian version 3.8.5-1.
    
    Signed-off-by: Mathias Behrle <mathiasb at m9s.biz>

diff --git a/debian/changelog b/debian/changelog
index fbb1ddb..94e6bca 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-client (3.8.5-1) unstable; urgency=medium
+
+  * Updating signing-key.asc with the actual upstream maintainer keys.
+  * Merging upstream version 3.8.5.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 15 Mar 2016 20:26:11 +0100
+
 tryton-client (3.8.4-2) unstable; urgency=medium
 
   * Updating to standards version 3.9.7, no changes needed.
commit fbf55a04d960e73695759b6d8149fe392890ec0a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Mar 15 20:26:11 2016 +0100

    Merging upstream version 3.8.5.

diff --git a/CHANGELOG b/CHANGELOG
index 8e697bf..92d7d56 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 3.8.5 - 2016-03-14
+* Bug fixes (see mercurial logs for details)
+
 Version 3.8.4 - 2016-02-06
 * Bug fixes (see mercurial logs for details)
 
diff --git a/PKG-INFO b/PKG-INFO
index b582218..cf2d0a4 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: tryton
-Version: 3.8.4
+Version: 3.8.5
 Summary: Tryton client
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/setup.nsi b/setup.nsi
index 7c81390..968f1ae 100644
--- a/setup.nsi
+++ b/setup.nsi
@@ -55,10 +55,10 @@ Var STARTMENU_FOLDER
 
 ;Languages
 
+!insertmacro MUI_LANGUAGE "English" ; First is the default
+!include "english.nsh"
 !insertmacro MUI_LANGUAGE "Catalan"
 !include "catalan.nsh"
-!insertmacro MUI_LANGUAGE "English"
-!include "english.nsh"
 !insertmacro MUI_LANGUAGE "French"
 !include "french.nsh"
 !insertmacro MUI_LANGUAGE "German"
diff --git a/tryton.egg-info/PKG-INFO b/tryton.egg-info/PKG-INFO
index b582218..cf2d0a4 100644
--- a/tryton.egg-info/PKG-INFO
+++ b/tryton.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: tryton
-Version: 3.8.4
+Version: 3.8.5
 Summary: Tryton client
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/tryton/__init__.py b/tryton/__init__.py
index 5729054..d365bbe 100644
--- a/tryton/__init__.py
+++ b/tryton/__init__.py
@@ -1,3 +1,3 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
-__version__ = "3.8.4"
+__version__ = "3.8.5"
diff --git a/tryton/common/domain_parser.py b/tryton/common/domain_parser.py
index abee926..03a754e 100644
--- a/tryton/common/domain_parser.py
+++ b/tryton/common/domain_parser.py
@@ -936,10 +936,14 @@ class DomainParser(object):
                         operator = '!'
                     value = value.replace('%%', '%')
             def_operator = default_operator(field)
-            if (def_operator == operator.strip()
-                    or (def_operator in operator
-                        and ('not' in operator
-                            or '!' in operator))):
+            if def_operator == operator.strip():
+                operator = ''
+                if value in OPERATORS:
+                    # As the value could be interpreted as an operator,
+                    # the default operator must be forced
+                    operator = '"" '
+            elif (def_operator in operator
+                    and ('not' in operator or '!' in operator)):
                 operator = operator.rstrip(def_operator
                     ).replace('not', '!').strip()
             if operator.endswith('in'):
@@ -1035,7 +1039,7 @@ class DomainParser(object):
             field = self.fields[name]
         else:
             field = self.strings[name.lower()]
-        if operator is None:
+        if not operator:
             operator = default_operator(field)
             value = ''
             if 'ilike' in operator:
@@ -1064,7 +1068,9 @@ class DomainParser(object):
                     else:
                         yield (None,)
                     name = (name,)
-                    if i + 1 < len(parts) and parts[i + 1] in OPERATORS:
+                    # empty string is also the default operator
+                    if (i + 1 < len(parts)
+                            and parts[i + 1] in OPERATORS + ('',)):
                         name += (parts[i + 1],)
                         i += 1
                     else:
@@ -1129,7 +1135,7 @@ class DomainParser(object):
                         if target:
                             field_name += '.rec_name'
 
-                    if operator is None:
+                    if not operator:
                         operator = default_operator(field)
                     if isinstance(value, list):
                         if operator == '!':
@@ -1224,6 +1230,7 @@ def test_string():
     assert dom.string([('name', '=', '')]) == 'Name: =""'
     assert dom.string([('name', 'ilike', '%')]) == 'Name: '
     assert dom.string([('name', 'ilike', '%Doe%')]) == 'Name: Doe'
+    assert dom.string([('name', 'ilike', '%<%')]) == 'Name: "" "<"'
     assert dom.string([('name', 'ilike', 'Doe')]) == 'Name: =Doe'
     assert dom.string([('name', 'ilike', 'Doe%')]) == 'Name: Doe%'
     assert dom.string([('name', 'ilike', 'Doe%%')]) == 'Name: =Doe%'
@@ -1352,6 +1359,9 @@ def test_group():
     assert rlist(dom.group(udlex(u'Name: \\"foo\\"'))) == [
         ('Name', None, '"foo"'),
         ]
+    assert rlist(dom.group(udlex(u'Name: "" <'))) == [
+        ('Name', '', '<'),
+        ]
 
 
 def test_parse_clause():
@@ -1394,6 +1404,8 @@ def test_parse_clause():
         ('rec_name', 'ilike', '%John%')]
     assert rlist(dom.parse_clause([('Name', None, None)])) == [
         ('name', 'ilike', '%')]
+    assert rlist(dom.parse_clause([('Name', '', None)])) == [
+        ('name', 'ilike', '%')]
     assert rlist(dom.parse_clause([('Name', '=', None)])) == [
         ('name', '=', None)]
     assert rlist(dom.parse_clause([('Name', '=', '')])) == [
diff --git a/tryton/data/locale/bg_BG/LC_MESSAGES/tryton.mo b/tryton/data/locale/bg_BG/LC_MESSAGES/tryton.mo
index 55dc6ff..476fabc 100644
Binary files a/tryton/data/locale/bg_BG/LC_MESSAGES/tryton.mo and b/tryton/data/locale/bg_BG/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/ca_ES/LC_MESSAGES/tryton.mo b/tryton/data/locale/ca_ES/LC_MESSAGES/tryton.mo
index fa4f07f..375c3a8 100644
Binary files a/tryton/data/locale/ca_ES/LC_MESSAGES/tryton.mo and b/tryton/data/locale/ca_ES/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/cs_CZ/LC_MESSAGES/tryton.mo b/tryton/data/locale/cs_CZ/LC_MESSAGES/tryton.mo
index fd04d82..d2b3658 100644
Binary files a/tryton/data/locale/cs_CZ/LC_MESSAGES/tryton.mo and b/tryton/data/locale/cs_CZ/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/de_DE/LC_MESSAGES/tryton.mo b/tryton/data/locale/de_DE/LC_MESSAGES/tryton.mo
index dc8a66a..8e96251 100644
Binary files a/tryton/data/locale/de_DE/LC_MESSAGES/tryton.mo and b/tryton/data/locale/de_DE/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/es_AR/LC_MESSAGES/tryton.mo b/tryton/data/locale/es_AR/LC_MESSAGES/tryton.mo
index b37febb..22cf985 100644
Binary files a/tryton/data/locale/es_AR/LC_MESSAGES/tryton.mo and b/tryton/data/locale/es_AR/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/es_CO/LC_MESSAGES/tryton.mo b/tryton/data/locale/es_CO/LC_MESSAGES/tryton.mo
index 3e28d4a..d3eef20 100644
Binary files a/tryton/data/locale/es_CO/LC_MESSAGES/tryton.mo and b/tryton/data/locale/es_CO/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/es_EC/LC_MESSAGES/tryton.mo b/tryton/data/locale/es_EC/LC_MESSAGES/tryton.mo
index e77a6af..1f5ef01 100644
Binary files a/tryton/data/locale/es_EC/LC_MESSAGES/tryton.mo and b/tryton/data/locale/es_EC/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/es_ES/LC_MESSAGES/tryton.mo b/tryton/data/locale/es_ES/LC_MESSAGES/tryton.mo
index 45c44bf..be1ace1 100644
Binary files a/tryton/data/locale/es_ES/LC_MESSAGES/tryton.mo and b/tryton/data/locale/es_ES/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/es_MX/LC_MESSAGES/tryton.mo b/tryton/data/locale/es_MX/LC_MESSAGES/tryton.mo
index 433d51c..f2a6a29 100644
Binary files a/tryton/data/locale/es_MX/LC_MESSAGES/tryton.mo and b/tryton/data/locale/es_MX/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/fr_FR/LC_MESSAGES/tryton.mo b/tryton/data/locale/fr_FR/LC_MESSAGES/tryton.mo
index 755b2c2..43a2285 100644
Binary files a/tryton/data/locale/fr_FR/LC_MESSAGES/tryton.mo and b/tryton/data/locale/fr_FR/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/hu_HU/LC_MESSAGES/tryton.mo b/tryton/data/locale/hu_HU/LC_MESSAGES/tryton.mo
index 5acb45c..a1ef1be 100644
Binary files a/tryton/data/locale/hu_HU/LC_MESSAGES/tryton.mo and b/tryton/data/locale/hu_HU/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/it_IT/LC_MESSAGES/tryton.mo b/tryton/data/locale/it_IT/LC_MESSAGES/tryton.mo
index 963b4ea..d859b72 100644
Binary files a/tryton/data/locale/it_IT/LC_MESSAGES/tryton.mo and b/tryton/data/locale/it_IT/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo b/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo
index 94c3f71..7ea8472 100644
Binary files a/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo and b/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/lt_LT/LC_MESSAGES/tryton.mo b/tryton/data/locale/lt_LT/LC_MESSAGES/tryton.mo
index 0e59220..35d3b7a 100644
Binary files a/tryton/data/locale/lt_LT/LC_MESSAGES/tryton.mo and b/tryton/data/locale/lt_LT/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/nl_NL/LC_MESSAGES/tryton.mo b/tryton/data/locale/nl_NL/LC_MESSAGES/tryton.mo
index ef4c792..34e3ac6 100644
Binary files a/tryton/data/locale/nl_NL/LC_MESSAGES/tryton.mo and b/tryton/data/locale/nl_NL/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/pt_BR/LC_MESSAGES/tryton.mo b/tryton/data/locale/pt_BR/LC_MESSAGES/tryton.mo
index 9fd3aba..ef57756 100644
Binary files a/tryton/data/locale/pt_BR/LC_MESSAGES/tryton.mo and b/tryton/data/locale/pt_BR/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/ru_RU/LC_MESSAGES/tryton.mo b/tryton/data/locale/ru_RU/LC_MESSAGES/tryton.mo
index b1d43ae..28619a3 100644
Binary files a/tryton/data/locale/ru_RU/LC_MESSAGES/tryton.mo and b/tryton/data/locale/ru_RU/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/data/locale/sl_SI/LC_MESSAGES/tryton.mo b/tryton/data/locale/sl_SI/LC_MESSAGES/tryton.mo
index edb85c8..58afc94 100644
Binary files a/tryton/data/locale/sl_SI/LC_MESSAGES/tryton.mo and b/tryton/data/locale/sl_SI/LC_MESSAGES/tryton.mo differ
diff --git a/tryton/gui/window/view_form/model/group.py b/tryton/gui/window/view_form/model/group.py
index 7c64a3c..397a505 100644
--- a/tryton/gui/window/view_form/model/group.py
+++ b/tryton/gui/window/view_form/model/group.py
@@ -282,14 +282,14 @@ class Group(SignalEvent, list):
         record.signal('record-modified')
         if signal:
             self.signal('group-changed', record)
-        # Set parent field to trigger on_change
-        if self.parent and self.parent_name in self.fields:
-            field = self.fields[self.parent_name]
-            if isinstance(field, (M2OField, ReferenceField)):
-                value = self.parent.id, ''
-                if isinstance(field, ReferenceField):
-                    value = self.parent.model_name, value
-                field.set_client(record, value)
+            # Set parent field to trigger on_change
+            if self.parent and self.parent_name in self.fields:
+                field = self.fields[self.parent_name]
+                if isinstance(field, (M2OField, ReferenceField)):
+                    value = self.parent.id, ''
+                    if isinstance(field, ReferenceField):
+                        value = self.parent.model_name, value
+                    field.set_client(record, value)
         return record
 
     def set_sequence(self, field='sequence'):
diff --git a/tryton/gui/window/view_form/view/form_gtk/multiselection.py b/tryton/gui/window/view_form/view/form_gtk/multiselection.py
index ac0cdd3..7818f15 100644
--- a/tryton/gui/window/view_form/view/form_gtk/multiselection.py
+++ b/tryton/gui/window/view_form/view/form_gtk/multiselection.py
@@ -39,6 +39,11 @@ class MultiSelection(Widget, SelectionMixin):
         self.init_selection()
         self.id2path = {}
 
+    def _readonly_set(self, readonly):
+        super(MultiSelection, self)._readonly_set(readonly)
+        selection = self.tree.get_selection()
+        selection.set_select_function(lambda info: not readonly)
+
     @property
     def modified(self):
         if self.record and self.field:
@@ -65,8 +70,10 @@ class MultiSelection(Widget, SelectionMixin):
         selection = self.tree.get_selection()
         selection.handler_block_by_func(self.changed)
         try:
+            # Remove select_function to allow update,
+            # it will be set back in the super call
+            selection.set_select_function(lambda info: True)
             self.update_selection(record, field)
-            super(MultiSelection, self).display(record, field)
             self.model.clear()
             if field is None:
                 return
@@ -81,5 +88,6 @@ class MultiSelection(Widget, SelectionMixin):
                         and element not in group.record_deleted
                         and element.id in id2path):
                     selection.select_path(id2path[element.id])
+            super(MultiSelection, self).display(record, field)
         finally:
             selection.handler_unblock_by_func(self.changed)
diff --git a/tryton/gui/window/view_form/view/list_gtk/editabletree.py b/tryton/gui/window/view_form/view/list_gtk/editabletree.py
index 5f1d9df..1e3531c 100644
--- a/tryton/gui/window/view_form/view/list_gtk/editabletree.py
+++ b/tryton/gui/window/view_form/view/list_gtk/editabletree.py
@@ -100,8 +100,10 @@ class EditableTreeView(TreeView):
 
     def set_cursor(self, path, focus_column=None, start_editing=False):
         self.grab_focus()
-        if focus_column and (focus_column._type in ('boolean')):
-            start_editing = False
+        if focus_column:
+            widget = self.view.get_column_widget(focus_column)
+            if isinstance(widget.renderer, gtk.CellRendererToggle):
+                start_editing = False
         self.scroll_to_cell(path, focus_column, use_align=False)
         super(EditableTreeView, self).set_cursor(path, focus_column,
                 start_editing)
diff --git a/tryton/gui/window/view_form/view/list_gtk/widget.py b/tryton/gui/window/view_form/view/list_gtk/widget.py
index 181a121..e53c42c 100644
--- a/tryton/gui/window/view_form/view/list_gtk/widget.py
+++ b/tryton/gui/window/view_form/view/list_gtk/widget.py
@@ -234,6 +234,9 @@ class GenericText(Cell):
                 pass
             else:
                 cell.set_property('editable', not readonly)
+        else:
+            if isinstance(cell, CellRendererToggle):
+                cell.set_property('activatable', False)
 
         cell.set_property('xalign', align)
 
-- 
tryton-client



More information about the tryton-debian-vcs mailing list