[tryton-debian-vcs] tryton-client branch upstream-3.4 updated. upstream/3.4.9-1-gdd8e32b

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Tue Jul 12 13:02:14 UTC 2016


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

commit dd8e32b30a2e4d6d85150f33b6e895825f4b9525
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Jul 11 19:34:52 2016 +0200

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

diff --git a/CHANGELOG b/CHANGELOG
index 69973d1..5fce6be 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 3.4.10 - 2016-07-04
+* Bug fixes (see mercurial logs for details)
+
 Version 3.4.9 - 2016-03-14
 * Bug fixes (see mercurial logs for details)
 
diff --git a/COPYRIGHT b/COPYRIGHT
index 43d70ed..825f062 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,5 +1,5 @@
 Copyright (C) 2012-2013 Antoine Smolders.
-Copyright (C) 2010-2015 Nicolas Évrard.
+Copyright (C) 2010-2016 Nicolas Évrard.
 Copyright (C) 2007-2016 Cédric Krier.
 Copyright (C) 2007-2013 Bertrand Chenal.
 Copyright (C) 2008-2016 B2CK SPRL.
diff --git a/PKG-INFO b/PKG-INFO
index 536f8bc..74eded4 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: tryton
-Version: 3.4.9
+Version: 3.4.10
 Summary: Tryton client
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/share/locale/bg_BG/LC_MESSAGES/tryton.mo b/share/locale/bg_BG/LC_MESSAGES/tryton.mo
index 2b7ade2..b5930b8 100644
Binary files a/share/locale/bg_BG/LC_MESSAGES/tryton.mo and b/share/locale/bg_BG/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/ca_ES/LC_MESSAGES/tryton.mo b/share/locale/ca_ES/LC_MESSAGES/tryton.mo
index 2e044eb..5e63fae 100644
Binary files a/share/locale/ca_ES/LC_MESSAGES/tryton.mo and b/share/locale/ca_ES/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/cs_CZ/LC_MESSAGES/tryton.mo b/share/locale/cs_CZ/LC_MESSAGES/tryton.mo
index 3a4ad81..ad5f405 100644
Binary files a/share/locale/cs_CZ/LC_MESSAGES/tryton.mo and b/share/locale/cs_CZ/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/de_DE/LC_MESSAGES/tryton.mo b/share/locale/de_DE/LC_MESSAGES/tryton.mo
index 57f5460..f27ae07 100644
Binary files a/share/locale/de_DE/LC_MESSAGES/tryton.mo and b/share/locale/de_DE/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/es_AR/LC_MESSAGES/tryton.mo b/share/locale/es_AR/LC_MESSAGES/tryton.mo
index f297ec2..ac65242 100644
Binary files a/share/locale/es_AR/LC_MESSAGES/tryton.mo and b/share/locale/es_AR/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/es_CO/LC_MESSAGES/tryton.mo b/share/locale/es_CO/LC_MESSAGES/tryton.mo
index ed0df30..4df2d0e 100644
Binary files a/share/locale/es_CO/LC_MESSAGES/tryton.mo and b/share/locale/es_CO/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/es_EC/LC_MESSAGES/tryton.mo b/share/locale/es_EC/LC_MESSAGES/tryton.mo
index d8b0f3c..5760873 100644
Binary files a/share/locale/es_EC/LC_MESSAGES/tryton.mo and b/share/locale/es_EC/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/es_ES/LC_MESSAGES/tryton.mo b/share/locale/es_ES/LC_MESSAGES/tryton.mo
index 09fb6c3..c437ce7 100644
Binary files a/share/locale/es_ES/LC_MESSAGES/tryton.mo and b/share/locale/es_ES/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/fr_FR/LC_MESSAGES/tryton.mo b/share/locale/fr_FR/LC_MESSAGES/tryton.mo
index 1f5ca02..56eff8c 100644
Binary files a/share/locale/fr_FR/LC_MESSAGES/tryton.mo and b/share/locale/fr_FR/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/ja_JP/LC_MESSAGES/tryton.mo b/share/locale/ja_JP/LC_MESSAGES/tryton.mo
index 719b660..c8288b4 100644
Binary files a/share/locale/ja_JP/LC_MESSAGES/tryton.mo and b/share/locale/ja_JP/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/lt_LT/LC_MESSAGES/tryton.mo b/share/locale/lt_LT/LC_MESSAGES/tryton.mo
index 0c3e6cd..16a559f 100644
Binary files a/share/locale/lt_LT/LC_MESSAGES/tryton.mo and b/share/locale/lt_LT/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/nl_NL/LC_MESSAGES/tryton.mo b/share/locale/nl_NL/LC_MESSAGES/tryton.mo
index a8d6b3b..9f05828 100644
Binary files a/share/locale/nl_NL/LC_MESSAGES/tryton.mo and b/share/locale/nl_NL/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/ru_RU/LC_MESSAGES/tryton.mo b/share/locale/ru_RU/LC_MESSAGES/tryton.mo
index be768b8..ae55446 100644
Binary files a/share/locale/ru_RU/LC_MESSAGES/tryton.mo and b/share/locale/ru_RU/LC_MESSAGES/tryton.mo differ
diff --git a/share/locale/sl_SI/LC_MESSAGES/tryton.mo b/share/locale/sl_SI/LC_MESSAGES/tryton.mo
index 8016491..a2c5f7b 100644
Binary files a/share/locale/sl_SI/LC_MESSAGES/tryton.mo and b/share/locale/sl_SI/LC_MESSAGES/tryton.mo differ
diff --git a/tryton.egg-info/PKG-INFO b/tryton.egg-info/PKG-INFO
index 536f8bc..74eded4 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.4.9
+Version: 3.4.10
 Summary: Tryton client
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/tryton.egg-info/requires.txt b/tryton.egg-info/requires.txt
index f3de687..41a9a8b 100644
--- a/tryton.egg-info/requires.txt
+++ b/tryton.egg-info/requires.txt
@@ -1,10 +1,10 @@
 python-dateutil
 
