From c8ede78c6645ec7c215fe8cf7d892f49a1b329ff Mon Sep 17 00:00:00 2001 From: Gabriel Detraz Date: Sat, 18 Apr 2020 19:57:14 +0200 Subject: [PATCH] Fix doublons proprement en migration --- .../migrations/0107_fix_lowercase_domain.py | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 machines/migrations/0107_fix_lowercase_domain.py diff --git a/machines/migrations/0107_fix_lowercase_domain.py b/machines/migrations/0107_fix_lowercase_domain.py new file mode 100644 index 00000000..c9aebba2 --- /dev/null +++ b/machines/migrations/0107_fix_lowercase_domain.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations +from django.core.exceptions import ValidationError + +def fix_duplicate(apps, schema_editor): + db_alias = schema_editor.connection.alias + domain = apps.get_model("machines", "Domain") + machines_to_fix = list(filter(lambda m : not m.name.islower(), domain.objects.using(db_alias).all())) + for machine in machines_to_fix: + try: + machine.name = machine.name.lower() + machine.validate_unique() + machine.clean() + except ValidationError: + machine.name = machine.name.lower() + str(machine.interface_parent.id) + machine.clean() + machine.save() + +def unfix_duplicate(apps, schema_editor): + return + + +class Migration(migrations.Migration): + + dependencies = [("machines", "0106_auto_20191120_0159")] + + operations = [ + migrations.RunPython(fix_duplicate, unfix_duplicate), + ]