[tryton-debian-vcs] tryton-client branch debian-wheezy-2.6 created. 14ef67b95f5cec46ff77638eeac4884913657824
Mathias Behrle
tryton-debian-vcs at alioth.debian.org
Wed Nov 27 16:51:03 UTC 2013
The following commit has been merged in the debian-wheezy-2.6 branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-client.git;a=commitdiff;h=14ef67b95f5cec46ff77638eeac4884913657824
commit 14ef67b95f5cec46ff77638eeac4884913657824
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Nov 4 14:11:44 2013 +0100
Releasing debian version 2.6.7-1.
diff --git a/debian/changelog b/debian/changelog
index af2fe17..f5365a0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+tryton-client (2.6.7-1) unstable; urgency=high
+
+ * Merging upstream version 2.6.7.
+ * Contains the security patch to sanitize correctly the file extension
+ of temporary files received by the server
+ (s. https://bugs.tryton.org/issue3446).
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Mon, 04 Nov 2013 13:57:00 +0100
+
tryton-client (2.6.6-1) unstable; urgency=low
* Merging upstream version 2.6.6.
commit a2b73bcf4ab6b1f0bbdaa68776c65335e3037ed9
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Nov 4 13:56:32 2013 +0100
Merging upstream version 2.6.7.
diff --git a/CHANGELOG b/CHANGELOG
index 3127310..9a540a2 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+Version 2.6.7 - 2013-11-03
+* Bug fixes (see mercurial logs for details)
+* Sanitize report file extension
+
Version 2.6.6 - 2013-10-10
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index 554d0f5..8e6332c 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.6
+Version: 2.6.7
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton.egg-info/PKG-INFO b/tryton.egg-info/PKG-INFO
index 554d0f5..8e6332c 100644
--- a/tryton.egg-info/PKG-INFO
+++ b/tryton.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.6
+Version: 2.6.7
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton/action/main.py b/tryton/action/main.py
index ec681af..e466458 100644
--- a/tryton/action/main.py
+++ b/tryton/action/main.py
@@ -42,7 +42,8 @@ class Action(object):
dtemp = tempfile.mkdtemp(prefix='tryton_')
fp_name = os.path.join(dtemp,
name.replace(os.sep, '_').replace(os.altsep or os.sep, '_') \
- + os.extsep + type)
+ + os.extsep
+ + type.replace(os.sep, '_').replace(os.altsep or os.sep, '_'))
with open(fp_name, 'wb') as file_d:
file_d.write(data)
if email_print:
diff --git a/tryton/gui/window/view_form/model/field.py b/tryton/gui/window/view_form/model/field.py
index 85af6a7..ad2d77e 100644
--- a/tryton/gui/window/view_form/model/field.py
+++ b/tryton/gui/window/view_form/model/field.py
@@ -818,7 +818,7 @@ class ReferenceField(CharField):
def get(self, record, check_load=True, readonly=True, modified=False):
if (record.value.get(self.name)
and record.value[self.name][0]
- and record.value[self.name][1] >= 0):
+ and record.value[self.name][1] >= -1):
return ','.join(map(str, record.value[self.name]))
return None
@@ -830,6 +830,11 @@ class ReferenceField(CharField):
if isinstance(ref_id, (tuple, list)):
ref_id, rec_name = ref_id
else:
+ if ref_id:
+ try:
+ ref_id = int(ref_id)
+ except ValueError:
+ pass
if '%s,%s' % (ref_model, ref_id) == self.get(record):
rec_name = record.value.get(self.name + '.rec_name', '')
else:
diff --git a/tryton/gui/window/view_form/view/form.py b/tryton/gui/window/view_form/view/form.py
index 7373db2..a4b5024 100644
--- a/tryton/gui/window/view_form/view/form.py
+++ b/tryton/gui/window/view_form/view/form.py
@@ -184,8 +184,8 @@ class ViewForm(ParserView):
self.screen.display()
return
else:
- widget.set_sensitive(False)
+ widget.handler_block_by_func(self.button_clicked)
try:
self.screen.button(widget.attrs)
finally:
- widget.set_sensitive(True)
+ widget.handler_unblock_by_func(self.button_clicked)
diff --git a/tryton/gui/window/view_form/view/form_gtk/one2many.py b/tryton/gui/window/view_form/view/form_gtk/one2many.py
index 3842639..85dcf65 100644
--- a/tryton/gui/window/view_form/view/form_gtk/one2many.py
+++ b/tryton/gui/window/view_form/view/form_gtk/one2many.py
@@ -370,8 +370,7 @@ class One2Many(WidgetInterface):
self.view.set_value()
domain = self.field.domain_get(self.record)
context = self.field.context_get(self.record)
- domain = domain[:]
- domain.extend(self.record.expr_eval(self.attrs.get('add_remove')))
+ domain = [domain, self.record.expr_eval(self.attrs.get('add_remove'))]
removed_ids = self.field.get_removed_ids(self.record)
self.focus_out = False
diff --git a/tryton/gui/window/view_form/view/form_gtk/reference.py b/tryton/gui/window/view_form/view/form_gtk/reference.py
index b546c75..3dd57be 100644
--- a/tryton/gui/window/view_form/view/form_gtk/reference.py
+++ b/tryton/gui/window/view_form/view/form_gtk/reference.py
@@ -114,7 +114,12 @@ class Reference(Many2One):
return
self.wid_text.set_text('')
self.wid_text.set_position(0)
- self.field.set_client(self.record, (self.get_model(), (-1, '')))
+ model = self.get_model()
+ if model:
+ value = (model, (-1, ''))
+ else:
+ value = ('', '')
+ self.field.set_client(self.record, value)
def set_value(self, record, field):
if not self.get_model():
diff --git a/tryton/gui/window/view_form/view/list.py b/tryton/gui/window/view_form/view/list.py
index 9a738b7..70b10d3 100644
--- a/tryton/gui/window/view_form/view/list.py
+++ b/tryton/gui/window/view_form/view/list.py
@@ -120,7 +120,8 @@ class AdaptModelGroup(gtk.GenericTreeModel):
# Don't remove record from previous group
# as the new parent will change the parent
# This prevents concurrency conflict
- record.group.record_removed.remove(record)
+ if record in record.group.record_removed:
+ record.group.record_removed.remove(record)
group.add(record)
record.modified_fields.setdefault(record.parent_name or 'id')
group.move(record, 0)
diff --git a/tryton/gui/window/win_export.py b/tryton/gui/window/win_export.py
index 1fc34e1..d67c155 100644
--- a/tryton/gui/window/win_export.py
+++ b/tryton/gui/window/win_export.py
@@ -359,7 +359,7 @@ class WinExport(NoModal):
self.on_row_expanded(self.view1, iter,
self.model1.get_path(iter))
iter = self.model1.iter_children(iter)
- prefix = parent + '/'
+ prefix += parent + '/'
break
else:
iter = self.model1.iter_next(iter)
diff --git a/tryton/version.py b/tryton/version.py
index 674220d..4af2595 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 = "2.6.6"
+VERSION = "2.6.7"
LICENSE = "GPL-3"
WEBSITE = "http://www.tryton.org/"
commit 78d7878ef48ee17025569b454d2832ab6ac47354
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Thu Oct 17 13:54:30 2013 +0200
Releasing debian version 2.6.6-1.
diff --git a/debian/changelog b/debian/changelog
index 9b51679..af2fe17 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-client (2.6.6-1) unstable; urgency=low
+
+ * Merging upstream version 2.6.6.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Thu, 17 Oct 2013 13:13:14 +0200
+
tryton-client (2.6.5-1) unstable; urgency=low
* Merging upstream version 2.6.5.
commit 921e7d389f01ed83d08b3812c2ceb3fabe13d9c4
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Thu Oct 17 13:12:21 2013 +0200
Merging upstream version 2.6.6.
diff --git a/CHANGELOG b/CHANGELOG
index 0d6e699..3127310 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.6.6 - 2013-10-10
+* Bug fixes (see mercurial logs for details)
+
Version 2.6.5 - 2013-07-22
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index 6a670f3..554d0f5 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.5
+Version: 2.6.6
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton.egg-info/PKG-INFO b/tryton.egg-info/PKG-INFO
index 6a670f3..554d0f5 100644
--- a/tryton.egg-info/PKG-INFO
+++ b/tryton.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.5
+Version: 2.6.6
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton/common/domain_parser.py b/tryton/common/domain_parser.py
index b2952d8..bfb3259 100644
--- a/tryton/common/domain_parser.py
+++ b/tryton/common/domain_parser.py
@@ -393,10 +393,10 @@ def format_value(field, value):
and not isinstance(value, (float, Decimal))):
return ''
try:
- digit = int(field.get('digits', (16, 2))[1])
- except ValueError:
- digit = 2
- return locale.format('%.' + str(digit) + 'f', value or 0.0, True)
+ digit = len(str(value).split('.')[1])
+ except IndexError:
+ digit = 0
+ return locale.format('%.*f', (digit, value or 0), True)
def format_selection():
selections = dict(field['selection'])
@@ -473,13 +473,14 @@ def test_format_integer():
def test_format_float():
field = {
'type': 'float',
- 'digits': (16, 2),
}
for value, result in (
- (1, '1.00'),
- (1.5, '1.50'),
- (0, '0.00'),
- (0.0, '0.00'),
+ (1, '1'),
+ (1.5, '1.5'),
+ (1.50, '1.5'),
+ (150.79, '150.79'),
+ (0, '0'),
+ (0.0, '0.0'),
(False, ''),
(None, ''),
):
@@ -489,13 +490,14 @@ def test_format_float():
def test_format_numeric():
field = {
'type': 'numeric',
- 'digits': (16, 2),
}
for value, result in (
- (Decimal(1), '1.00'),
- (Decimal('1.5'), '1.50'),
- (Decimal(0), '0.00'),
- (Decimal('0.0'), '0.00'),
+ (Decimal(1), '1'),
+ (Decimal('1.5'), '1.5'),
+ (Decimal('1.50'), '1.50'),
+ (Decimal('150.79'), '150.79'),
+ (Decimal(0), '0'),
+ (Decimal('0.0'), '0.0'),
(False, ''),
(None, ''),
):
diff --git a/tryton/gui/main.py b/tryton/gui/main.py
index 1613e0f..2f2ecf0 100644
--- a/tryton/gui/main.py
+++ b/tryton/gui/main.py
@@ -928,7 +928,7 @@ class Main(object):
prefs = RPCExecute('model', 'res.user', 'get_preferences',
False)
except RPCException:
- prefs = None
+ prefs = {}
common.ICONFACTORY.load_icons()
common.MODELACCESS.load_models()
if prefs and 'language_direction' in prefs:
diff --git a/tryton/gui/window/view_form/model/field.py b/tryton/gui/window/view_form/model/field.py
index cc4b2cc..85af6a7 100644
--- a/tryton/gui/window/view_form/model/field.py
+++ b/tryton/gui/window/view_form/model/field.py
@@ -58,13 +58,13 @@ class CharField(object):
def domain_get(self, record):
screen_domain, attr_domain = self.domains_get(record)
- return localize_domain(screen_domain) + attr_domain
+ return [localize_domain(screen_domain), attr_domain]
def validation_domains(self, record):
screen_domain, attr_domain = self.domains_get(record)
if attr_domain:
- return (screen_domain, screen_domain +
- unlocalize_domain(attr_domain, self.name))
+ return (screen_domain, [screen_domain,
+ unlocalize_domain(attr_domain, self.name)])
else:
return screen_domain, screen_domain
@@ -453,8 +453,8 @@ class M2OField(CharField):
def domain_get(self, record):
screen_domain, attr_domain = self.domains_get(record)
- return (localize_domain(inverse_leaf(screen_domain), self.name)
- + attr_domain)
+ return [localize_domain(inverse_leaf(screen_domain), self.name),
+ attr_domain]
def get_state_attrs(self, record):
result = super(M2OField, self).get_state_attrs(record)
@@ -760,7 +760,7 @@ class O2MField(CharField):
def domain_get(self, record):
screen_domain, attr_domain = self.domains_get(record)
- return localize_domain(inverse_leaf(screen_domain)) + attr_domain
+ return [localize_domain(inverse_leaf(screen_domain)), attr_domain]
class M2MField(O2MField):
diff --git a/tryton/gui/window/view_form/view/form.py b/tryton/gui/window/view_form/view/form.py
index af68eee..7373db2 100644
--- a/tryton/gui/window/view_form/view/form.py
+++ b/tryton/gui/window/view_form/view/form.py
@@ -178,6 +178,7 @@ class ViewForm(ParserView):
def button_clicked(self, widget):
record = self.screen.current_record
+ self.set_value()
fields = self.get_fields()
if not record.validate(fields):
self.screen.display()
diff --git a/tryton/version.py b/tryton/version.py
index e4b5d7a..674220d 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 = "2.6.5"
+VERSION = "2.6.6"
LICENSE = "GPL-3"
WEBSITE = "http://www.tryton.org/"
commit 0ed5f7dcd6a60a0e78f73e85e9f31072b2e5d5de
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed Aug 7 17:00:33 2013 +0200
Releasing debian version 2.6.5-1.
diff --git a/debian/changelog b/debian/changelog
index 703be40..9b51679 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-client (2.6.5-1) unstable; urgency=low
+
+ * Merging upstream version 2.6.5.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Wed, 07 Aug 2013 16:46:52 +0200
+
tryton-client (2.6.4-1) unstable; urgency=low
* Merging upstream version 2.6.4.
commit a84e79c6300e50e609043fb0d198d8b361acfd73
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed Aug 7 16:42:41 2013 +0200
Merging upstream version 2.6.5.
diff --git a/CHANGELOG b/CHANGELOG
index 9ad039a..0d6e699 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.6.5 - 2013-07-22
+* Bug fixes (see mercurial logs for details)
+
Version 2.6.4 - 2013-06-09
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index 18e782f..6a670f3 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.4
+Version: 2.6.5
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton.egg-info/PKG-INFO b/tryton.egg-info/PKG-INFO
index 18e782f..6a670f3 100644
--- a/tryton.egg-info/PKG-INFO
+++ b/tryton.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.4
+Version: 2.6.5
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton/gui/window/view_form/model/record.py b/tryton/gui/window/view_form/model/record.py
index da8335f..153218e 100644
--- a/tryton/gui/window/view_form/model/record.py
+++ b/tryton/gui/window/view_form/model/record.py
@@ -265,6 +265,8 @@ class Record(SignalEvent):
self._check_load()
value = {}
for name, field in self.group.fields.iteritems():
+ if name not in self._loaded and self.id >= 0:
+ continue
value[name] = field.get_on_change_value(self,
check_load=check_load)
value['id'] = self.id
diff --git a/tryton/gui/window/view_form/view/form.py b/tryton/gui/window/view_form/view/form.py
index 653751c..af68eee 100644
--- a/tryton/gui/window/view_form/view/form.py
+++ b/tryton/gui/window/view_form/view/form.py
@@ -183,4 +183,8 @@ class ViewForm(ParserView):
self.screen.display()
return
else:
- self.screen.button(widget.attrs)
+ widget.set_sensitive(False)
+ try:
+ self.screen.button(widget.attrs)
+ finally:
+ widget.set_sensitive(True)
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 a38b854..6387636 100644
--- a/tryton/gui/window/view_form/view/list_gtk/editabletree.py
+++ b/tryton/gui/window/view_form/view/list_gtk/editabletree.py
@@ -55,8 +55,6 @@ class EditableTreeView(TreeView):
def on_quit_cell(self, current_record, fieldname, value, callback=None):
field = current_record[fieldname]
- if hasattr(field, 'editabletree_entry'):
- del field.editabletree_entry
cell = self.cells[fieldname]
# The value has not changed and is valid ... do nothing.
@@ -226,6 +224,11 @@ class EditableTreeView(TreeView):
# store in the record the entry widget to get the value in
# set_value
field.editabletree_entry = entry
+
+ def remove_widget(cell):
+ if hasattr(field, 'editabletree_entry'):
+ del field.editabletree_entry
+ entry.connect('remove-widget', remove_widget)
record.modified_fields.setdefault(column.name)
return False
diff --git a/tryton/version.py b/tryton/version.py
index e1f76e1..e4b5d7a 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 = "2.6.4"
+VERSION = "2.6.5"
LICENSE = "GPL-3"
WEBSITE = "http://www.tryton.org/"
commit cddd5673ad80c8ce8043942b69f2e7e0d47560d7
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Jun 11 13:42:23 2013 +0200
Releasing debian version 2.6.4-1.
diff --git a/debian/changelog b/debian/changelog
index 02a469a..703be40 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-client (2.6.4-1) unstable; urgency=low
+
+ * Merging upstream version 2.6.4.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Mon, 10 Jun 2013 18:19:32 +0200
+
tryton-client (2.6.3-1) experimental; urgency=low
* Versioning watch file for Tryton branch 2.6.
commit 8bde304ba1126043be23dd2b9fd41dc6bffffff1
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Jun 10 18:13:36 2013 +0200
Merging upstream version 2.6.4.
diff --git a/CHANGELOG b/CHANGELOG
index be6ecd4..9ad039a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.6.4 - 2013-06-09
+* Bug fixes (see mercurial logs for details)
+
Version 2.6.3 - 2013-05-02
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index 3575547..18e782f 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.3
+Version: 2.6.4
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton.egg-info/PKG-INFO b/tryton.egg-info/PKG-INFO
index 3575547..18e782f 100644
--- a/tryton.egg-info/PKG-INFO
+++ b/tryton.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.3
+Version: 2.6.4
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton/gui/main.py b/tryton/gui/main.py
index 3bb49ed..1613e0f 100644
--- a/tryton/gui/main.py
+++ b/tryton/gui/main.py
@@ -19,6 +19,7 @@ from tryton.common import RPCExecute, RPCException
from tryton.config import CONFIG, TRYTON_ICON, get_config_dir
import tryton.common as common
from tryton.pyson import PYSONDecoder
+from tryton.jsonrpc import object_hook
from tryton.action import Action
from tryton.exceptions import TrytonServerError, TrytonError, \
TrytonServerUnavailable
@@ -1437,9 +1438,12 @@ class Main(object):
limit = json.loads(params.get('limit', 'null'))
auto_refresh = json.loads(params.get('auto_refresh', 'false'))
name = json.loads(params.get('window_name', 'false'))
- search_value = json.loads(params.get('search_value', '{}'))
- domain = json.loads(params.get('domain', '[]'))
- context = json.loads(params.get('context', '{}'))
+ search_value = json.loads(params.get('search_value', '{}'),
+ object_hook=object_hook)
+ domain = json.loads(params.get('domain', '[]'),
+ object_hook=object_hook)
+ context = json.loads(params.get('context', '{}'),
+ object_hook=object_hook)
except ValueError:
return
if path:
@@ -1460,13 +1464,15 @@ class Main(object):
if not wizard:
return
try:
- data = json.loads(params.get('data', '{}'))
+ data = json.loads(params.get('data', '{}'),
+ object_hook=object_hook)
direct_print = json.loads(params.get('direct_print', 'false'))
email_print = json.loads(params.get('email_print', 'false'))
email = json.loads(params.get('email', 'null'))
name = json.loads(params.get('name', 'false'))
window = json.loads(params.get('window', 'false'))
- context = json.loads(params.get('context', '{}'))
+ context = json.loads(params.get('context', '{}'),
+ object_hook=object_hook)
except ValueError:
return
try:
@@ -1481,11 +1487,12 @@ class Main(object):
if not report:
return
try:
- data = json.loads(params.get('data'))
+ data = json.loads(params.get('data'), object_hook=object_hook)
direct_print = json.loads(params.get('direct_print', 'false'))
email_print = json.loads(params.get('email_print', 'false'))
email = json.loads(params.get('email', 'null'))
- context = json.loads(params.get('context', '{}'))
+ context = json.loads(params.get('context', '{}'),
+ object_hook=object_hook)
except ValueError:
return
try:
diff --git a/tryton/version.py b/tryton/version.py
index 6a4f895..e1f76e1 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 = "2.6.3"
+VERSION = "2.6.4"
LICENSE = "GPL-3"
WEBSITE = "http://www.tryton.org/"
commit 546c72c2c3a54b11ae3f5b81379266a8ca7974ac
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat May 4 12:07:16 2013 +0200
Releasing debian version 2.6.3-1.
diff --git a/debian/changelog b/debian/changelog
index 642d94a..02a469a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+tryton-client (2.6.3-1) experimental; urgency=low
+
+ * Versioning watch file for Tryton branch 2.6.
+ * Correcting pixmap link of tryton-icon.png. Thanks to Ilya Melnikov.
+ * Adding README.Debian to point out version dependency.
+ * Merging upstream version 2.6.3.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Sat, 04 May 2013 02:37:57 +0200
+
tryton-client (2.6.2-3) experimental; urgency=low
* Removing Daniel from Uploaders. Thanks for your work! (Closes: #704359).
commit ded3a0c3ae6a06a60fbc98a3ee826b83f6b1bd75
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat May 4 02:18:48 2013 +0200
Merging upstream version 2.6.3.
diff --git a/CHANGELOG b/CHANGELOG
index 2d4ee47..be6ecd4 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.6.3 - 2013-05-02
+* Bug fixes (see mercurial logs for details)
+
Version 2.6.2 - 2013-02-12
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index 8286886..3575547 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.2
+Version: 2.6.3
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton.egg-info/PKG-INFO b/tryton.egg-info/PKG-INFO
index 8286886..3575547 100644
--- a/tryton.egg-info/PKG-INFO
+++ b/tryton.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: tryton
-Version: 2.6.2
+Version: 2.6.3
Summary: Tryton client
Home-page: http://www.tryton.org/
Author: B2CK
diff --git a/tryton/gui/main.py b/tryton/gui/main.py
index 4f5b688..3bb49ed 100644
--- a/tryton/gui/main.py
+++ b/tryton/gui/main.py
@@ -5,7 +5,7 @@ import os
import sys
import socket
import gettext
-from urlparse import urlparse
+from urlparse import urlparse, parse_qsl
import urllib
import gobject
import gtk
@@ -1404,14 +1404,14 @@ class Main(object):
Main.get_main().refresh_ssl()
def _open_url(self, url):
- url = urllib.unquote(url)
urlp = urlparse(url)
if not urlp.scheme == 'tryton':
return
urlp = urlparse('http' + url[6:])
- hostname, port = (urlp.netloc.split(':', 1)
- + [CONFIG.defaults['login.port']])[:2]
- database, path = (urlp.path[1:].split('/', 1) + [None])[:2]
+ hostname, port = map(urllib.unquote,
+ (urlp.netloc.split(':', 1) + [CONFIG.defaults['login.port']])[:2])
+ database, path = map(urllib.unquote,
+ (urlp.path[1:].split('/', 1) + [None])[:2])
if (not path or
hostname != rpc._HOST or
int(port) != rpc._PORT or
@@ -1421,8 +1421,8 @@ class Main(object):
params = {}
if urlp.params:
try:
- params = dict(param.split('=', 1)
- for param in urlp.params.split('&'))
+ params.update(dict(parse_qsl(urlp.params,
+ strict_parsing=True)))
except ValueError:
return
diff --git a/tryton/gui/window/view_form/model/field.py b/tryton/gui/window/view_form/model/field.py
index afcfc39..cc4b2cc 100644
--- a/tryton/gui/window/view_form/model/field.py
+++ b/tryton/gui/window/view_form/model/field.py
@@ -711,7 +711,7 @@ class O2MField(CharField):
to_remove.append(record2)
for record2 in to_remove:
record.value[self.name].remove(record2, signal=False,
- force_remove=True)
+ force_remove=False)
if value and (value.get('add') or value.get('update', [])):
record.value[self.name].add_fields(fields, signal=False)
diff --git a/tryton/gui/window/view_form/model/group.py b/tryton/gui/window/view_form/model/group.py
index 30bfc75..8b6565f 100644
--- a/tryton/gui/window/view_form/model/group.py
+++ b/tryton/gui/window/view_form/model/group.py
@@ -199,7 +199,7 @@ class Group(SignalEvent, list):
for fnct in self.on_write:
try:
res += RPCExecute('model', self.model_name, fnct, ids,
- context=self.context)
+ main_iteration=False, context=self.context)
except RPCException:
return []
return list({}.fromkeys(res))
@@ -391,7 +391,7 @@ class Group(SignalEvent, list):
ctx.update(self.context)
try:
values = RPCExecute('model', self.model_name, 'default_get',
- to_add.keys(), context=ctx)
+ to_add.keys(), main_iteration=False, context=ctx)
except RPCException:
return False
for name in to_add:
diff --git a/tryton/gui/window/view_form/model/record.py b/tryton/gui/window/view_form/model/record.py
index fccfb1c..da8335f 100644
--- a/tryton/gui/window/view_form/model/record.py
+++ b/tryton/gui/window/view_form/model/record.py
@@ -48,6 +48,11 @@ class Record(SignalEvent):
(field.attrs.get('loading', 'eager')
for field in self.group.fields.itervalues()),
'eager')
+ # Set a valid name for next loaded check
+ for fname, field in self.group.fields.iteritems():
+ if field.attrs.get('loading', 'eager') == loading:
+ name = fname
+ break
else:
loading = self.group.fields[name].attrs.get('loading', 'eager')
if self in self.group and loading == 'eager':
@@ -279,7 +284,7 @@ class Record(SignalEvent):
values = self.get()
try:
RPCExecute('model', self.model_name, 'pre_validate', values,
- context=self.context_get())
+ main_iteration=False, context=self.context_get())
except RPCException:
return False
return True
@@ -290,6 +295,7 @@ class Record(SignalEvent):
value = self.get(get_readonly=True)
try:
res = RPCExecute('model', self.model_name, 'create', value,
+ main_iteration=False,
context=self.context_get())
except RPCException:
return False
@@ -306,7 +312,8 @@ class Record(SignalEvent):
context['_timestamp'] = self.get_timestamp()
try:
RPCExecute('model', self.model_name, 'write',
- [self.id], value, context=context)
+ [self.id], value, main_iteration=False,
+ context=context)
except RPCException:
return False
self._loaded.clear()
@@ -340,7 +347,7 @@ class Record(SignalEvent):
reload_ids = list(reload_ids)
try:
RPCExecute('model', record.model_name, 'delete', list(record_ids),
- context=ctx)
+ main_iteration=False, context=ctx)
except RPCException:
return False
if reload_ids:
@@ -351,7 +358,8 @@ class Record(SignalEvent):
if len(self.group.fields):
try:
vals = RPCExecute('model', self.model_name, 'default_get',
- self.group.fields.keys(), context=context)
+ self.group.fields.keys(), main_iteration=False,
+ context=context)
except RPCException:
return
if (self.parent
@@ -372,7 +380,8 @@ class Record(SignalEvent):
def rec_name(self):
try:
return RPCExecute('model', self.model_name, 'read', [self.id],
- ['rec_name'], context=self.context_get())[0]['rec_name']
+ ['rec_name'], main_iteration=False,
+ context=self.context_get())[0]['rec_name']
except RPCException:
return ''
@@ -503,8 +512,9 @@ class Record(SignalEvent):
attr = PYSONDecoder().decode(attr)
args = self._get_on_change_args(attr)
try:
- res = RPCExecute('model', self.model_name,
- 'on_change_' + fieldname, args, context=self.context_get())
+ res = RPCExecute('model', self.model_name, 'on_change_' +
+ fieldname, args, main_iteration=False,
+ context=self.context_get())
except RPCException:
return
later = {}
@@ -557,7 +567,8 @@ class Record(SignalEvent):
if fieldnames:
try:
result = RPCExecute('model', self.model_name, 'on_change_with',
- values, list(fieldnames), context=self.context_get())
+ values, list(fieldnames), main_iteration=False,
+ context=self.context_get())
except RPCException:
return
for fieldname, value in result.items():
@@ -569,7 +580,7 @@ class Record(SignalEvent):
try:
result = RPCExecute('model', self.model_name,
'on_change_with_' + fieldname, values,
- context=self.context_get())
+ main_iteration=False, context=self.context_get())
except RPCException:
return
self.group.fields[fieldname].set_on_change(self, result)
@@ -587,7 +598,8 @@ class Record(SignalEvent):
args = self._get_on_change_args(autocomplete)
try:
res = RPCExecute('model', self.model_name, 'autocomplete_' +
- fieldname, args, context=self.context_get())
+ fieldname, args, main_iteration=False,
+ context=self.context_get())
except RPCException:
# ensure res is a list
res = []
@@ -602,7 +614,7 @@ class Record(SignalEvent):
'search_count', [
('resource', '=',
'%s,%s' % (self.model_name, self.id)),
- ])
+ ], main_iteration=False)
except RPCException:
return 0
return self.attachment_count
diff --git a/tryton/gui/window/view_form/view/form_gtk/one2many.py b/tryton/gui/window/view_form/view/form_gtk/one2many.py
index afd845e..3842639 100644
--- a/tryton/gui/window/view_form/view/form_gtk/one2many.py
+++ b/tryton/gui/window/view_form/view/form_gtk/one2many.py
@@ -388,14 +388,21 @@ class One2Many(WidgetInterface):
self.focus_out = True
return False
+ sequence = None
+ if self.screen.current_view.view_type == 'tree':
+ sequence = self.screen.current_view.widget_tree.sequence
+
def callback(result):
self.focus_out = True
if result:
ids = [x[0] for x in result]
self.screen.load(ids, modified=True)
self.screen.display(res_id=ids[0])
+ if sequence:
+ self.screen.group.set_sequence(field=sequence)
self.screen.set_cursor()
self.wid_text.set_text('')
+
if len(ids) != 1:
WinSearch(self.attrs['relation'], callback, sel_multi=True,
ids=ids, context=context, domain=domain,
diff --git a/tryton/gui/window/view_form/view/graph_gtk/bar.py b/tryton/gui/window/view_form/view/graph_gtk/bar.py
index 493b65c..6833a21 100644
--- a/tryton/gui/window/view_form/view/graph_gtk/bar.py
+++ b/tryton/gui/window/view_form/view/graph_gtk/bar.py
@@ -12,6 +12,10 @@ import tryton.rpc as rpc
class Bar(Graph):
+ def __init__(self, *args, **kwargs):
+ super(Bar, self).__init__(*args, **kwargs)
+ self.bars = []
+
def drawGraph(self, cr, width, height):
def drawBar(bar):
diff --git a/tryton/version.py b/tryton/version.py
index 72d0205..6a4f895 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 = "2.6.2"
+VERSION = "2.6.3"
LICENSE = "GPL-3"
WEBSITE = "http://www.tryton.org/"
commit 238210c1a49061af4acbddd86fafaa7a54f414d7
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat Apr 27 12:27:01 2013 +0200
Adding README.Debian to point out version dependency.
diff --git a/debian/tryton-client.README.Debian b/debian/tryton-client.README.Debian
new file mode 100644
index 0000000..d7cdb36
--- /dev/null
+++ b/debian/tryton-client.README.Debian
@@ -0,0 +1,7 @@
+tryton-client for Debian
+------------------------
+
+Note: The Tryton client can only connect to Tryton servers with the same
+major version (e.g. the first two numbers of the version string).
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Sat, 27 Apr 2013 12:00:00 +0200
commit 970bf9fdcf0860052a6bd138678654922db0b25f
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed Apr 24 01:23:26 2013 +0200
Correcting pixmap link of tryton-icon.png. Thanks to Ilya Melnikov.
diff --git a/debian/tryton-client.links b/debian/tryton-client.links
index f3edeba..24caee0 100644
--- a/debian/tryton-client.links
+++ b/debian/tryton-client.links
@@ -1,3 +1,3 @@
/usr/bin/tryton /usr/bin/tryton-client
-/usr/share/pixmaps/tryton/tryton-icon.png /usr/share/pixmaps/tryton-icon.png
+/usr/share/icons/tryton/tryton-icon.png /usr/share/pixmaps/tryton-icon.png
/usr/share/man/man1/tryton.1.gz /usr/share/man/man1/tryton-client.1.gz
commit 80c4ae5b407b2fcee0f0850cfeba92e4376ffb1a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed Apr 24 00:59:34 2013 +0200
Versioning watch file for Tryton branch 2.6.
diff --git a/debian/watch b/debian/watch
index c96998a..aba87be 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,2 +1,2 @@
version=3
-http://downloads.tryton.org/current/ .*tryton-(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz))
+http://downloads.tryton.org/2.6/ .*tryton-(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz))
--
tryton-client
More information about the tryton-debian-vcs
mailing list