changeset 8e2a6cdb57e8 in proteus:5.0
details: https://hg.tryton.org/proteus?cmd=changeset;node=8e2a6cdb57e8
description:
        Allow id equals to zero

        issue8680
        review277921002
        (grafted from 28e3d55d7b334be0cda12d4cf44a08d1aae76719)
diffstat:

 proteus/__init__.py         |  10 +++++-----
 proteus/tests/test_model.py |   5 +++++
 2 files changed, 10 insertions(+), 5 deletions(-)

diffs (54 lines):

diff -r 99818d91690b -r 8e2a6cdb57e8 proteus/__init__.py
--- a/proteus/__init__.py       Sun Sep 15 14:26:23 2019 +0200
+++ b/proteus/__init__.py       Tue Oct 01 22:54:31 2019 +0200
@@ -106,12 +106,12 @@
         self.__doc__ = definition['string']
 
     def __get__(self, instance, owner):
-        if instance.id > 0:
+        if instance.id >= 0:
             instance._read(self.name)
         return instance._values.get(self.name, self.default)
 
     def __set__(self, instance, value):
-        if instance.id > 0:
+        if instance.id >= 0:
             instance._read(self.name)
         previous = getattr(instance, self.name)
         instance._values[self.name] = value
@@ -658,9 +658,9 @@
 
     def __init__(self, id=None, _default=True, _group=None, **kwargs):
         super(Model, self).__init__()
-        if id:
+        if id is not None:
             assert not kwargs
-        self.__id = id or Model.__counter
+        self.__id = id if id is not None else Model.__counter
         if self.__id < 0:
             Model.__counter -= 1
         self._values = {}  # store the values of fields
@@ -842,7 +842,7 @@
             assert proxy == record._proxy
             assert config == record._config
             assert context == record._context
-            if record.id > 0:
+            if record.id >= 0:
                 timestamp.update(record._get_timestamp())
                 delete.append(record.id)
         context['_timestamp'] = timestamp
diff -r 99818d91690b -r 8e2a6cdb57e8 proteus/tests/test_model.py
--- a/proteus/tests/test_model.py       Sun Sep 15 14:26:23 2019 +0200
+++ b/proteus/tests/test_model.py       Tue Oct 01 22:54:31 2019 +0200
@@ -24,6 +24,11 @@
         admin = User.find([('login', '=', 'admin')])[0]
         self.assertEqual(int(admin), admin.id)
 
+    def test_id_zero(self):
+        User = Model.get('res.user')
+        root = User(0)
+        self.assertEqual(root.login, 'root')
+
     def test_find(self):
         User = Model.get('res.user')
         admin = User.find([('login', '=', 'admin')])[0]

Reply via email to