diff options
Diffstat (limited to 'archaeological_context_records')
-rw-r--r-- | archaeological_context_records/models.py | 7 | ||||
-rw-r--r-- | archaeological_context_records/tests.py | 48 |
2 files changed, 50 insertions, 5 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 490124342..4084ec05a 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -159,7 +159,7 @@ class CRBulkView(object): class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, - ValueGetter, ShortMenuItem): + ValueGetter, ShortMenuItem): SHOW_URL = 'show-contextrecord' SLUG = 'contextrecord' TABLE_COLS = ['label', 'operation__common_name', 'parcel__town__name', @@ -403,8 +403,9 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, return self.full_label() def _get_associated_cached_labels(self): - from archaeological_finds.models import Find - return list(Find.objects.filter(base_finds__context_record=self).all()) + from archaeological_finds.models import Find, BaseFind + return list(Find.objects.filter(base_finds__context_record=self).all())\ + + list(BaseFind.objects.filter(context_record=self).all()) @property def reference(self): diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py index 6bb293e4d..14a5ae8d3 100644 --- a/archaeological_context_records/tests.py +++ b/archaeological_context_records/tests.py @@ -235,7 +235,7 @@ class ContextRecordTest(ContextRecordInit, TestCase): models.RecordRelations.objects.create( left_record=cr_1, right_record=cr_2, relation_type=sym_rel_type) - def testExternalID(self): + def test_external_id(self): cr = self.context_records[0] self.assertEqual( cr.external_id, @@ -255,7 +255,7 @@ class ContextRecordTest(ContextRecordInit, TestCase): cr.operation ) - def test_cache_update(self): + def test_upstream_cache_update(self): cr = self.create_context_record()[0] cr_pk = cr.pk # OP2010 - 1 | A | 1 | CR 1 @@ -288,6 +288,50 @@ class ContextRecordTest(ContextRecordInit, TestCase): ope_id, parcel_sec, parcel_nb, cr_label = cr.cached_label.split(' | ') self.assertEqual(ope_id, 'OP2017-1') + def test_downstream_cache_update(self): + cr = self.create_context_record()[0] + + from archaeological_finds.models import Find, BaseFind, MaterialType + + data = { + 'label': "Find me a reason", + 'context_record': cr, + 'history_modifier': self.get_default_user() + } + bf = BaseFind.objects.create(**data) + find = Find.objects.create( + history_modifier=self.get_default_user(), + label='Find me too' + ) + find.base_finds.add(bf) + + mat = MaterialType.objects.create( + label='Adamentium', txt_idx='admentium', code='ADA') + find.material_types.add(mat) + + class TestObj(object): + def __init__(self): + self.find_reached = [] + + def reached(self, sender, **kwargs): + instance = kwargs.get('instance') + if sender == Find: + self.find_reached.append(instance) + + test_obj = TestObj() + cr = models.ContextRecord.objects.get(pk=cr.pk) + cr.test_obj = test_obj + cr.label = "New label!" + cr.save() + + # verify the relevance of the update + bf = BaseFind.objects.get(pk=bf.pk) + self.assertIn("New label!", bf.cache_complete_id) + + # bulk update of find cached label gen don't have to be + # reached + self.assertEqual(len(test_obj.find_reached), 0) + class ContextRecordSearchTest(ContextRecordInit, TestCase): fixtures = ImportContextRecordTest.fixtures |