diff options
Diffstat (limited to 'chimere/scripts/migrate_properties.py')
| -rwxr-xr-x | chimere/scripts/migrate_properties.py | 79 | 
1 files changed, 79 insertions, 0 deletions
| diff --git a/chimere/scripts/migrate_properties.py b/chimere/scripts/migrate_properties.py new file mode 100755 index 0000000..5fcc982 --- /dev/null +++ b/chimere/scripts/migrate_properties.py @@ -0,0 +1,79 @@ +#!/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 migrated system: all previous +data in the new description field will be overload by the data from the +property model. + +""") +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 propertie(s) deleted.\n" % (idx+1)) +property_model.delete() +sys.stdout.write("* Property model deleted.\n") + | 
