Hello community, here is the log from the commit of package trytond for openSUSE:Factory checked in at 2020-06-12 21:40:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/trytond (Old) and /work/SRC/openSUSE:Factory/.trytond.new.3606 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "trytond" Fri Jun 12 21:40:13 2020 rev:44 rq:813783 version:5.0.23 Changes: -------- --- /work/SRC/openSUSE:Factory/trytond/trytond.changes 2020-03-11 18:50:30.439545061 +0100 +++ /work/SRC/openSUSE:Factory/.trytond.new.3606/trytond.changes 2020-06-12 21:41:36.868053314 +0200 @@ -1,0 +2,5 @@ +Tue Jun 9 19:55:24 UTC 2020 - Axel Braun <[email protected]> + +- Version 5.0.23 - Bugfix Release + +------------------------------------------------------------------- Old: ---- trytond-5.0.19.tar.gz New: ---- _service trytond-5.0.23.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ trytond.spec ++++++ --- /var/tmp/diff_new_pack.IpE6xi/_old 2020-06-12 21:41:38.604058275 +0200 +++ /var/tmp/diff_new_pack.IpE6xi/_new 2020-06-12 21:41:38.604058275 +0200 @@ -20,7 +20,7 @@ %define majorver 5.0 %define base_name tryton Name: trytond -Version: %{majorver}.19 +Version: %{majorver}.23 Release: 0 Summary: An Enterprise Resource Planning (ERP) system License: GPL-3.0-or-later ++++++ _service ++++++ <services> <service name="download_files" mode="localonly" /> </services> ++++++ trytond-5.0.19.tar.gz -> trytond-5.0.23.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/.hgtags new/trytond-5.0.23/.hgtags --- old/trytond-5.0.19/.hgtags 2020-03-09 18:30:07.000000000 +0100 +++ new/trytond-5.0.23/.hgtags 2020-05-18 22:47:53.000000000 +0200 @@ -38,3 +38,7 @@ 45b6add00a6f037d2a2987050959f0148c3ab5cb 5.0.17 d5ceda2dfd6a678e19bd88ef072a4b7a118834b5 5.0.18 643da5238d7f275e8ecf667b5c05897222acaa24 5.0.19 +1b12b20533d43231680427be375fd9bf5dc8b432 5.0.20 +95ef70d1e73fb3aaceb57c28fbefe5be0fa578b5 5.0.21 +d676f08167788f1da30fa57b4eecdca7b491fb49 5.0.22 +b48137b41f5094dd1c8e00fed36e495b6be79d23 5.0.23 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/CHANGELOG new/trytond-5.0.23/CHANGELOG --- old/trytond-5.0.19/CHANGELOG 2020-03-09 18:30:07.000000000 +0100 +++ new/trytond-5.0.23/CHANGELOG 2020-05-18 22:47:52.000000000 +0200 @@ -1,3 +1,15 @@ +Version 5.0.23 - 2020-05-18 +* Bug fixes (see mercurial logs for details) + +Version 5.0.22 - 2020-05-15 +* Bug fixes (see mercurial logs for details) + +Version 5.0.21 - 2020-05-01 +* Bug fixes (see mercurial logs for details) + +Version 5.0.20 - 2020-04-04 +* Bug fixes (see mercurial logs for details) + Version 5.0.19 - 2020-03-09 * Bug fixes (see mercurial logs for details) * Enable check_access context when checking wizard access (issue9108) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/COPYRIGHT new/trytond-5.0.23/COPYRIGHT --- old/trytond-5.0.19/COPYRIGHT 2020-03-09 18:30:06.000000000 +0100 +++ new/trytond-5.0.23/COPYRIGHT 2020-05-18 22:47:52.000000000 +0200 @@ -3,7 +3,7 @@ Copyright (C) 2007-2013 Bertrand Chenal. Copyright (C) 2008-2020 B2CK SPRL. Copyright (C) 2011 Openlabs Technologies & Consulting (P) Ltd. -Copyright (C) 2011-2019 Nicolas Évrard. +Copyright (C) 2011-2020 Nicolas Évrard. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/PKG-INFO new/trytond-5.0.23/PKG-INFO --- old/trytond-5.0.19/PKG-INFO 2020-03-09 18:30:09.000000000 +0100 +++ new/trytond-5.0.23/PKG-INFO 2020-05-18 22:47:54.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: trytond -Version: 5.0.19 +Version: 5.0.23 Summary: Tryton server Home-page: http://www.tryton.org/ Author: Tryton diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/trytond/__init__.py new/trytond-5.0.23/trytond/__init__.py --- old/trytond-5.0.19/trytond/__init__.py 2020-02-02 16:57:12.000000000 +0100 +++ new/trytond-5.0.23/trytond/__init__.py 2020-05-15 21:42:44.000000000 +0200 @@ -5,7 +5,7 @@ import warnings from email import charset -__version__ = "5.0.19" +__version__ = "5.0.23" os.environ['TZ'] = 'UTC' if hasattr(time, 'tzset'): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/trytond/ir/action.py new/trytond-5.0.23/trytond/ir/action.py --- old/trytond-5.0.19/trytond/ir/action.py 2019-11-15 22:34:30.000000000 +0100 +++ new/trytond-5.0.23/trytond/ir/action.py 2020-04-25 12:52:59.000000000 +0200 @@ -625,6 +625,7 @@ for report in reports: if report.report: default['report_content'] = None + default['report'] = None default['report_name'] = report.report_name new_reports.extend(super(ActionReport, cls).copy([report], default=default)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/trytond/ir/note.py new/trytond-5.0.23/trytond/ir/note.py --- old/trytond-5.0.19/trytond/ir/note.py 2018-11-12 17:28:05.000000000 +0100 +++ new/trytond-5.0.23/trytond/ir/note.py 2020-04-25 12:52:59.000000000 +0200 @@ -100,11 +100,13 @@ @classmethod def write(cls, notes, values, *args): # Avoid changing write meta data if only unread is set - if args or values.keys() != ['unread']: + if args or set(values.keys()) != {'unread'}: super(Note, cls).write(notes, values, *args) else: # Check access write and clean cache - ModelStorage.write(notes, values) + # Use __func__ to directly access ModelStorage's write method and + # pass it the right class + ModelStorage.write.__func__(cls, notes, values) cls.set_unread(notes, 'unread', values['unread']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/trytond/ir/queue.py new/trytond-5.0.23/trytond/ir/queue.py --- old/trytond-5.0.19/trytond/ir/queue.py 2019-08-11 19:34:43.000000000 +0200 +++ new/trytond-5.0.23/trytond/ir/queue.py 2020-03-26 23:39:20.000000000 +0100 @@ -103,7 +103,7 @@ candidates.expected_at.nulls_first], limit=1)) next_timeout = With('seconds', query=candidates.select( - Min(Extract('second', + Min(Extract('EPOCH', candidates.scheduled_at - CurrentTimestamp()) ), where=candidates.scheduled_at >= CurrentTimestamp())) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/trytond/model/modelstorage.py new/trytond-5.0.23/trytond/model/modelstorage.py --- old/trytond-5.0.19/trytond/model/modelstorage.py 2020-02-16 16:54:09.000000000 +0100 +++ new/trytond-5.0.23/trytond/model/modelstorage.py 2020-04-17 14:50:06.000000000 +0200 @@ -1335,11 +1335,13 @@ ifields = islice(ifields, 0, threshold) ffields.update(ifields) + require_context_field = False # add datetime_field for field in list(ffields.values()): if hasattr(field, 'datetime_field') and field.datetime_field: datetime_field = self._fields[field.datetime_field] ffields[field.datetime_field] = datetime_field + require_context_field = True # add depends of field with context for field in list(ffields.values()): @@ -1349,12 +1351,14 @@ if context_field_name not in field.depends: continue context_field = self._fields.get(context_field_name) + require_context_field = True if context_field not in ffields: ffields[context_field_name] = context_field def filter_(id_): - return (name not in self._cache.get(id_, {}) - and name not in self._local_cache.get(id_, {})) + return (id_ == self.id # Ensure the value is read + or (name not in self._cache.get(id_, {}) + and name not in self._local_cache.get(id_, {}))) def unique(ids): s = set() @@ -1422,7 +1426,8 @@ self._transaction.set_user(self._user), \ self._transaction.reset_context(), \ self._transaction.set_context(self._context): - if self.id in self._cache and name in self._cache[self.id]: + if (self.id in self._cache and name in self._cache[self.id] + and not require_context_field): # Use values from cache ids = islice(chain(islice(self._ids, index, None), islice(self._ids, 0, max(index - 1, 0))), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/trytond/report/report.py new/trytond-5.0.23/trytond/report/report.py --- old/trytond-5.0.19/trytond/report/report.py 2019-12-10 00:27:01.000000000 +0100 +++ new/trytond-5.0.23/trytond/report/report.py 2020-04-17 14:50:06.000000000 +0200 @@ -2,6 +2,7 @@ # this repository contains the full copyright notices and license terms. import datetime import os +import inspect import logging import subprocess import tempfile @@ -363,7 +364,7 @@ pool = Pool() ActionReport = pool.get('ir.action.report') report_id = None - if isinstance(report, Report): + if inspect.isclass(report) and issubclass(report, Report): Report_ = report else: if isinstance(report, ActionReport): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/trytond/wizard/wizard.py new/trytond-5.0.23/trytond/wizard/wizard.py --- old/trytond-5.0.19/trytond/wizard/wizard.py 2020-03-09 18:30:03.000000000 +0100 +++ new/trytond-5.0.23/trytond/wizard/wizard.py 2020-04-29 16:41:34.000000000 +0200 @@ -13,6 +13,7 @@ from trytond.error import WarningErrorMixin from trytond.url import URLMixin from trytond.protocols.jsonrpc import JSONDecoder, JSONEncoder +from trytond.model import ModelSQL from trytond.model.fields import states_validate from trytond.pyson import PYSONEncoder from trytond.rpc import RPC @@ -229,7 +230,7 @@ with Transaction().set_context(_check_access=True): model = context.get('active_model') - if model: + if model and model != 'ir.ui.menu': ModelAccess.check(model, 'read') groups = set(User.get_groups()) wizard_groups = ActionWizard.get_groups(cls.__name__, @@ -238,8 +239,11 @@ if not groups & wizard_groups: raise UserError('Calling wizard %s is not allowed!' % cls.__name__) - elif model: - ModelAccess.check(model, 'write') + elif model and model != 'ir.ui.menu': + Model = pool.get(model) + if (not callable(getattr(Model, 'table_query', None)) + or Model.write.__func__ != ModelSQL.write.__func__): + ModelAccess.check(model, 'write') @classmethod def create(cls): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/trytond/worker.py new/trytond-5.0.23/trytond/worker.py --- old/trytond-5.0.19/trytond/worker.py 2019-08-11 19:34:43.000000000 +0200 +++ new/trytond-5.0.23/trytond/worker.py 2020-05-16 22:06:29.000000000 +0200 @@ -1,6 +1,8 @@ # 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 as dt import logging +import random import select import signal import time @@ -111,5 +113,16 @@ continue raise logger.info('task "%d" done', task_id) + except DatabaseOperationalError: + try: + with Transaction().start(pool.database_name, 0) as transaction: + task = Queue(task_id) + scheduled_at = dt.datetime.now() + scheduled_at += dt.timedelta( + seconds=random.randint(0, 2 ** retry)) + Queue.push(task.name, task.data, scheduled_at=scheduled_at) + except Exception: + logger.critical( + 'rescheduling task "%d" failed', task_id, exc_info=True) except Exception: logger.critical('task "%d" failed', task_id, exc_info=True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/trytond-5.0.19/trytond.egg-info/PKG-INFO new/trytond-5.0.23/trytond.egg-info/PKG-INFO --- old/trytond-5.0.19/trytond.egg-info/PKG-INFO 2020-03-09 18:30:08.000000000 +0100 +++ new/trytond-5.0.23/trytond.egg-info/PKG-INFO 2020-05-18 22:47:53.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: trytond -Version: 5.0.19 +Version: 5.0.23 Summary: Tryton server Home-page: http://www.tryton.org/ Author: Tryton
