--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
Dear release managers,
please approve the upload of tryton-server_2.2.4-1.
The new version contains the upstream bug fix release [1].
The fixes are for
* NULL value for boolean fields should be considered like False
* Don't fail on unknown database for WebDAV
* Fix reading from cache in field one2many
* Fix comparison of BrowseRecord when other is not a BrowseRecord
* Skip empty arch when searching other strings of same model
* Fix MySQLdb to use time for TIME instead of timedelta
* Add missing empty selection for action in menu
* Add missing quote on order field
* Fix nested order_calc tables_args manipulation
Mathias
[1] http://news.tryton.org/2012/09/maintenance-releases-for-supported.html
debdiff attached
unblock: tryton-server/2.2.4-1
diff -Nru tryton-server-2.2.3/CHANGELOG tryton-server-2.2.4/CHANGELOG
--- tryton-server-2.2.3/CHANGELOG 2012-05-07 11:11:01.000000000 +0200
+++ tryton-server-2.2.4/CHANGELOG 2012-09-10 18:06:36.000000000 +0200
@@ -1,3 +1,6 @@
+Version 2.2.4 - 2012-09-10
+* Bug fixes (see mercurial logs for details)
+
Version 2.2.3 - 2012-05-07
* Bug fixes (see mercurial logs for details)
diff -Nru tryton-server-2.2.3/debian/changelog tryton-server-2.2.4/debian/changelog
--- tryton-server-2.2.3/debian/changelog 2012-06-30 17:37:43.000000000 +0200
+++ tryton-server-2.2.4/debian/changelog 2012-09-12 16:52:22.000000000 +0200
@@ -1,3 +1,10 @@
+tryton-server (2.2.4-1) unstable; urgency=low
+
+ * Merging upstream version 2.2.4.
+ * Refreshing patch 02-support-pywebdav-0.9.8.
+
+ -- Mathias Behrle <mathi...@m9s.biz> Wed, 12 Sep 2012 16:52:02 +0200
+
tryton-server (2.2.3-2) unstable; urgency=low
* Updating maintainers field.
diff -Nru tryton-server-2.2.3/debian/patches/02-support-pywebdav-0.9.8 tryton-server-2.2.4/debian/patches/02-support-pywebdav-0.9.8
--- tryton-server-2.2.3/debian/patches/02-support-pywebdav-0.9.8 2012-06-30 16:46:37.000000000 +0200
+++ tryton-server-2.2.4/debian/patches/02-support-pywebdav-0.9.8 2012-09-12 16:44:38.000000000 +0200
@@ -1,7 +1,7 @@
Author: Mathias Behrle <mathi...@m9s.biz>
Description: Support new structure of pywebdav > 0.9.4.1.
---- tryton-server.orig/trytond/protocols/webdav.py 2012-05-09 11:42:39.277620212 +0200
-+++ tryton-server/trytond/protocols/webdav.py 2012-05-09 11:42:59.112947846 +0200
+--- tryton-server.orig/trytond/protocols/webdav.py 2012-09-11 19:41:40.000000000 +0200
++++ tryton-server/trytond/protocols/webdav.py 2012-09-12 16:44:26.630387413 +0200
@@ -12,11 +12,15 @@
import logging
from threading import local
@@ -127,7 +127,7 @@
global CACHE
CACHE = LocalDict()
if not Transaction().cursor:
-@@ -527,22 +538,57 @@
+@@ -527,25 +538,57 @@
if dbname:
Cache.resets(dbname)
@@ -154,12 +154,16 @@
+
def get_userinfo(self, user, password, command=''):
- dbname = urllib.unquote_plus(self.path.split('/', 2)[1])
-+ path = urlparse.urlparse(self.path).path
-+ dbname = urllib.unquote_plus(path.split('/', 2)[1])
- if not dbname:
-- database = Database().connect()
+- database = Database().connect()
+- cursor = database.cursor()
+- databases = database.list(cursor)
+- cursor.close()
+- if not dbname or dbname not in databases:
- return 1
- user = int(login(dbname, user, password, cache=False))
++ path = urlparse.urlparse(self.path).path
++ dbname = urllib.unquote_plus(path.split('/', 2)[1])
++ if not dbname:
+ Database().connect()
+ return True
+ if user:
@@ -196,8 +200,8 @@
class SecureWebDAVAuthRequestHandler(WebDAVAuthRequestHandler):
---- tryton-server.orig/trytond/webdav/webdav.py 2012-05-09 11:42:39.277620212 +0200
-+++ tryton-server/trytond/webdav/webdav.py 2012-05-09 11:42:59.112947846 +0200
+--- tryton-server.orig/trytond/webdav/webdav.py 2011-10-24 15:57:46.000000000 +0200
++++ tryton-server/trytond/webdav/webdav.py 2012-09-12 16:07:24.620219292 +0200
@@ -2,11 +2,33 @@
#this repository contains the full copyright notices and license terms.
import os
@@ -497,9 +501,9 @@
+ raise Exception('Bad arguments')
+
Attachment()
---- tryton-server.orig/CHANGELOG 2012-05-09 11:42:39.277620212 +0200
-+++ tryton-server/CHANGELOG 2012-05-09 11:42:59.112947846 +0200
-@@ -4,6 +4,7 @@
+--- tryton-server.orig/CHANGELOG 2012-09-11 19:41:40.000000000 +0200
++++ tryton-server/CHANGELOG 2012-09-12 16:07:24.620219292 +0200
+@@ -7,6 +7,7 @@
Version 2.2.2 - 2012-03-28
* Bug fixes (see mercurial logs for details)
* Don't allow rpc call on ModelStorage without ModelView (CVE-2012-0215)
@@ -507,8 +511,8 @@
Version 2.2.1 - 2011-12-26
* Bug fixes (see mercurial logs for details)
---- tryton-server.orig/doc/topics/install.rst 2012-05-09 11:42:39.277620212 +0200
-+++ tryton-server/doc/topics/install.rst 2012-05-09 11:42:59.112947846 +0200
+--- tryton-server.orig/doc/topics/install.rst 2011-10-24 15:57:45.000000000 +0200
++++ tryton-server/doc/topics/install.rst 2012-09-12 16:07:24.620219292 +0200
@@ -15,7 +15,7 @@
* polib (https://bitbucket.org/izi/polib/wiki/Home)
* Optional: psycopg 2 or later (http://www.initd.org/)
@@ -518,8 +522,8 @@
* Optional: pydot (http://code.google.com/p/pydot/)
* Optional: pytz (http://pytz.sourceforge.net/)
* Optional: unoconv http://dag.wieers.com/home-made/unoconv/)
---- tryton-server.orig/etc/trytond.conf 2012-05-09 11:42:56.205046418 +0200
-+++ tryton-server/etc/trytond.conf 2012-05-09 11:42:59.112947846 +0200
+--- tryton-server.orig/etc/trytond.conf 2012-09-12 16:04:53.000000000 +0200
++++ tryton-server/etc/trytond.conf 2012-09-12 16:07:24.620219292 +0200
@@ -2,13 +2,13 @@
#this repository contains the full copyright notices and license terms.
[options]
@@ -547,8 +551,8 @@
# Configure the database type
# allowed values are postgresql, sqlite, mysql
#db_type = postgresql
---- tryton-server.orig/setup.py 2012-05-09 11:42:39.277620212 +0200
-+++ tryton-server/setup.py 2012-05-09 11:42:59.112947846 +0200
+--- tryton-server.orig/setup.py 2011-10-24 15:57:45.000000000 +0200
++++ tryton-server/setup.py 2012-09-12 16:07:24.620219292 +0200
@@ -65,7 +65,7 @@
extras_require={
'PostgreSQL': ['psycopg2 >= 2.0'],
@@ -558,8 +562,8 @@
'unoconv': ['unoconv'],
'SSL': ['pyOpenSSL'],
'graphviz': ['pydot'],
---- tryton-server.orig/trytond/config.py 2012-05-09 11:42:39.277620212 +0200
-+++ tryton-server/trytond/config.py 2012-05-09 11:42:59.112947846 +0200
+--- tryton-server.orig/trytond/config.py 2012-03-17 11:25:18.000000000 +0100
++++ tryton-server/trytond/config.py 2012-09-12 16:07:24.620219292 +0200
@@ -24,14 +24,15 @@
class ConfigManager(object):
def __init__(self, fname=None):
@@ -577,8 +581,8 @@
'db_type': 'postgresql',
'db_host': False,
'db_port': False,
---- tryton-server.orig/trytond/tests/test_mixins.py 2012-05-09 11:42:39.277620212 +0200
-+++ tryton-server/trytond/tests/test_mixins.py 2012-05-09 11:42:59.116947710 +0200
+--- tryton-server.orig/trytond/tests/test_mixins.py 2011-12-06 11:28:56.000000000 +0100
++++ tryton-server/trytond/tests/test_mixins.py 2012-09-12 16:07:24.624219161 +0200
@@ -30,7 +30,7 @@
urllib.quote(DB_NAME)))
@@ -604,8 +608,8 @@
self.assertEqual(self.urlwizard.get_url(),
'tryton://%s/%s/wizard/test.test_wizard' % (server_name,
urllib.quote(DB_NAME)))
---- tryton-server.orig/trytond/url.py 2012-05-09 11:42:39.277620212 +0200
-+++ tryton-server/trytond/url.py 2012-05-09 11:42:59.116947710 +0200
+--- tryton-server.orig/trytond/url.py 2011-10-24 15:57:46.000000000 +0200
++++ tryton-server/trytond/url.py 2012-09-12 16:07:24.624219161 +0200
@@ -16,7 +16,8 @@
from trytond.wizard import Wizard
from trytond.report import Report
@@ -616,8 +620,8 @@
hostname = '.'.join(encodings.idna.ToASCII(part) for part in
hostname.split('.'))
---- tryton-server.orig/trytond/webdav/webdav.xml 2012-05-09 11:42:39.277620212 +0200
-+++ tryton-server/trytond/webdav/webdav.xml 2012-05-09 11:42:59.116947710 +0200
+--- tryton-server.orig/trytond/webdav/webdav.xml 2011-10-24 15:57:46.000000000 +0200
++++ tryton-server/trytond/webdav/webdav.xml 2012-09-12 16:07:24.624219161 +0200
@@ -105,5 +105,122 @@
<field name="menu" ref="menu_collection_list"/>
<field name="group" ref="res.group_admin"/>
diff -Nru tryton-server-2.2.3/PKG-INFO tryton-server-2.2.4/PKG-INFO
--- tryton-server-2.2.3/PKG-INFO 2012-05-07 11:11:04.000000000 +0200
+++ tryton-server-2.2.4/PKG-INFO 2012-09-10 18:06:44.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.0
Name: trytond
-Version: 2.2.3
+Version: 2.2.4
Summary: Tryton server
Home-page: http://www.tryton.org/
Author: B2CK
diff -Nru tryton-server-2.2.3/trytond/backend/mysql/database.py tryton-server-2.2.4/trytond/backend/mysql/database.py
--- tryton-server-2.2.3/trytond/backend/mysql/database.py 2012-05-05 12:29:28.000000000 +0200
+++ tryton-server-2.2.4/trytond/backend/mysql/database.py 2012-06-12 14:33:13.000000000 +0200
@@ -40,6 +40,7 @@
def cursor(self, autocommit=False, readonly=False):
conv = MySQLdb.converters.conversions.copy()
conv[float] = lambda value, _: repr(value)
+ conv[MySQLdb.constants.FIELD_TYPE.TIME] = MySQLdb.times.Time_or_None
args = {
'db': self.database_name,
'sql_mode': 'traditional,postgresql',
diff -Nru tryton-server-2.2.3/trytond/ir/ui/menu.py tryton-server-2.2.4/trytond/ir/ui/menu.py
--- tryton-server-2.2.3/trytond/ir/ui/menu.py 2011-11-22 13:27:29.000000000 +0100
+++ tryton-server-2.2.4/trytond/ir/ui/menu.py 2012-05-22 14:44:37.000000000 +0200
@@ -76,12 +76,13 @@
order_field='name'), 'get_rec_name', searcher='search_rec_name')
icon = fields.Selection('list_icons', 'Icon', translate=False)
action = fields.Function(fields.Reference('Action',
- selection=[
- ('ir.action.report', 'ir.action.report'),
- ('ir.action.act_window', 'ir.action.act_window'),
- ('ir.action.wizard', 'ir.action.wizard'),
- ('ir.action.url', 'ir.action.url'),
- ]), 'get_action', setter='set_action')
+ selection=[
+ ('', ''),
+ ('ir.action.report', 'ir.action.report'),
+ ('ir.action.act_window', 'ir.action.act_window'),
+ ('ir.action.wizard', 'ir.action.wizard'),
+ ('ir.action.url', 'ir.action.url'),
+ ]), 'get_action', setter='set_action')
active = fields.Boolean('Active')
def __init__(self):
diff -Nru tryton-server-2.2.3/trytond/ir/ui/view.py tryton-server-2.2.4/trytond/ir/ui/view.py
--- tryton-server-2.2.3/trytond/ir/ui/view.py 2011-11-22 13:27:29.000000000 +0100
+++ tryton-server-2.2.4/trytond/ir/ui/view.py 2012-06-28 15:39:34.000000000 +0200
@@ -138,7 +138,10 @@
('module', '=', view.module),
])
for view2 in self.browse(view_ids):
- tree2 = etree.fromstring(view2.arch)
+ xml2 = view2.arch.strip()
+ if not xml2:
+ continue
+ tree2 = etree.fromstring(xml2)
root2_element = tree2.getroottree().getroot()
strings += self._translate_view(root2_element)
if not strings:
diff -Nru tryton-server-2.2.3/trytond/model/browse.py tryton-server-2.2.4/trytond/model/browse.py
--- tryton-server-2.2.3/trytond/model/browse.py 2011-12-25 14:51:10.000000000 +0100
+++ tryton-server-2.2.4/trytond/model/browse.py 2012-07-10 16:03:10.000000000 +0200
@@ -242,9 +242,13 @@
return "BrowseRecord(%s, %d)" % (self._model_name, self.id)
def __eq__(self, other):
+ if not isinstance(other, BrowseRecord):
+ return False
return (self._model_name, self.id) == (other._model_name, other.id)
def __ne__(self, other):
+ if not isinstance(other, BrowseRecord):
+ return True
return (self._model_name, self.id) != (other._model_name, other.id)
# we need to define __unicode__ even though we've already defined __str__
diff -Nru tryton-server-2.2.3/trytond/model/fields/one2many.py tryton-server-2.2.4/trytond/model/fields/one2many.py
--- tryton-server-2.2.3/trytond/model/fields/one2many.py 2011-11-22 13:27:29.000000000 +0100
+++ tryton-server-2.2.4/trytond/model/fields/one2many.py 2012-07-30 11:16:46.000000000 +0200
@@ -88,7 +88,7 @@
for i in chain(*ids2):
if i in cache[self.model_name] \
and self.field in cache[self.model_name][i]:
- res[cache[self.model_name][i][self.field].id].append(i)
+ res[cache[self.model_name][i][self.field]].append(i)
else:
ids3.append(i)
diff -Nru tryton-server-2.2.3/trytond/model/modelsql.py tryton-server-2.2.4/trytond/model/modelsql.py
--- tryton-server-2.2.3/trytond/model/modelsql.py 2012-05-05 12:29:28.000000000 +0200
+++ tryton-server-2.2.4/trytond/model/modelsql.py 2012-08-30 11:39:21.000000000 +0200
@@ -1800,15 +1800,21 @@
else:
if (arg[2] is False) and (arg[1] == '='):
if table._columns[arg[0]]._type == 'boolean':
- qu1.append('("%s"."%s" = %%s)' % \
- (table._table, arg[0]))
+ qu1.append('(("%s"."%s" = %%s) OR ("%s"."%s" IS NULL))'
+ % (table._table, arg[0], table._table, arg[0]))
qu2.append(False)
else:
qu1.append('("%s"."%s" IS NULL)' % \
(table._table, arg[0]))
elif (arg[2] is False) and (arg[1] == '!='):
- qu1.append('("%s"."%s" IS NOT NULL)' % \
- (table._table, arg[0]))
+ if table._columns[arg[0]]._type == 'boolean':
+ qu1.append('(("%s"."%s" != %%s) '
+ 'AND ("%s"."%s" IS NOT NULL))'
+ % (table._table, arg[0], table._table, arg[0]))
+ qu2.append(False)
+ else:
+ qu1.append('("%s"."%s" IS NOT NULL)' % \
+ (table._table, arg[0]))
else:
if arg[0] == 'id':
qu1.append('("%s"."%s" %s %%s)' % \
@@ -1890,8 +1896,7 @@
table_name + '.' + link_field)
for i in range(len(tables)):
if table_name in tables[i]:
- args = tables_args[tables[i]]
- del tables_args[tables[i]]
+ args = tables_args.pop(tables[i], [])
tables[i] = tables[i].replace(table_name,
table_name + '.' + link_field)
tables_args[tables[i]] = args
@@ -1926,8 +1931,7 @@
table_name + '.' + link_field)
for i in range(len(tables)):
if table_name in tables[i]:
- args = tables_args[tables[i]]
- del tables_args[tables[i]]
+ args = tables_args.pop(tables[i], [])
tables[i] = tables[i].replace(table_name,
table_name + '.' + link_field)
tables_args[tables[i]] = args
@@ -1946,8 +1950,7 @@
table_name2 + '.' + link_field2)
for i in range(1, len(tables)):
if table_name2 in tables[i]:
- args = tables_args[tables[i]]
- del tables_args[tables[i]]
+ args = tables_args.pop(tables[i], [])
tables[i] = tables[i].replace(table_name2,
table_name2 + '.' + link_field2)
tables_args[tables[i]] = args
@@ -2035,8 +2038,8 @@
'order': otype,
})
else:
- order_by.append('"' + table_name + '".' + field_name + \
- ' ' + otype)
+ order_by.append('"%s"."%s" %s'
+ % (table_name, field_name, otype))
return order_by, tables, tables_args
if field in self._inherit_fields.keys():
diff -Nru tryton-server-2.2.3/trytond/protocols/webdav.py tryton-server-2.2.4/trytond/protocols/webdav.py
--- tryton-server-2.2.3/trytond/protocols/webdav.py 2012-03-26 12:33:54.000000000 +0200
+++ tryton-server-2.2.4/trytond/protocols/webdav.py 2012-08-07 12:31:14.000000000 +0200
@@ -529,8 +529,11 @@
def get_userinfo(self, user, password, command=''):
dbname = urllib.unquote_plus(self.path.split('/', 2)[1])
- if not dbname:
- database = Database().connect()
+ database = Database().connect()
+ cursor = database.cursor()
+ databases = database.list(cursor)
+ cursor.close()
+ if not dbname or dbname not in databases:
return 1
user = int(login(dbname, user, password, cache=False))
diff -Nru tryton-server-2.2.3/trytond/tests/test_fields.py tryton-server-2.2.4/trytond/tests/test_fields.py
--- tryton-server-2.2.3/trytond/tests/test_fields.py 2012-03-26 12:33:54.000000000 +0200
+++ tryton-server-2.2.4/trytond/tests/test_fields.py 2012-08-30 11:37:46.000000000 +0200
@@ -135,6 +135,23 @@
boolean3_id = self.boolean.create({})
self.assert_(boolean3_id)
+ # Test search with NULL value
+ boolean4_id = self.boolean.create({
+ 'boolean': None,
+ })
+ self.assert_(boolean4_id)
+
+ boolean_ids = self.boolean.search([
+ ('boolean', '=', False),
+ ])
+ self.assertEqual(boolean_ids,
+ [boolean2_id, boolean3_id, boolean4_id])
+
+ boolean_ids = self.boolean.search([
+ ('boolean', '!=', False),
+ ])
+ self.assertEqual(boolean_ids, [boolean1_id])
+
boolean3 = self.boolean.read(boolean3_id, ['boolean'])
self.assert_(boolean3['boolean'] == False)
diff -Nru tryton-server-2.2.3/trytond/version.py tryton-server-2.2.4/trytond/version.py
--- tryton-server-2.2.3/trytond/version.py 2012-04-24 14:18:22.000000000 +0200
+++ tryton-server-2.2.4/trytond/version.py 2012-05-07 14:54:04.000000000 +0200
@@ -1,7 +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.
PACKAGE = "trytond"
-VERSION = "2.2.3"
+VERSION = "2.2.4"
LICENSE = "GPL-3"
WEBSITE = "http://www.tryton.org/"
diff -Nru tryton-server-2.2.3/trytond.egg-info/PKG-INFO tryton-server-2.2.4/trytond.egg-info/PKG-INFO
--- tryton-server-2.2.3/trytond.egg-info/PKG-INFO 2012-05-07 11:11:02.000000000 +0200
+++ tryton-server-2.2.4/trytond.egg-info/PKG-INFO 2012-09-10 18:06:42.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.0
Name: trytond
-Version: 2.2.3
+Version: 2.2.4
Summary: Tryton server
Home-page: http://www.tryton.org/
Author: B2CK
signature.asc
Description: PGP signature
--- End Message ---