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
|
||||
attr_id = orig_to_sub.get(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.container_id = container_id
|
||||
attr.save()
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
''' Testing models: api_RSForm. '''
|
||||
from django.forms import ValidationError
|
||||
|
||||
from apps.rsform.models import Constituenta, CstType, OrderManager, RSFormCached
|
||||
from apps.rsform.models import Attribution, Constituenta, CstType, OrderManager, RSFormCached
|
||||
from apps.users.models import User
|
||||
from shared.DBTester import DBTester
|
||||
|
||||
|
|
@ -170,6 +168,24 @@ class TestRSFormCached(DBTester):
|
|||
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):
|
||||
d2 = self.schema.insert_last(
|
||||
alias='D2',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user