-[cdecimal]
-cdecimal
-
 [calendar]
 GooCalendar
 
+[cdecimal]
+cdecimal
+
 [simplejson]
-simplejson
\ No newline at end of file
+simplejson
diff --git a/tryton/common/common.py b/tryton/common/common.py
index 32f2414..fdb9ccd 100644
--- a/tryton/common/common.py
+++ b/tryton/common/common.py
@@ -1534,11 +1534,12 @@ def humanize(size):
 
 def get_hostname(netloc):
     if '[' in netloc and ']' in netloc:
-        return netloc.split(']')[0][1:]
+        hostname = netloc.split(']')[0][1:]
     elif ':' in netloc:
-        return netloc.split(':')[0]
+        hostname = netloc.split(':')[0]
     else:
-        return netloc
+        hostname = netloc
+    return hostname.strip()
 
 
 def get_port(netloc):
diff --git a/tryton/common/domain_parser.py b/tryton/common/domain_parser.py
index 7049a32..f45e6df 100644
--- a/tryton/common/domain_parser.py
+++ b/tryton/common/domain_parser.py
@@ -976,6 +976,8 @@ class DomainParser(object):
                 operator = None
             name = value
             value = ''
+        if not name:
+            name = ''
         if (name.lower() not in self.strings
                 and name not in self.fields):
             for field in self.strings.itervalues():
@@ -1405,3 +1407,18 @@ def test_parse_clause():
     assert rlist(dom.parse_clause([('Many2One', None, ['John', 'Jane'])])) == [
         ('many2one.rec_name', 'in', ['John', 'Jane']),
         ]
+
+
+def test_completion():
+    dom = DomainParser({
+            'name': {
+                'string': 'Name',
+                'name': 'name',
+                'type': 'char',
+                },
+            })
+    assert list(dom.completion(u'Nam')) == ['Name: ']
+    assert list(dom.completion(u'Name:')) == ['Name: ']
+    assert list(dom.completion(u'Name: foo')) == []
+    assert list(dom.completion(u'Name: !=')) == []
+    assert list(dom.completion(u'Name: !=foo')) == []
diff --git a/tryton/gui/window/attachment.py b/tryton/gui/window/attachment.py
index ea32637..e612e6b 100644
--- a/tryton/gui/window/attachment.py
+++ b/tryton/gui/window/attachment.py
@@ -4,6 +4,7 @@
 import os
 import urllib
 import urlparse
+import sys
 
 from tryton.gui.window.view_form.screen import Screen
 from tryton.gui.window.win_form import WinForm
@@ -46,5 +47,6 @@ class Attachment(WinForm):
         new_record = self.screen.new()
         file_name = os.path.basename(urlparse.urlparse(uri).path)
         name_field.set_client(new_record, file_name)
+        uri = uri.decode('utf-8').encode(sys.getfilesystemencoding())
         data_field.set_client(new_record, urllib.urlopen(uri).read())
         self.screen.display()
diff --git a/tryton/gui/window/form.py b/tryton/gui/window/form.py
index 0b1fce0..03c12c8 100644
--- a/tryton/gui/window/form.py
+++ b/tryton/gui/window/form.py
@@ -347,7 +347,8 @@ class Form(SignalEvent, TabContent):
         if widget:
             # Called from button so we must save the tree state
             self.screen.save_tree_state()
