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


Reply via email to