1 parent
70f6a94537
commit
8efee8823a
3 files changed
+41
-2
No files matched your search
@@ -1,3 +1,4 @@
|
||||
* Do not copy relational fields with filter
|
||||
* Support range functions and operators in EXCLUDE constraint
|
||||
* Add sparkline chart tools
|
||||
* Add setup methods to activate_modules
|
||||
|
||||
@@ -435,14 +435,14 @@ class ModelStorage(Model):
|
||||
except Exception:
|
||||
pass
|
||||
elif ftype in ('one2many',):
|
||||
if is_readonly(field):
|
||||
if is_readonly(field) or field.filter:
|
||||
del data[field_name]
|
||||
elif data[field_name]:
|
||||
data[field_name] = [(
|
||||
'copy', data[field_name],
|
||||
get_default(field_name))]
|
||||
elif ftype == 'many2many':
|
||||
if is_readonly(field):
|
||||
if is_readonly(field) or field.filter:
|
||||
del data[field_name]
|
||||
elif data[field_name]:
|
||||
data[field_name] = [('add', data[field_name])]
|
||||
|
||||
@@ -110,6 +110,25 @@ class CopyTestCase(TestCase):
|
||||
|
||||
self.assertEqual(copy.one2many, ())
|
||||
|
||||
@with_transaction()
|
||||
def test_one2many_filter(self):
|
||||
"Test not copy one2many with filter"
|
||||
pool = Pool()
|
||||
Model = pool.get('test.copy.one2many')
|
||||
Target = pool.get('test.copy.one2many.target')
|
||||
|
||||
record = Model(name="Test")
|
||||
record.one2many = [Target(name="Target")]
|
||||
record.save()
|
||||
|
||||
try:
|
||||
Model.one2many.filter = [('name', '=', "Target")]
|
||||
copy, = Model.copy([record])
|
||||
|
||||
self.assertEqual(copy.one2many, ())
|
||||
finally:
|
||||
Model.one2many.filter = None
|
||||
|
||||
@with_transaction()
|
||||
def test_one2many_default(self):
|
||||
"Test copy one2many with default"
|
||||
@@ -191,6 +210,25 @@ class CopyTestCase(TestCase):
|
||||
|
||||
self.assertEqual(copy.many2many, ())
|
||||
|
||||
@with_transaction()
|
||||
def test_many2many_filter(self):
|
||||
"Test not copy many2many with filter"
|
||||
pool = Pool()
|
||||
Model = pool.get('test.copy.many2many')
|
||||
Target = pool.get('test.copy.many2many.target')
|
||||
|
||||
record = Model(name="Test")
|
||||
record.many2many = [Target(name="Target")]
|
||||
record.save()
|
||||
|
||||
try:
|
||||
Model.many2many.filter = [('name', '=', "Target")]
|
||||
copy, = Model.copy([record])
|
||||
|
||||
self.assertEqual(copy.many2many, ())
|
||||
finally:
|
||||
Model.many2many.filter = None
|
||||
|
||||
@with_transaction()
|
||||
def test_many2many_default(self):
|
||||
"Test copy many2many with default"
|
||||
|
||||
Reference in new issue
Block a user