summaryrefslogtreecommitdiff
path: root/archaeological_operations/management
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2014-06-15 19:46:25 +0200
committerÉtienne Loks <etienne.loks@proxience.com>2014-06-15 19:46:25 +0200
commit42e670964c037cf9edf11b3fa12c6ab6465362da (patch)
tree14fd19cba5728d93dccdee96daf84aaf5309de1b /archaeological_operations/management
parent1dce12d7a7c1a7db7a0b467b09248b3b8d2e3724 (diff)
downloadIshtar-42e670964c037cf9edf11b3fa12c6ab6465362da.tar.bz2
Ishtar-42e670964c037cf9edf11b3fa12c6ab6465362da.zip
Administrativ act: fix bad index
Diffstat (limited to 'archaeological_operations/management')
-rw-r--r--archaeological_operations/management/commands/reindex_acts.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/archaeological_operations/management/commands/reindex_acts.py b/archaeological_operations/management/commands/reindex_acts.py
new file mode 100644
index 000000000..70c97e0fd
--- /dev/null
+++ b/archaeological_operations/management/commands/reindex_acts.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2014 É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.db import models
+from django.core.management.base import BaseCommand, CommandError
+from django.core.exceptions import ValidationError
+
+from archaeological_operations import models
+
+class Command(BaseCommand):
+ args = ''
+ help = 'Regenerate index'
+
+ def handle(self, *args, **options):
+ # first handle not appropriate index
+ q = models.AdministrativeAct.objects.filter(
+ signature_date__isnull=False,
+ index__isnull=False
+ ).exclude(act_type__indexed=True)
+ ln = q.count()
+ sys.stdout.write("\n* clean\n")
+ for idx, admin_act in enumerate(q.all()):
+ admin_act.index = None
+ admin_act.save()
+ sys.stdout.write("\r* %d/%d" % (idx, ln))
+ # then try to fix
+ q = models.AdministrativeAct.objects
+ ln = q.count()
+ sys.stdout.write("\n* fix\n")
+ tobefix = []
+ for idx, admin_act in enumerate(q.all()):
+ sys.stdout.write("\r* %d/%d" % (idx, ln))
+ try:
+ admin_act.save()
+ except ValidationError:
+ tobefix.append(admin_act)
+ print "To be fix"
+ for item in tobefix:
+ print item.signature_date.year, item.index, item.act_type, \
+ item.operation or item.associated_file