Hello community, here is the log from the commit of package tryton for openSUSE:Factory checked in at 2018-12-08 11:21:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tryton (Old) and /work/SRC/openSUSE:Factory/.tryton.new.19453 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tryton" Sat Dec 8 11:21:05 2018 rev:23 rq:653619 version:4.2.19 Changes: -------- --- /work/SRC/openSUSE:Factory/tryton/tryton.changes 2018-10-02 19:48:42.545750844 +0200 +++ /work/SRC/openSUSE:Factory/.tryton.new.19453/tryton.changes 2018-12-08 11:21:11.222792493 +0100 @@ -1,0 +2,6 @@ +Tue Nov 13 15:14:15 UTC 2018 - Axel Braun <axel.br...@gmx.de> + +- Version 4.2.19 - Bugfix Release (CVE-2018-19443) + License-Macro added + +------------------------------------------------------------------- Old: ---- tryton-4.2.18.tar.gz New: ---- tryton-4.2.19.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tryton.spec ++++++ --- /var/tmp/diff_new_pack.ojBR0D/_old 2018-12-08 11:21:11.918791827 +0100 +++ /var/tmp/diff_new_pack.ojBR0D/_new 2018-12-08 11:21:11.930791816 +0100 @@ -19,7 +19,7 @@ %define majorver 4.2 Name: tryton -Version: %{majorver}.18 +Version: %{majorver}.19 Release: 0 Summary: The client of the Tryton application platform License: GPL-3.0-only @@ -96,7 +96,8 @@ %files %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop -%doc COPYRIGHT LICENSE README CHANGELOG +%doc README CHANGELOG +%license LICENSE COPYRIGHT %{_datadir}/pixmaps/* %{python_sitelib}/* ++++++ tryton-4.2.18.tar.gz -> tryton-4.2.19.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/.hgtags new/tryton-4.2.19/.hgtags --- old/tryton-4.2.18/.hgtags 2018-09-22 18:44:12.000000000 +0200 +++ new/tryton-4.2.19/.hgtags 2018-11-12 23:35:26.000000000 +0100 @@ -32,3 +32,4 @@ ae6026f16b45c3ee4ca3c759e25c5d9528efbe4e 4.2.16 21f87463d97dc75b95f7e213e1a0978809687b51 4.2.17 884b1c6d5f4490d17763cbd143c93058c7ad7784 4.2.18 +ac0b691d7b1fffa96b3e653775dc2606018972d0 4.2.19 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/CHANGELOG new/tryton-4.2.19/CHANGELOG --- old/tryton-4.2.18/CHANGELOG 2018-09-22 18:44:12.000000000 +0200 +++ new/tryton-4.2.19/CHANGELOG 2018-11-12 23:35:26.000000000 +0100 @@ -1,3 +1,6 @@ +Version 4.2.19 - 2018-11-12 +* Bug fixes (see mercurial logs for details) + Version 4.2.18 - 2018-09-22 * Bug fixes (see mercurial logs for details) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/PKG-INFO new/tryton-4.2.19/PKG-INFO --- old/tryton-4.2.18/PKG-INFO 2018-09-22 18:44:13.000000000 +0200 +++ new/tryton-4.2.19/PKG-INFO 2018-11-12 23:35:27.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: tryton -Version: 4.2.18 +Version: 4.2.19 Summary: Tryton client Home-page: http://www.tryton.org/ Author: Tryton diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/tryton/__init__.py new/tryton-4.2.19/tryton/__init__.py --- old/tryton-4.2.18/tryton/__init__.py 2018-08-20 23:04:35.000000000 +0200 +++ new/tryton-4.2.19/tryton/__init__.py 2018-09-22 18:44:25.000000000 +0200 @@ -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__ = "4.2.18" +__version__ = "4.2.19" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/tryton/common/domain_parser.py new/tryton-4.2.19/tryton/common/domain_parser.py --- old/tryton-4.2.18/tryton/common/domain_parser.py 2018-08-20 23:00:00.000000000 +0200 +++ new/tryton-4.2.19/tryton/common/domain_parser.py 2018-10-23 19:27:26.000000000 +0200 @@ -914,7 +914,24 @@ or isinstance(clause[0], (list, tuple))) and all(isinstance(c, (list, tuple)) for c in clause[1:])): return self.stringable(clause) - if clause[0] in self.fields or clause[0] == 'rec_name': + name, _, value = clause[:3] + if name.endswith('.rec_name'): + name = name[:-len('.rec_name')] + if name in self.fields: + field = self.fields[name] + if field['type'] in { + 'many2one', 'one2one', 'one2many', 'many2many'}: + if field['type'] == 'many2one': + types = (str, type(None)) + else: + types = str + if isinstance(value, (list, tuple)): + return all(isinstance(v, types) for v in value) + else: + return isinstance(value, types) + else: + return True + elif name == 'rec_name': return True return False @@ -1202,6 +1219,14 @@ 'string': 'Name', 'type': 'char', }, + 'relation': { + 'string': 'Relation', + 'type': 'many2one', + }, + 'relations': { + 'string': 'Relations', + 'type': 'many2many', + }, }) valid = ('name', '=', 'Doe') invalid = ('surname', '=', 'John') @@ -1211,6 +1236,13 @@ assert not dom.stringable(['AND', valid, invalid]) assert dom.stringable([[valid]]) assert not dom.stringable([[valid], [invalid]]) + assert dom.stringable([('relation', '=', None)]) + assert dom.stringable([('relation', '=', "Foo")]) + assert dom.stringable([('relation.rec_name', '=', "Foo")]) + assert not dom.stringable([('relation', '=', 1)]) + assert dom.stringable([('relations', '=', "Foo")]) + assert dom.stringable([('relations', 'in', ["Foo"])]) + assert not dom.stringable([('relations', 'in', [42])]) def test_string(): Binary files old/tryton-4.2.18/tryton/data/locale/bg/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/bg/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/ca/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/ca/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/cs/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/cs/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/de/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/de/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/es/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/es/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/fr/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/fr/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/hu_HU/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/hu_HU/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/it_IT/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/it_IT/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/lo/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/lo/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/lt/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/lt/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/nl/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/nl/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/pl/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/pl/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/pt_BR/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/pt_BR/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/ru/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/ru/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/sl/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/sl/LC_MESSAGES/tryton.mo differ Binary files old/tryton-4.2.18/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo and new/tryton-4.2.19/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/tryton/gui/window/view_form/model/record.py new/tryton-4.2.19/tryton/gui/window/view_form/model/record.py --- old/tryton-4.2.18/tryton/gui/window/view_form/model/record.py 2018-09-13 11:50:08.000000000 +0200 +++ new/tryton-4.2.19/tryton/gui/window/view_form/model/record.py 2018-10-02 13:04:09.000000000 +0200 @@ -512,6 +512,12 @@ def expr_eval(self, expr): if not isinstance(expr, basestring): return expr + if not expr: + return + elif expr == '[]': + return [] + elif expr == '{}': + return {} ctx = rpc.CONTEXT.copy() ctx['context'] = ctx.copy() ctx['context'].update(self.context_get()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/tryton/gui/window/view_form/screen/screen.py new/tryton-4.2.19/tryton/gui/window/view_form/screen/screen.py --- old/tryton-4.2.18/tryton/gui/window/view_form/screen/screen.py 2018-08-20 23:00:00.000000000 +0200 +++ new/tryton-4.2.19/tryton/gui/window/view_form/screen/screen.py 2018-11-03 01:25:56.000000000 +0100 @@ -727,7 +727,6 @@ and not view.attributes.get('tree_state', False)): # Mark as done to not set later when the view_type change self.tree_states_done.add(id(view)) - return parent = self.parent.id if self.parent else None if parent is not None and parent < 0: return @@ -776,8 +775,6 @@ self.tree_states_done.add(id(view)) def save_tree_state(self, store=True): - if not CONFIG['client.save_tree_state']: - return parent = self.parent.id if self.parent else None timestamp = self.parent._timestamp if self.parent else None for view in self.views: @@ -798,7 +795,9 @@ selected_paths = view.get_selected_paths() self.tree_states[parent][view.children_field] = ( timestamp, paths, selected_paths) - if store and view.attributes.get('tree_state', False): + if (store + and int(view.attributes.get('tree_state', False)) + and CONFIG['client.save_tree_state']): json_domain = self.get_tree_domain(parent) json_paths = json.dumps(paths) json_selected_path = json.dumps(selected_paths) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/tryton/gui/window/view_form/view/form_gtk/state_widget.py new/tryton-4.2.19/tryton/gui/window/view_form/view/form_gtk/state_widget.py --- old/tryton-4.2.18/tryton/gui/window/view_form/view/form_gtk/state_widget.py 2018-08-20 23:00:00.000000000 +0200 +++ new/tryton-4.2.19/tryton/gui/window/view_form/view/form_gtk/state_widget.py 2018-10-02 13:04:09.000000000 +0200 @@ -68,7 +68,11 @@ class ScrolledWindow(StateMixin, gtk.ScrolledWindow): - pass + + def state_set(self, record): + # Force to show first to ensure it is displayed in the Notebook + self.show() + super(ScrolledWindow, self).state_set(record) class Notebook(StateMixin, gtk.Notebook): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/tryton/gui/window/view_form/view/list.py new/tryton-4.2.19/tryton/gui/window/view_form/view/list.py --- old/tryton-4.2.18/tryton/gui/window/view_form/view/list.py 2018-09-13 11:53:39.000000000 +0200 +++ new/tryton-4.2.19/tryton/gui/window/view_form/view/list.py 2018-11-03 01:25:56.000000000 +0100 @@ -143,26 +143,13 @@ group.move(record, 0) def sort(self, ids): - ids2pos = {} - pos = 0 + old_idx = {record.id: i for i, record in enumerate(self.group)} + new_idx = {id_: i for i, id_ in enumerate(ids)} + self.group.sort(key=lambda r: new_idx.get(r.id)) new_order = [] - for record in self.group: - ids2pos[record.id] = pos - new_order.append(pos) - pos += 1 - pos = 0 - for obj_id in ids: - try: - old_pos = ids2pos[obj_id] - if old_pos != pos: - new_order[old_pos] = pos - pos += 1 - except KeyError: - continue - self.group.sort(lambda x, y: - cmp(new_order[ids2pos[x.id]], new_order[ids2pos[y.id]])) prev = None for record in self.group: + new_order.append(old_idx.get(record.id)) if prev: prev.next[id(self.group)] = record prev = record diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/tryton/gui/window/view_form/view/screen_container.py new/tryton-4.2.19/tryton/gui/window/view_form/view/screen_container.py --- old/tryton-4.2.18/tryton/gui/window/view_form/view/screen_container.py 2018-08-20 23:00:00.000000000 +0200 +++ new/tryton-4.2.19/tryton/gui/window/view_form/view/screen_container.py 2018-10-02 13:04:09.000000000 +0200 @@ -1,5 +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. +import datetime + import gtk import gettext import gobject @@ -60,9 +62,14 @@ def __init__(self, format_, _entry=Time): super(Times, self).__init__(_entry=_entry) + def _get_value(self, widget): + value = widget.props.value + if value: + return datetime.time.strftime(value, widget.props.format) + def connect_activate(self, callback): for widget in self.from_.get_children() + self.to.get_children(): - widget.get_child().connect('activate', callback) + widget.connect('activate', callback) class DateTimes(Dates): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-4.2.18/tryton.egg-info/PKG-INFO new/tryton-4.2.19/tryton.egg-info/PKG-INFO --- old/tryton-4.2.18/tryton.egg-info/PKG-INFO 2018-09-22 18:44:13.000000000 +0200 +++ new/tryton-4.2.19/tryton.egg-info/PKG-INFO 2018-11-12 23:35:27.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: tryton -Version: 4.2.18 +Version: 4.2.19 Summary: Tryton client Home-page: http://www.tryton.org/ Author: Tryton