diff options
| 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 | 
| commit | 42e670964c037cf9edf11b3fa12c6ab6465362da (patch) | |
| tree | 14fd19cba5728d93dccdee96daf84aaf5309de1b /archaeological_operations/management/commands | |
| parent | 1dce12d7a7c1a7db7a0b467b09248b3b8d2e3724 (diff) | |
| download | Ishtar-42e670964c037cf9edf11b3fa12c6ab6465362da.tar.bz2 Ishtar-42e670964c037cf9edf11b3fa12c6ab6465362da.zip | |
Administrativ act: fix bad index
Diffstat (limited to 'archaeological_operations/management/commands')
| -rw-r--r-- | archaeological_operations/management/commands/reindex_acts.py | 58 | 
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 | 
