summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchimere/scripts/migrate_properties.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/chimere/scripts/migrate_properties.py b/chimere/scripts/migrate_properties.py
new file mode 100755
index 0000000..7cf673a
--- /dev/null
+++ b/chimere/scripts/migrate_properties.py
@@ -0,0 +1,78 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# This script is used to migrate properties data in description field
+# It is only used when migration to version 2.0
+
+import sys
+sys.path.append('.')
+sys.path.append('..')
+
+from django.core.management import setup_environ
+import settings
+
+setup_environ(settings)
+
+from django.db import connection, transaction
+
+cursor = connection.cursor()
+
+from chimere.models import PropertyModel, Property
+
+sys.stdout.write("""
+This script is used to migrate properties data in the new description
+field.
+It is only useful when migrating to version 2.0.
+
+WARNING: once the data is migrated the property model and all the
+associated data are removed.
+
+WARNING: this should be used only on a new migrating system: all data
+in the new description field will be erased.
+
+""")
+response = None
+while response not in ('y', 'n'):
+ sys.stdout.write("Do you want to continue (y/n)? ")
+ response = raw_input()
+if response == "n":
+ sys.exit(0)
+if not PropertyModel.objects.count():
+ sys.stdout.write("There is no property model available.\n")
+ sys.exit(0)
+
+sys.stdout.write("\nAvailable property models:\n")
+property_models = list(PropertyModel.objects.all())
+for idx, property_model in enumerate(property_models):
+ sys.stdout.write(" * %d - %s\n" % (idx+1, property_model.name))
+
+response = 0
+while not (response > 0 and response <= len(property_models)):
+ sys.stdout.write("Choose the property model to migrate: ")
+ response = raw_input()
+ try:
+ response = int(response)
+ except ValueError:
+ response = 0
+
+property_model = property_models[response-1]
+
+while response not in ('y', 'n'):
+ sys.stdout.write("Are you sure you want to migrate %s (y/n)? " % \
+ property_model.name)
+ response = raw_input()
+if response == "n":
+ sys.exit(0)
+
+idx = 0
+for idx, property in enumerate(Property.objects.filter(
+ propertymodel=property_model)):
+ property.marker.description = property.value
+ property.marker.save()
+
+sys.stdout.write("* %d marker(s) updated.\n" % (idx+1))
+Property.objects.filter(propertymodel=property_model).delete()
+sys.stdout.write("* %d properties deleted.\n" % (idx+1))
+property_model.delete()
+sys.stdout.write("* Property model deleted.\n")
+