diff options
-rw-r--r-- | archaeological_context_records/models.py | 7 | ||||
-rw-r--r-- | archaeological_context_records/tests.py | 6 | ||||
-rw-r--r-- | archaeological_finds/models_finds.py | 20 |
3 files changed, 30 insertions, 3 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 4084ec05a..bb3afc899 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -407,6 +407,13 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, return list(Find.objects.filter(base_finds__context_record=self).all())\ + list(BaseFind.objects.filter(context_record=self).all()) + def _cached_labels_bulk_update(self): + if settings.TESTING and settings.USE_SPATIALITE_FOR_TESTS: + return + self.base_finds.model.cached_label_bulk_update( + context_record_id=self.pk) + return True + @property def reference(self): if not self.operation: diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py index 14a5ae8d3..4226b42ea 100644 --- a/archaeological_context_records/tests.py +++ b/archaeological_context_records/tests.py @@ -289,6 +289,10 @@ class ContextRecordTest(ContextRecordInit, TestCase): self.assertEqual(ope_id, 'OP2017-1') def test_downstream_cache_update(self): + if settings.USE_SPATIALITE_FOR_TESTS: + # using views - can only be tested with postgresql + return + cr = self.create_context_record()[0] from archaeological_finds.models import Find, BaseFind, MaterialType @@ -315,7 +319,7 @@ class ContextRecordTest(ContextRecordInit, TestCase): def reached(self, sender, **kwargs): instance = kwargs.get('instance') - if sender == Find: + if sender in (Find, BaseFind): self.find_reached.append(instance) test_obj = TestObj() diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 68bc5269c..3e14aa592 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -330,7 +330,8 @@ class BaseFind(BaseHistorizedItem, OwnPerms): return returned @classmethod - def cached_label_bulk_update(cls, operation_id=None, parcel_id=None): + def cached_label_bulk_update(cls, operation_id=None, parcel_id=None, + context_record_id=None): if operation_id: filters = """ INNER JOIN archaeological_context_records_contextrecord acr @@ -345,6 +346,12 @@ class BaseFind(BaseHistorizedItem, OwnPerms): """ args = [int(parcel_id)] kwargs = {'parcel_id': parcel_id} + elif context_record_id: + filters = """ + WHERE mybf.context_record_id = %s + """ + args = [int(context_record_id)] + kwargs = {'context_record_id': context_record_id} else: return @@ -905,7 +912,8 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem): return unicode(self) @classmethod - def cached_label_bulk_update(cls, operation_id=None, parcel_id=None): + def cached_label_bulk_update(cls, operation_id=None, parcel_id=None, + context_record_id=None): if operation_id: filters = """ INNER JOIN find_first_base_find myfbf @@ -926,6 +934,14 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem): ON acr.parcel_id = %s AND acr.id = mybf.context_record_id """ args = [int(parcel_id)] + elif context_record_id: + filters = """ + INNER JOIN find_first_base_find myfbf + ON myfbf.find_id = myf.id + INNER JOIN archaeological_finds_basefind mybf + ON myfbf.basefind_id = mybf.id AND mybf.context_record_id = %s + """ + args = [int(parcel_id)] else: return |