From 1e1a99c832ca36a389119fb880784505fbf24698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 28 Apr 2011 10:53:20 +0200 Subject: [PATCH 01/24] Increase version number --- proteus/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index 060f0f003c..6334c7cb4b 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -3,7 +3,7 @@ ''' A library to access Tryton's models like a client. ''' -__version__ = "2.0.0" +__version__ = "2.0.1" __all__ = ['Model', 'Wizard'] from types import NoneType import threading From 195e7e55f1daa6ac9a2c5cf4756313d8ba3b5a75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 10 May 2011 15:11:51 +0200 Subject: [PATCH 02/24] Values for new One2Many lines must include also unmodified fields (transplanted from 0aac6f88c38e2535c2091624381a387942b105f6) --- proteus/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index 6334c7cb4b..206251a09e 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -229,8 +229,7 @@ class One2ManyValueDescriptor(ValueDescriptor): fields=record._changed))) value[0][1].append(record.id) else: - value.append(('create', record._get_values( - fields=record._changed))) + value.append(('create', record._get_values())) if value_list.record_removed: value.append(('unlink', [x.id for x in value_list.record_removed])) if value_list.record_deleted: From d4a1b0e3ab32c422ed4e3b1b9e0101b81bb1a0bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 29 Jun 2011 20:27:13 +0200 Subject: [PATCH 03/24] Enforce to store always only str in Char field review48005 (transplanted from 123014817053bbba3349809ebbce2883a53daded) --- proteus/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index 206251a09e..e4489b8729 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -87,7 +87,7 @@ class CharDescriptor(FieldDescriptor): def __set__(self, instance, value): assert isinstance(value, basestring) or value in (None, False) - super(CharDescriptor, self).__set__(instance, value) + super(CharDescriptor, self).__set__(instance, value or '') class IntegerDescriptor(FieldDescriptor): From 852453726b2652355bbf106abdce8054e2ef056f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 9 Aug 2011 10:07:10 +0200 Subject: [PATCH 04/24] Fix NotImplemented into NotImplementedError (transplanted from a1bd31febf2954da49303b3e1e490a714a98ebb4) --- proteus/config.py | 2 +- proteus/tests/test_config.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/proteus/config.py b/proteus/config.py index 30593369c8..5202f3b7d2 100644 --- a/proteus/config.py +++ b/proteus/config.py @@ -51,7 +51,7 @@ class Config(object): def __eq__(self, other): if isinstance(other, Config): return repr(self) == repr(other) - return NotImplemented + return NotImplementedError class _TrytondMethod(object): diff --git a/proteus/tests/test_config.py b/proteus/tests/test_config.py index 8c568b49dd..35433a38c1 100644 --- a/proteus/tests/test_config.py +++ b/proteus/tests/test_config.py @@ -26,4 +26,4 @@ class TestConfig(TestCase): config2 = proteus.config.get_config() self.assertEqual(config1, config2) - self.assertEqual(config1.__eq__(None), NotImplemented) + self.assertRaises(NotImplementedError, config1.__eq__, None) From fa05541b1a1590878d450874d5dd387171915267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 11 Sep 2011 14:26:42 +0200 Subject: [PATCH 05/24] Fix wrong return instead of raise of NotImplementedError --- proteus/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proteus/config.py b/proteus/config.py index 5202f3b7d2..da6f711235 100644 --- a/proteus/config.py +++ b/proteus/config.py @@ -51,7 +51,7 @@ class Config(object): def __eq__(self, other): if isinstance(other, Config): return repr(self) == repr(other) - return NotImplementedError + raise NotImplementedError class _TrytondMethod(object): From 97922b6b5fd5653b217eb2ba2fabdfb5d8200559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 16 Dec 2011 22:56:00 +0100 Subject: [PATCH 06/24] Call parent _on_change and add on_change result without triggering on_change review192003 (transplanted from 9569ce5aad13b4a617d461fd72dbd78f8eb80ce8) --- proteus/__init__.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index e4489b8729..d9caf5654d 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -685,8 +685,12 @@ class Model(object): for vals in value.get('add', []): relation = Model.get(self._fields[field]['relation'], self._config) + record = relation() + for i, j in vals.iteritems(): + record._values[i] = j + record._changed.add(i) # append without signal - list.append(getattr(self, field), relation(**vals)) + list.append(getattr(self, field), record) for vals in value.get('update', []): if 'id' not in vals: continue @@ -719,8 +723,6 @@ class Model(object): self._on_change_set(field, value) for field, value in later.iteritems(): self._on_change_set(field, value) - if self._parent: - self._parent._changed.add(self._parent_field_name) for field, definition in self._fields.iteritems(): if not definition.get('on_change_with'): continue @@ -733,6 +735,9 @@ class Model(object): res = getattr(self._proxy, 'on_change_with_%s' % field)(args, context) self._on_change_set(field, res) + if self._parent: + self._parent._changed.add(self._parent_field_name) + self._parent._on_change(self._parent_field_name) class Wizard(object): From dd7ddcf5d311579899d2991320b744a332c04f81 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Mon, 26 Dec 2011 11:18:04 +0100 Subject: [PATCH 07/24] Prepare release 2.0.1 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index f604f5a79c..1bdf4b4016 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.0.1 - 2011-12-26 +* Bug fixes (see mercurial logs for details) + Version 2.0.0 - 2011-04-28 * Bug fixes (see mercurial logs for details) * Manage default values of trytond configuration From cd41d6eefb870f0de469bd7a8ab519e3f63ee2a1 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Mon, 26 Dec 2011 11:18:14 +0100 Subject: [PATCH 08/24] Added tag 2.0.1 for changeset ea83ddcca8d6 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index d157857143..24651d67e1 100644 --- a/.hgtags +++ b/.hgtags @@ -1,2 +1,3 @@ 3974f546b848d4ac59551db9f733d8ed62946dfd 1.8.0 c8fdae3b2338b744fce709572958884a95de87b3 2.0.0 +ea83ddcca8d62842024a001cab5d2070c1407e2e 2.0.1 From 5523999a3ac1445e490ddf5a4c0aee03500fa85c Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Mon, 26 Dec 2011 11:19:01 +0100 Subject: [PATCH 09/24] Increase version number --- proteus/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index d9caf5654d..8f13767a61 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -3,7 +3,7 @@ ''' A library to access Tryton's models like a client. ''' -__version__ = "2.0.1" +__version__ = "2.0.2" __all__ = ['Model', 'Wizard'] from types import NoneType import threading From b68838465a1660860ccf0bd54bef06f68f2afa90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 5 Mar 2012 10:19:20 +0100 Subject: [PATCH 10/24] Use relativedelta to make all the datetime computation issue2469 (transplanted from f1810a191577acc2712515fbb16b1c036422958b) --- proteus/pyson.py | 59 +++++++++++++++++++++--------------------------- setup.py | 4 +++- 2 files changed, 29 insertions(+), 34 deletions(-) diff --git a/proteus/pyson.py b/proteus/pyson.py index 5eca3cb6a6..45bcbaa8e7 100644 --- a/proteus/pyson.py +++ b/proteus/pyson.py @@ -8,6 +8,7 @@ if sys.version_info < (2, 6): else: import json import datetime +from dateutil.relativedelta import relativedelta class PYSON(object): @@ -396,23 +397,14 @@ class Date(PYSON): @staticmethod def eval(dct, context): - date = datetime.date.today() - replace = {} - for i, j in (('y', 'year'), ('M', 'month'), ('d', 'day')): - if dct[i] is not None: - replace[j] = dct[i] - date = date.replace(**replace) - if dct['dy']: - year = date.year + dct['dy'] - date = date.replace(year=year) - if dct['dM']: - month = date.month + dct['dM'] - year = date.year + month / 12 - month = month % 12 - date = date.replace(year=year, month=month) - if dct['dd']: - date += datetime.timedelta(days=dct['dd']) - return date + return datetime.date.today() + relativedelta( + year=dct['y'], + month=dct['M'], + day=dct['d'], + years=dct['dy'], + months=dct['dM'], + days=dct['dd'], + ) class DateTime(Date): @@ -460,22 +452,23 @@ class DateTime(Date): @staticmethod def eval(dct, context): - date = Date.eval(dct, context) - datetime_ = datetime.datetime.combine(date, - datetime.datetime.now().time()) - replace = {} - for i, j in (('h', 'hour'), ('m', 'minute'), ('s', 'second'), - ('ms', 'microsecond')): - if dct[i] is not None: - replace[j] = dct[i] - datetime_ = datetime_.replace(**replace) - delta = {} - for i, j in (('dh', 'hours'), ('dm', 'minutes'), ('ds', 'seconds'), - ('dms', 'microseconds')): - if dct[i]: - delta[j] = dct[i] - datetime_ += datetime.timedelta(**delta) - return datetime_ + return datetime.datetime.now() + relativedelta( + year=dct['y'], + month=dct['M'], + day=dct['d'], + hour=dct['h'], + minute=dct['m'], + second=dct['s'], + microsecond=dct['ms'], + years=dct['dy'], + months=dct['dM'], + days=dct['dd'], + hours=dct['dh'], + minutes=dct['dm'], + seconds=dct['ds'], + microseconds=dct['dms'], + ) + CONTEXT = { 'Eval': Eval, diff --git a/setup.py b/setup.py index 6ed5377e56..5077eee712 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,9 @@ setup(name='proteus', 'Topic :: Office/Business', ], license='GPL-3', - install_requires=SIMPLEJSON, + install_requires=SIMPLEJSON + [ + "python-dateutil", + ], extras_require={ 'trytond': ['trytond >= %s.%s, < %s.%s' % (major_version, minor_version, major_version, minor_version + 1)], From 011545fb852903d08739c1c881b5b8fd00305f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 11 Apr 2012 13:04:07 +0200 Subject: [PATCH 11/24] Fix on_change set for xxx2many fields - Always mark record as changed - Skip fields with dot review321001 (transplanted from d6359ccb7844d5286d4f0a96467f37f9e9f87ec5) --- proteus/__init__.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index 8f13767a61..65b7438b0a 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -667,11 +667,8 @@ class Model(object): return res def _on_change_set(self, field, value): - if self._fields[field]['type'] in ('one2many', 'many2many'): - if isinstance(value, (list, tuple)): - self._values[field] = value - self._changed.add(field) - return + if (self._fields[field]['type'] in ('one2many', 'many2many') + and not isinstance(value, (list, tuple))): to_remove = [] if value and value.get('remove'): for record_id in value['remove']: @@ -687,6 +684,8 @@ class Model(object): self._config) record = relation() for i, j in vals.iteritems(): + if '.' in i: + continue record._values[i] = j record._changed.add(i) # append without signal @@ -697,11 +696,13 @@ class Model(object): for record in getattr(self, field): if record.id == vals['id']: for i, j in vals.iteritems(): + if '.' in i: + continue record._values[i] = j record._changed.add(i) else: self._values[field] = value - self._changed.add(field) + self._changed.add(field) def _on_change(self, name): 'Call on_change for field' From 71e1daede80ff7b617f560fa5e8a3273b884eb72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 13 Apr 2012 13:20:14 +0200 Subject: [PATCH 12/24] Don't call default_get for new record from on_change This is to have the same behavior as the client. The default values must be managed by the values of the on_change review323001 (transplanted from cb8f873bc40adff539716453defee02356e2ef80) --- proteus/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index 65b7438b0a..aee5db7775 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -462,7 +462,7 @@ class Model(object): _config = None _fields = None - def __init__(self, id=None, **kwargs): + def __init__(self, id=None, _default=True, **kwargs): super(Model, self).__init__() if id: assert not kwargs @@ -474,7 +474,7 @@ class Model(object): self._parent = None # store the parent record self._parent_field_name = '' # store the field name in parent record self._parent_name = '' # store the field name to parent record - if self.id < 0: + if self.id < 0 and _default: self._default_get() for field_name, value in kwargs.iteritems(): @@ -682,7 +682,7 @@ class Model(object): for vals in value.get('add', []): relation = Model.get(self._fields[field]['relation'], self._config) - record = relation() + record = relation(_default=False) for i, j in vals.iteritems(): if '.' in i: continue From 5649d9a04ffe5a2c87717887087e576960e7c3cc Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Mon, 7 May 2012 11:32:52 +0200 Subject: [PATCH 13/24] Prepare release 2.0.2 --- CHANGELOG | 3 +++ COPYRIGHT | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1bdf4b4016..2c6873827a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.0.2 - 2012-05-07 +* Bug fixes (see mercurial logs for details) + Version 2.0.1 - 2011-12-26 * Bug fixes (see mercurial logs for details) diff --git a/COPYRIGHT b/COPYRIGHT index 34a6d18b42..e792a2ca59 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,5 +1,5 @@ -Copyright (C) 2010 Cédric Krier. -Copyright (C) 2010 B2CK SPRL. +Copyright (C) 2010-2012 Cédric Krier. +Copyright (C) 2010-2012 B2CK SPRL. 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 From 79571fa734487a80b5e2f5630842085b90c3c965 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Mon, 7 May 2012 11:32:56 +0200 Subject: [PATCH 14/24] Added tag 2.0.2 for changeset ee74d5505c1a --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 24651d67e1..372e6c45ec 100644 --- a/.hgtags +++ b/.hgtags @@ -1,3 +1,4 @@ 3974f546b848d4ac59551db9f733d8ed62946dfd 1.8.0 c8fdae3b2338b744fce709572958884a95de87b3 2.0.0 ea83ddcca8d62842024a001cab5d2070c1407e2e 2.0.1 +ee74d5505c1ab7bf6755480ecb831991d6d693f2 2.0.2 From 7159bbdaedc8e8ceb490e99c80aa1c7006decf60 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Mon, 7 May 2012 11:33:13 +0200 Subject: [PATCH 15/24] Increase version number --- proteus/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index aee5db7775..8902fb252c 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -3,7 +3,7 @@ ''' A library to access Tryton's models like a client. ''' -__version__ = "2.0.2" +__version__ = "2.0.3" __all__ = ['Model', 'Wizard'] from types import NoneType import threading From 09e62af0175848e5f4a82ce9e946fba6156032e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 19 Jul 2012 09:52:59 +0200 Subject: [PATCH 16/24] Sent all values when creating record issue2715 review429001 (transplanted from 4b20e670e5829da3ec5ebcd9f8663fc7b4424b09) --- proteus/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index 8902fb252c..0c174c4304 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -162,7 +162,8 @@ class Many2OneDescriptor(FieldDescriptor): value = relation(value) elif not value: value = None - instance._values[self.name] = value + if self.name in instance._values: + instance._values[self.name] = value return value def __set__(self, instance, value): @@ -556,7 +557,7 @@ class Model(object): 'Save the record' context = self._config.context if self.id < 0: - values = self._get_values(fields=self._changed) + values = self._get_values() self.__id = self._proxy.create(values, context) else: if not self._changed: From 993a08776ce39a4a94f78a3b675e4ebd652abb4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 26 Jul 2012 11:30:40 +0200 Subject: [PATCH 17/24] Import pyson locally to not break installation issue2705 review450001 (transplanted from 433368c5f09898fced213c19da8c82741d9caab0) --- proteus/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index 0c174c4304..369a177dce 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -10,7 +10,6 @@ import threading import datetime from decimal import Decimal import proteus.config -from proteus.pyson import PYSONDecoder _MODELS = threading.local() @@ -707,6 +706,8 @@ class Model(object): def _on_change(self, name): 'Call on_change for field' + # Import locally to not break installation + from proteus.pyson import PYSONDecoder definition = self._fields[name] if definition.get('on_change'): if isinstance(definition['on_change'], basestring): From e11f9337111660fff2963634e7d3b52f5acb98f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 10 Sep 2012 18:28:20 +0200 Subject: [PATCH 18/24] Prepare release 2.0.3 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 2c6873827a..e67dfc8528 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.0.3 - 2012-09-10 +* Bug fixes (see mercurial logs for details) + Version 2.0.2 - 2012-05-07 * Bug fixes (see mercurial logs for details) From 4710bc80f45eaeaaedefc46a79aab586f0e37a52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 10 Sep 2012 18:28:21 +0200 Subject: [PATCH 19/24] Added tag 2.0.3 for changeset c84351a25bec --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 372e6c45ec..42797499af 100644 --- a/.hgtags +++ b/.hgtags @@ -2,3 +2,4 @@ c8fdae3b2338b744fce709572958884a95de87b3 2.0.0 ea83ddcca8d62842024a001cab5d2070c1407e2e 2.0.1 ee74d5505c1ab7bf6755480ecb831991d6d693f2 2.0.2 +c84351a25bec7d924364bb33fa5bc0292ab7c0d2 2.0.3 From 74b4bb611aea0a6bcff89821f5ba9989c755c0ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 10 Sep 2012 18:28:31 +0200 Subject: [PATCH 20/24] Increase version number --- proteus/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index 369a177dce..7d97f5f5e9 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -3,7 +3,7 @@ ''' A library to access Tryton's models like a client. ''' -__version__ = "2.0.3" +__version__ = "2.0.4" __all__ = ['Model', 'Wizard'] from types import NoneType import threading From c8cc00565b711bc1b87723c7053ede916fc6496a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 22 Mar 2013 17:40:15 +0100 Subject: [PATCH 21/24] class name must be string and not unicode The class name in reference could be unicode but type accept only string as name. review724002 (transplanted from c9ee01676c6b858cc2572e532f141de11e315e6c) --- proteus/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/proteus/__init__.py b/proteus/__init__.py index 7d97f5f5e9..f47061fe38 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -497,6 +497,9 @@ class Model(object): @classmethod def get(cls, name, config=None): 'Get a class for the named Model' + if isinstance(name, unicode): + name = name.encode('utf-8') + class Spam(Model): __metaclass__ = MetaModelFactory(name, config=config)() return Spam From e0457143e7a4242b79c44eeb5b5681242fca222d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 2 May 2013 09:44:59 +0200 Subject: [PATCH 22/24] Prepare release 2.0.4 --- CHANGELOG | 3 +++ COPYRIGHT | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e67dfc8528..4206c45cf1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.0.4 - 2013-05-02 +* Bug fixes (see mercurial logs for details) + Version 2.0.3 - 2012-09-10 * Bug fixes (see mercurial logs for details) diff --git a/COPYRIGHT b/COPYRIGHT index e792a2ca59..7e8c156c3f 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,5 +1,5 @@ -Copyright (C) 2010-2012 Cédric Krier. -Copyright (C) 2010-2012 B2CK SPRL. +Copyright (C) 2010-2013 Cédric Krier. +Copyright (C) 2010-2013 B2CK SPRL. 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 From f46b4ef65c10099fb70fba66b52f0720a8f3c426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 2 May 2013 09:45:00 +0200 Subject: [PATCH 23/24] Added tag 2.0.4 for changeset beb30b109efe --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 42797499af..17a000d46b 100644 --- a/.hgtags +++ b/.hgtags @@ -3,3 +3,4 @@ c8fdae3b2338b744fce709572958884a95de87b3 2.0.0 ea83ddcca8d62842024a001cab5d2070c1407e2e 2.0.1 ee74d5505c1ab7bf6755480ecb831991d6d693f2 2.0.2 c84351a25bec7d924364bb33fa5bc0292ab7c0d2 2.0.3 +beb30b109efe32334c79509eabecbbbaa78974f0 2.0.4 From fd165b62f8ac1ce7163a78f4eaeaec42505cb2a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 2 May 2013 09:45:08 +0200 Subject: [PATCH 24/24] Increase version number --- proteus/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proteus/__init__.py b/proteus/__init__.py index f47061fe38..90ab61e498 100644 --- a/proteus/__init__.py +++ b/proteus/__init__.py @@ -3,7 +3,7 @@ ''' A library to access Tryton's models like a client. ''' -__version__ = "2.0.4" +__version__ = "2.0.5" __all__ = ['Model', 'Wizard'] from types import NoneType import threading