summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_operations/models.py3
-rw-r--r--scripts/2016-09-29-clean-dup-towns-pdl.py51
2 files changed, 53 insertions, 1 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 926e27b3b..0cebcf292 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -212,7 +212,8 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
surface = models.IntegerField(_(u"Surface (m2)"), blank=True, null=True)
remains = models.ManyToManyField("RemainType", verbose_name=_(u'Remains'),
null=True, blank=True)
- towns = models.ManyToManyField(Town, verbose_name=_(u"Towns"))
+ towns = models.ManyToManyField(Town, verbose_name=_(u"Towns"),
+ related_name='operations')
cost = models.IntegerField(_(u"Cost (euros)"),
blank=True, null=True) # preventive
periods = models.ManyToManyField(Period, verbose_name=_(u"Periods"),
diff --git a/scripts/2016-09-29-clean-dup-towns-pdl.py b/scripts/2016-09-29-clean-dup-towns-pdl.py
new file mode 100644
index 000000000..ebacb2fdf
--- /dev/null
+++ b/scripts/2016-09-29-clean-dup-towns-pdl.py
@@ -0,0 +1,51 @@
+from ishtar_common.models import Town
+
+
+dup_nb = 0
+pdl = []
+DPTS = ('44', '49', '53', '72', '85')
+
+for dpt in DPTS:
+ for town in Town.objects.filter(numero_insee__startswith=dpt):
+ pdl.append(town.pk)
+ for dup in Town.objects.filter(name=town.name).exclude(pk=town.pk):
+ not_dup = False
+ for d in DPTS:
+ if dup.numero_insee.startswith(d):
+ not_dup = True
+ if not_dup:
+ continue
+ for item in dup.file_main.all():
+ item.main_town = town
+ p = item.save()
+ for item in dup.parcels.all():
+ item.main_town = town
+ p = item.save()
+ for item in dup.file.all():
+ item.towns.remove(dup)
+ item.towns.add(town)
+ for item in dup.operations.all():
+ item.towns.remove(dup)
+ item.towns.add(town)
+ dup_nb += 1
+ dup.delete()
+
+
+print("{} items cleaned".format(dup_nb))
+
+strange = []
+for town in Town.objects.exclude(pk__in=pdl):
+ if (town.file_main.count() or town.parcels.count() or town.file.count() or
+ town.operations.count()):
+ strange.append((town, town.file_main.count(), town.parcels.count(),
+ town.file.count(), town.operations.count()))
+ continue
+ town.delete()
+
+
+print('* Problems with:')
+for t in strange:
+ print("{}: \n\t* {} ville principale dossier\n\t* {} parcelles\n\t* {} "
+ "villes pour"
+ " dossier\n\t* {} ville pour operation".format(t[0], t[1], t[2],
+ t[3], t[4]))