summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-28 14:50:12 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-28 14:50:12 +0200
commitc64fd6f05a767282972d9e51c3129993a4b90e1f (patch)
tree2f2f39dfb5c185d8e8857b2f87bbeff6065bb321 /ishtar_common/models.py
parent64da49c224d9c8b8271f81bfcc1328d5cc65f5d2 (diff)
downloadIshtar-c64fd6f05a767282972d9e51c3129993a4b90e1f.tar.bz2
Ishtar-c64fd6f05a767282972d9e51c3129993a4b90e1f.zip
Better management of cascade updates
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index a03f9f387..93a099b74 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -87,7 +87,7 @@ from ishtar_common.models_imports import ImporterModel, ImporterType, \
Import, TargetKeyGroup, ValueFormater
from ishtar_common.templatetags.link_to_window import simple_link_to_window
from ishtar_common.utils import get_cache, disable_for_loaddata, create_slug, \
- get_all_field_names, merge_tsvectors, cached_label_changed, \
+ get_all_field_names, merge_tsvectors, cached_label_changed, post_save_geo, \
generate_relation_graph, max_size_help, task, SecretaryRenderer
__all__ = [
@@ -1963,6 +1963,7 @@ class BaseHistorizedItem(StatisticItem, TemplateItem, FullSearch, Imported,
SHOW_URL = None
EXTERNAL_ID_KEY = ''
EXTERNAL_ID_DEPENDENCIES = []
+ DOWN_MODEL_UPDATE = []
HISTORICAL_M2M = []
history_modifier = models.ForeignKey(
@@ -1973,6 +1974,8 @@ class BaseHistorizedItem(StatisticItem, TemplateItem, FullSearch, Imported,
verbose_name=_("Creator"), blank=True, null=True)
last_modified = models.DateTimeField(auto_now=True)
history_m2m = JSONField(default={}, blank=True)
+ need_update = models.BooleanField(
+ verbose_name=_("Need update"), default=False)
ALT_NAMES = {
'history_creator': SearchAltName(
@@ -1992,6 +1995,15 @@ class BaseHistorizedItem(StatisticItem, TemplateItem, FullSearch, Imported,
class Meta:
abstract = True
+ def cascade_update(self):
+ for down_model in self.DOWN_MODEL_UPDATE:
+ if not settings.USE_BACKGROUND_TASK:
+ getattr(self, down_model).update(need_update=True)
+ continue
+ for item in getattr(self, down_model).all():
+ cached_label_changed(item.model, instance=item)
+ post_save_geo(item.model, instance=item)
+
@classmethod
def get_verbose_name(cls):
return cls._meta.verbose_name