summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-06-16 13:34:38 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-06-17 15:17:09 +0200
commit25f23ed03ad48fb4e5ca2f14527c0bc381dc8c9b (patch)
treeba6cff80e3e426ac57cce299c36760fe87806bba /ishtar_common/models.py
parenta8349afc7ec5e7919108ceca7027cf054a23caff (diff)
downloadIshtar-25f23ed03ad48fb4e5ca2f14527c0bc381dc8c9b.tar.bz2
Ishtar-25f23ed03ad48fb4e5ca2f14527c0bc381dc8c9b.zip
Context records: Optimize record relations - management command - tests
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index fdeba5f26..19c432053 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -20,6 +20,8 @@
"""
Models description
"""
+import sys
+
from bs4 import BeautifulSoup
import copy
import datetime
@@ -862,6 +864,27 @@ class RelationsViews(models.Model):
return relation_view_update.delay(sender, kwargs)
@classmethod
+ def _get_base_children(cls):
+ raise NotImplemented()
+
+ @classmethod
+ def regenerate_all(cls, quiet=True):
+ cls.check_engine()
+ profile = get_current_profile(force=True)
+ if profile.parent_relations_engine == "V":
+ return
+ cls.objects.filter(pk__isnull=False).delete()
+ base_children = list(cls._get_base_children())
+ total = len(base_children)
+ for idx, cr_id in enumerate(base_children):
+ if not quiet:
+ sys.stdout.write(f"Processing: {idx + 1} / {total}\t\t{cr_id}\r")
+ sys.stdout.flush()
+ cls.update(cr_id)
+ if not quiet:
+ sys.stdout.write("\n")
+
+ @classmethod
def create_table(cls):
raise NotImplemented()