summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-08-16 18:26:10 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-08-16 18:26:10 +0200
commitfbff9e5ffda34efd195a27ddfd8f519a2dade042 (patch)
treefcc6fcccff52643f7427c1db897c1b800ffb9dea
parentcc6442c51c3373a9233e81cb9a151502a86ed53d (diff)
downloadIshtar-fbff9e5ffda34efd195a27ddfd8f519a2dade042.tar.bz2
Ishtar-fbff9e5ffda34efd195a27ddfd8f519a2dade042.zip
Command: regenerate cached label and search vector
-rw-r--r--ishtar_common/management/commands/regenerate_search_vector_cached_label.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/ishtar_common/management/commands/regenerate_search_vector_cached_label.py b/ishtar_common/management/commands/regenerate_search_vector_cached_label.py
new file mode 100644
index 000000000..f8ad3b9ca
--- /dev/null
+++ b/ishtar_common/management/commands/regenerate_search_vector_cached_label.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2013-2018 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# See the file COPYING for details.
+
+import sys
+
+from django.core.management.base import BaseCommand
+
+from django.apps import apps
+
+
+class Command(BaseCommand):
+ args = ''
+ help = 'Regenerate cached labels and search vectors'
+
+ def handle(self, *args, **options):
+ for app in ['ishtar_common', 'archaeological_operations',
+ 'archaeological_context_records',
+ 'archaeological_finds', 'archaeological_warehouse']:
+ print(u"* app: {}".format(app))
+ for model in apps.get_app_config(app).get_models():
+ if not bool(
+ [k for k in dir(model) if k.startswith('_generate_')]):
+ continue
+ msg = u"-> processing {}: ".format(model._meta.verbose_name)
+ ln = model.objects.count()
+ for idx, object in enumerate(model.objects.all()):
+ object.skip_history_when_saving = True
+ cmsg = u"\r{} {}/{}".format(msg, idx + 1, ln)
+ sys.stdout.write(cmsg)
+ sys.stdout.flush()
+ object.save()
+ sys.stdout.write("\n")