summaryrefslogtreecommitdiff
path: root/ishtar_common/management/commands/migrate_relations_cache_tables.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-03-02 16:14:45 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2023-03-02 16:41:08 +0100
commit0dc167611a2f9fecc58b9709487362ceb3eb9752 (patch)
tree734d1eddcc720b9663852845862095979bc415a9 /ishtar_common/management/commands/migrate_relations_cache_tables.py
parentf4d375c0e76b9d01bf5ac8311c220d5d80a55b41 (diff)
downloadIshtar-0dc167611a2f9fecc58b9709487362ceb3eb9752.tar.bz2
Ishtar-0dc167611a2f9fecc58b9709487362ceb3eb9752.zip
Maintenance scripts: delete deprecated and migrate to ishtar_maintenance
Diffstat (limited to 'ishtar_common/management/commands/migrate_relations_cache_tables.py')
-rw-r--r--ishtar_common/management/commands/migrate_relations_cache_tables.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/ishtar_common/management/commands/migrate_relations_cache_tables.py b/ishtar_common/management/commands/migrate_relations_cache_tables.py
new file mode 100644
index 000000000..3e2dfaef5
--- /dev/null
+++ b/ishtar_common/management/commands/migrate_relations_cache_tables.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2021 É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
+
+
+CACHE_TABLES = [
+ "archaeological_context_records.ContextRecordTree"
+]
+
+
+class Command(BaseCommand):
+ args = ''
+ help = 'Update all relations for cache tables'
+
+ def add_arguments(self, parser):
+ parser.add_argument('table', nargs='?', default=None,
+ choices=CACHE_TABLES)
+ parser.add_argument(
+ '--quiet', dest='quiet', action='store_true',
+ help='Quiet output')
+
+ def handle(self, *args, **options):
+ quiet = options['quiet']
+ tables = CACHE_TABLES
+ if options.get("table", None):
+ table = options.get("table", None)
+ if table not in CACHE_TABLES:
+ sys.stdout.write("{} not a valid cache table\n".format(table))
+ return
+ tables = [table]
+ for table in tables:
+ if not quiet:
+ print("* table: {}".format(table))
+ app, tablename = table.split(".")
+ model = apps.get_app_config(app).get_model(tablename)
+ model.regenerate_all(quiet=quiet)
+ if not quiet:
+ sys.stdout.write("\n")