-        if not common.MODELACCESS[self.model]['write']:
+        if not (common.MODELACCESS[self.model]['write']
+                or common.MODELACCESS[self.model]['create']):
             return
         if self.screen.save_current():
             self.message_info(_('Record saved!'), 'green')
diff --git a/tryton/gui/window/view_board/action.py b/tryton/gui/window/view_board/action.py
index f9ffddc..d4d4e8a 100644
--- a/tryton/gui/window/view_board/action.py
+++ b/tryton/gui/window/view_board/action.py
@@ -94,7 +94,8 @@ class Action(SignalEvent):
             return
 
         if (self.screen.current_view.view_type == 'tree' and
-                self.screen.current_view.attributes.get('keyword_open')):
+                int(self.screen.current_view.attributes.get(
+                        'keyword_open', 0))):
             GenericAction.exec_keyword('tree_open', {
                 'model': self.screen.model_name,
                 'id': self.screen.id_get(),
diff --git a/tryton/gui/window/view_form/model/field.py b/tryton/gui/window/view_form/model/field.py
index a69bd29..6e89ca7 100644
--- a/tryton/gui/window/view_form/model/field.py
+++ b/tryton/gui/window/view_form/model/field.py
@@ -379,6 +379,9 @@ class M2OField(Field):
 
     _default = None
 
+    def _is_empty(self, record):
+        return self.get(record) is None
+
     def get_client(self, record):
         rec_name = record.value.get(self.name + '.rec_name')
         if rec_name is None:
diff --git a/tryton/gui/window/view_form/model/group.py b/tryton/gui/window/view_form/model/group.py
index fd08cf6..53a54d2 100644
--- a/tryton/gui/window/view_form/model/group.py
+++ b/tryton/gui/window/view_form/model/group.py
@@ -44,7 +44,8 @@ class Group(SignalEvent, list):
     def readonly(self):
         # Must skip res.user for Preference windows
         if (self._context.get('_datetime')
-                or (not MODELACCESS[self.model_name]['write']
+                or (not (MODELACCESS[self.model_name]['write']
+                        or MODELACCESS[self.model_name]['create'])
                     and not self.skip_model_access)):
             return True
         return self.__readonly
diff --git a/tryton/gui/window/view_form/screen/screen.py b/tryton/gui/window/view_form/screen/screen.py
index be8368a..b66f338 100644
--- a/tryton/gui/window/view_form/screen/screen.py
+++ b/tryton/gui/window/view_form/screen/screen.py
@@ -57,7 +57,8 @@ class Screen(SignalEvent):
         super(Screen, self).__init__()
 
         self.readonly = readonly
-        if not MODELACCESS[model_name]['write']:
+        if not (MODELACCESS[model_name]['write']
+                or MODELACCESS[model_name]['create']):
             self.readonly = True
         self.search_count = 0
         if not row_activate:
@@ -330,7 +331,7 @@ class Screen(SignalEvent):
 
     def default_row_activate(self):
         if (self.current_view.view_type == 'tree' and
-                self.current_view.attributes.get('keyword_open')):
+                int(self.current_view.attributes.get('keyword_open', 0))):
             return Action.exec_keyword('tree_open', {
                 'model': self.model_name,
                 'id': self.id_get(),
diff --git a/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py b/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py
index a30e262..8838011 100644
--- a/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py
+++ b/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py
@@ -79,8 +79,8 @@ class Calendar_(goocalendar.Calendar):
             if not record[dtstart].get(record):
                 continue
 
-            start = record[dtstart].get(record)
-            end = record[dtend].get(record)
+            start = record[dtstart].get_client(record)
+            end = record[dtend].get_client(record)
             midnight = datetime.time(0)
             all_day = False
             if not isinstance(start, datetime.datetime):
diff --git a/tryton/gui/window/view_form/view/form_gtk/widget.py b/tryton/gui/window/view_form/view/form_gtk/widget.py
index b1b9bdf..8b32757 100644
--- a/tryton/gui/window/view_form/view/form_gtk/widget.py
+++ b/tryton/gui/window/view_form/view/form_gtk/widget.py
@@ -300,6 +300,7 @@ class TranslateMixin:
         return button
 
     def translate(self, *args):
+        self.view.set_value()
         if self.record.id < 0 or self.record.modified:
             common.message(
                 _('You need to save the record before adding translations!'))
diff --git a/tryton/version.py b/tryton/version.py
index ce1dd81..5e17051 100644
--- a/tryton/version.py
+++ b/tryton/version.py
@@ -1,6 +1,6 @@
 #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 = "3.4.9"
+VERSION = "3.4.10"
 LICENSE = "GPL-3"
 WEBSITE = "http://www.tryton.org/"
-- 
tryton-client



More information about the tryton-debian-vcs mailing list