#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2014 Étienne Loks # 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 . # 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 = 'Clean duplicated act_types' def handle(self, *args, **options): duplicates_lst = [] known = [] for act_type in models.ActType.objects.order_by('label').all(): if act_type.label in known: if duplicates_lst and \ duplicates_lst[-1][0].label == act_type.label: duplicates_lst[-1].append(act_type) else: duplicates_lst.append([act_type]) known.append(act_type.label) nb = 0 for duplicates in duplicates_lst: ref = duplicates[0] for duplicate in duplicates[1:]: nb += 1 models.AdministrativeAct.objects.filter(act_type=duplicate ).update(act_type=ref) duplicate.delete() print("* %d acttypes merged" % nb)