Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package tryton for openSUSE:Factory checked in at 2026-06-12 19:27:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tryton (Old) and /work/SRC/openSUSE:Factory/.tryton.new.1981 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tryton" Fri Jun 12 19:27:55 2026 rev:35 rq:1358803 version:7.0.39 Changes: -------- --- /work/SRC/openSUSE:Factory/tryton/tryton.changes 2026-03-08 17:27:07.847412054 +0100 +++ /work/SRC/openSUSE:Factory/.tryton.new.1981/tryton.changes 2026-06-12 19:29:00.893932603 +0200 @@ -1,0 +2,5 @@ +Fri Jun 12 00:27:39 UTC 2026 - Axel Braun <[email protected]> + +- Version 7.0.39 - Bugfix Release + +------------------------------------------------------------------- Old: ---- tryton-7.0.34.tar.gz New: ---- tryton-7.0.39.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tryton.spec ++++++ --- /var/tmp/diff_new_pack.EDIa4m/_old 2026-06-12 19:29:03.138026500 +0200 +++ /var/tmp/diff_new_pack.EDIa4m/_new 2026-06-12 19:29:03.154027170 +0200 @@ -30,7 +30,7 @@ Name: tryton -Version: %{majorver}.34 +Version: %{majorver}.39 Release: 0 Summary: The client of the Tryton application platform License: GPL-3.0-or-later ++++++ tryton-7.0.34.tar.gz -> tryton-7.0.39.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/CHANGELOG new/tryton-7.0.39/CHANGELOG --- old/tryton-7.0.34/CHANGELOG 2026-03-02 21:56:27.000000000 +0100 +++ new/tryton-7.0.39/CHANGELOG 2026-06-02 18:51:48.000000000 +0200 @@ -1,4 +1,29 @@ +Version 7.0.39 - 2026-06-02 +--------------------------- +* Bug fixes (see mercurial logs for details) + + +Version 7.0.38 - 2026-05-20 +--------------------------- +* Bug fixes (see mercurial logs for details) + + +Version 7.0.37 - 2026-05-02 +--------------------------- +* Bug fixes (see mercurial logs for details) + + +Version 7.0.36 - 2026-04-16 +--------------------------- +* Bug fixes (see mercurial logs for details) + + +Version 7.0.35 - 2026-03-18 +--------------------------- +* Bug fixes (see mercurial logs for details) + + Version 7.0.34 - 2026-03-02 --------------------------- * Bug fixes (see mercurial logs for details) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/COPYRIGHT new/tryton-7.0.39/COPYRIGHT --- old/tryton-7.0.34/COPYRIGHT 2026-03-02 21:56:26.000000000 +0100 +++ new/tryton-7.0.39/COPYRIGHT 2026-06-02 18:51:47.000000000 +0200 @@ -5,7 +5,7 @@ Copyright (C) 2008-2011 Udo Spallek. Copyright (C) 2008-2011 virtual things - Preisler & Spallek GbR. Copyright (C) 2008-2026 B2CK SPRL. -Copyright (C) 2010-2025 Nicolas Évrard. +Copyright (C) 2010-2026 Nicolas Évrard. Copyright (C) 2011-2012 Rodrigo Hübner. Copyright (C) 2012-2013 Antoine Smolders. Copyright (C) 2020-2021 Maxime Richez diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/PKG-INFO new/tryton-7.0.39/PKG-INFO --- old/tryton-7.0.34/PKG-INFO 2026-03-02 21:56:30.085743400 +0100 +++ new/tryton-7.0.39/PKG-INFO 2026-06-02 18:51:51.388456300 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: tryton -Version: 7.0.34 +Version: 7.0.39 Summary: Tryton desktop client Home-page: http://www.tryton.org/ Download-URL: http://downloads.tryton.org/7.0/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton/__init__.py new/tryton-7.0.39/tryton/__init__.py --- old/tryton-7.0.34/tryton/__init__.py 2026-02-18 18:42:17.000000000 +0100 +++ new/tryton-7.0.39/tryton/__init__.py 2026-05-20 23:24:46.000000000 +0200 @@ -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. -__version__ = "7.0.34" +__version__ = "7.0.39" import locale import gi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton/common/common.py new/tryton-7.0.39/tryton/common/common.py --- old/tryton-7.0.34/tryton/common/common.py 2025-12-14 17:54:15.000000000 +0100 +++ new/tryton-7.0.39/tryton/common/common.py 2026-05-16 14:45:45.000000000 +0200 @@ -512,7 +512,10 @@ name, ext = filename else: name, ext = os.path.splitext(filename) - return ''.join([slugify(name), os.extsep, slugify(ext)]) + parts = [slugify(name)] + if ext: + parts.extend([os.extsep, slugify(ext)]) + return ''.join(parts) def file_write(filename, data): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton/common/domain_parser.py new/tryton-7.0.39/tryton/common/domain_parser.py --- old/tryton-7.0.34/tryton/common/domain_parser.py 2025-12-14 21:30:28.000000000 +0100 +++ new/tryton-7.0.39/tryton/common/domain_parser.py 2026-05-31 18:23:20.000000000 +0200 @@ -231,21 +231,21 @@ def convert_float(): factor = float(field.get('factor', 1)) try: - return locale.atof(value) / factor + return locale.atof(value.replace(' ', '')) / factor except (ValueError, AttributeError): return def convert_integer(): factor = float(field.get('factor', 1)) try: - return int(locale.atof(value) / factor) + return int(locale.atof(value.replace(' ', '')) / factor) except (ValueError, AttributeError): return def convert_numeric(): factor = Decimal(field.get('factor', 1)) try: - return Decimal(locale.delocalize(value)) / factor + return Decimal(locale.delocalize(value.replace(' ', ''))) / factor except (decimal.InvalidOperation, AttributeError): return @@ -349,8 +349,8 @@ cast = float factor = cast(field.get('factor', 1)) digit -= round(math.log10(factor)) - return locale.localize( - '{0:.{1}f}'.format(value * factor or 0, digit), True) + digit = max(digit, 0) + return locale.localize('{0:.{1}f}'.format(value * factor, digit), True) def format_selection(): if isinstance(field['selection'], (tuple, list)): @@ -880,6 +880,26 @@ (field_name, '<=', rvalue), ]) continue + if (isinstance(value, str) + and field['type'] in {'datetime', 'timestamp'} + and operator == '='): + ctx = self.context if self.context else {} + format_ = date_format(ctx.get('date_format')) + try: + dt = datetime.datetime.strptime( + value, format_).date() + except (ValueError, TypeError): + dt = None + if dt: + date = untimezoned_date( + datetime.datetime.combine( + dt, datetime.time())) + next_date = date + datetime.timedelta(days=1) + yield iter([ + (field_name, '>=', date), + (field_name, '<', next_date), + ]) + continue if isinstance(value, list): value = [convert_value(field, v, self.context) for v in value] Binary files old/tryton-7.0.34/tryton/data/locale/bg/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/bg/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/ca/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/ca/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/cs/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/cs/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/de/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/de/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/es/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/es/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/es_419/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/et/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/et/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/fa/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/fa/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/fi/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/fi/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/fr/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/fr/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/hu/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/hu/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/id/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/id/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/it/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/it/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/lo/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/lo/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/lt/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/lt/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/nl/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/nl/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/pl/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/pl/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/pt/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/pt/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/ro/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/ro/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/ru/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/ru/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/sl/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/sl/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/tr/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/tr/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/uk/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/uk/LC_MESSAGES/tryton.mo differ Binary files old/tryton-7.0.34/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo and new/tryton-7.0.39/tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton/gui/window/form.py new/tryton-7.0.39/tryton/gui/window/form.py --- old/tryton-7.0.34/tryton/gui/window/form.py 2026-02-27 18:02:46.000000000 +0100 +++ new/tryton-7.0.39/tryton/gui/window/form.py 2026-04-14 20:36:57.000000000 +0200 @@ -508,6 +508,8 @@ self.screen.current_record = record set_cursor = True break + else: + self.refresh_resources(True) self.screen.display(set_cursor=set_cursor) self.info_bar_clear() self.set_buttons_sensitive() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton/gui/window/view_form/model/group.py new/tryton-7.0.39/tryton/gui/window/view_form/model/group.py --- old/tryton-7.0.34/tryton/gui/window/view_form/model/group.py 2026-01-31 14:21:36.000000000 +0100 +++ new/tryton-7.0.39/tryton/gui/window/view_form/model/group.py 2026-04-14 18:59:32.000000000 +0200 @@ -342,7 +342,7 @@ cmp = operator.gt else: cmp = operator.lt - max_id = max(0, *(r.id for r in self)) + max_id = max(0, 0, *(r.id for r in self)) for record in self: # Assume not loaded records are correctly ordered # as far as we do not change any previous records. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton/gui/window/view_form/screen/screen.py new/tryton-7.0.39/tryton/gui/window/view_form/screen/screen.py --- old/tryton-7.0.34/tryton/gui/window/view_form/screen/screen.py 2025-09-22 21:34:39.000000000 +0200 +++ new/tryton-7.0.39/tryton/gui/window/view_form/screen/screen.py 2026-04-14 20:36:56.000000000 +0200 @@ -1318,7 +1318,7 @@ and self.current_view.view_type in [ 'tree', 'graph', 'calendar'] and not self.parent): - self.search_filter() + self.search_filter(self.screen_container.get_text()) elif action == 'reload menu': from tryton.gui import Main RPCContextReload(Main().sig_win_menu) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton/gui/window/view_form/view/form_gtk/one2many.py new/tryton-7.0.39/tryton/gui/window/view_form/view/form_gtk/one2many.py --- old/tryton-7.0.34/tryton/gui/window/view_form/view/form_gtk/one2many.py 2026-02-14 00:33:02.000000000 +0100 +++ new/tryton-7.0.39/tryton/gui/window/view_form/view/form_gtk/one2many.py 2026-04-30 18:51:59.000000000 +0200 @@ -558,8 +558,6 @@ def set_value(self): self.screen.current_view.set_value() - if self.screen.modified(): # TODO check if required - self.view.screen.record_modified(display=False) return True def _completion_match_selected(self, completion, model, iter_): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton/gui/window/view_form/view/screen_container.py new/tryton-7.0.39/tryton/gui/window/view_form/view/screen_container.py --- old/tryton-7.0.34/tryton/gui/window/view_form/view/screen_container.py 2025-09-22 21:34:39.000000000 +0200 +++ new/tryton-7.0.39/tryton/gui/window/view_form/view/screen_container.py 2026-05-20 18:54:25.000000000 +0200 @@ -2,6 +2,7 @@ # this repository contains the full copyright notices and license terms. import datetime import gettext +import operator from gi.repository import Gdk, GLib, GObject, Gtk @@ -614,8 +615,10 @@ for selection in selections: entry.append_text(selection) elif field['type'] in ['selection', 'multiselection']: - selections = tuple(x[1] for x in field['selection']) - entry = Selection(selections) + selections = [x[1] for x in field['selection']] + if field.get('sort', True): + selections.sort(key=operator.itemgetter(1)) + entry = Selection(tuple(selections)) entry.set_vexpand(True) elif field['type'] in ('date', 'datetime', 'time'): date_format = common.date_format( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton/tests/test_common_domain_parser.py new/tryton-7.0.39/tryton/tests/test_common_domain_parser.py --- old/tryton-7.0.34/tryton/tests/test_common_domain_parser.py 2025-12-14 18:09:17.000000000 +0100 +++ new/tryton-7.0.39/tryton/tests/test_common_domain_parser.py 2026-05-31 17:44:40.000000000 +0200 @@ -930,6 +930,12 @@ 'name': 'integer', 'type': 'integer', }, + 'timestamp': { + 'name': 'timestamp', + 'string': 'Timestamp', + 'type': 'timestamp', + 'format': '"%H:%M:%S"', + }, 'selection': { 'string': 'Selection', 'name': 'selection', @@ -1119,6 +1125,33 @@ self.assertEqual( rlist(dom.parse_clause(iter([['AND']]))), [('rec_name', 'ilike', "%AND%")]) + for search_text, domain in [ + ([('Timestamp', None, None)], [('timestamp', '=', None)]), + ( + [('Timestamp', '=', dt.date(2002, 12, 4).strftime('%x'))], + [[ + ('timestamp', '>=', + untimezoned_date(dt.datetime(2002, 12, 4))), + ('timestamp', '<', + untimezoned_date(dt.datetime(2002, 12, 5)))]]), + ( + [('Timestamp', '=', + dt.datetime(2002, 12, 4, 12, 30).strftime('%x %X')) + ], + [('timestamp', '=', untimezoned_date( + dt.datetime(2002, 12, 4, 12, 30)))]), + ( + [('Timestamp', None, [ + f"{dt.date(2002, 12, 4).strftime('%x')}", + f"{dt.date(2002, 12, 5).strftime('%x')}", + ])], + [('timestamp', 'in', [ + untimezoned_date(dt.datetime(2002, 12, 4)), + untimezoned_date(dt.datetime(2002, 12, 5)), + ])]), + ]: + with self.subTest(f'parse_clause({search_text})'): + self.assertEqual(rlist(dom.parse_clause(search_text)), domain) def test_completion_char(self): "Test completion char" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tryton-7.0.34/tryton.egg-info/PKG-INFO new/tryton-7.0.39/tryton.egg-info/PKG-INFO --- old/tryton-7.0.34/tryton.egg-info/PKG-INFO 2026-03-02 21:56:29.000000000 +0100 +++ new/tryton-7.0.39/tryton.egg-info/PKG-INFO 2026-06-02 18:51:50.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: tryton -Version: 7.0.34 +Version: 7.0.39 Summary: Tryton desktop client Home-page: http://www.tryton.org/ Download-URL: http://downloads.tryton.org/7.0/
