B: Fix self-attribution after substitution
This commit is contained in:
parent
b6b9c62b43
commit
fca8eb71e1
|
|
@ -276,7 +276,8 @@ class RSFormCached:
|
||||||
container_id = container_id if container_id is not None else attr.container_id
|
container_id = container_id if container_id is not None else attr.container_id
|
||||||
attr_id = orig_to_sub.get(attr.attribute_id)
|
attr_id = orig_to_sub.get(attr.attribute_id)
|
||||||
attr_id = attr_id if attr_id is not None else attr.attribute_id
|
attr_id = attr_id if attr_id is not None else attr.attribute_id
|
||||||
if not any(a.container_id == container_id and a.attribute_id == attr_id for a in attributions):
|
if attr_id != container_id and not any(
|
||||||
|
a.container_id == container_id and a.attribute_id == attr_id for a in attributions):
|
||||||
attr.attribute_id = attr_id
|
attr.attribute_id = attr_id
|
||||||
attr.container_id = container_id
|
attr.container_id = container_id
|
||||||
attr.save()
|
attr.save()
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
''' Testing models: api_RSForm. '''
|
''' Testing models: api_RSForm. '''
|
||||||
from django.forms import ValidationError
|
from apps.rsform.models import Attribution, Constituenta, CstType, OrderManager, RSFormCached
|
||||||
|
|
||||||
from apps.rsform.models import Constituenta, CstType, OrderManager, RSFormCached
|
|
||||||
from apps.users.models import User
|
from apps.users.models import User
|
||||||
from shared.DBTester import DBTester
|
from shared.DBTester import DBTester
|
||||||
|
|
||||||
|
|
@ -170,6 +168,24 @@ class TestRSFormCached(DBTester):
|
||||||
self.assertEqual(d1.definition_formal, x2.alias)
|
self.assertEqual(d1.definition_formal, x2.alias)
|
||||||
|
|
||||||
|
|
||||||
|
def test_substitute_attributions(self):
|
||||||
|
x1 = self.schema.insert_last(alias='X1')
|
||||||
|
x2 = self.schema.insert_last(alias='X2')
|
||||||
|
d1 = self.schema.insert_last(alias='D1')
|
||||||
|
d2 = self.schema.insert_last(alias='D2')
|
||||||
|
|
||||||
|
Attribution.objects.create(container=x1, attribute=d2)
|
||||||
|
Attribution.objects.create(container=x2, attribute=d2)
|
||||||
|
Attribution.objects.create(container=x1, attribute=x2)
|
||||||
|
Attribution.objects.create(container=x1, attribute=d1)
|
||||||
|
|
||||||
|
self.schema.substitute([(x1, x2)])
|
||||||
|
self.assertEqual(self.schema.constituentsQ().count(), 3)
|
||||||
|
self.assertEqual(Attribution.objects.filter(container__schema=self.schema.model).count(), 2)
|
||||||
|
self.assertTrue(Attribution.objects.filter(container=x2, attribute=d2).exists())
|
||||||
|
self.assertTrue(Attribution.objects.filter(container=x2, attribute=d1).exists())
|
||||||
|
|
||||||
|
|
||||||
def test_restore_order(self):
|
def test_restore_order(self):
|
||||||
d2 = self.schema.insert_last(
|
d2 = self.schema.insert_last(
|
||||||
alias='D2',
|
alias='D2',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user