From cf5ac68b09b8f7b45a6810524872460f60cf814f Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 24 Aug 2016 15:37:25 +0000 Subject: [PATCH] Renumbered and updated the migrations merged in from the eventsaving work. Made the dochistory-adding migration idempotent, and added progress indication as this migration may take as much as an hour to run. - Legacy-Id: 11854 --- .../doc/migrations/0012_auto_20160207_0537.py | 2 +- ...027_1127.py => 0013_auto_20151027_1127.py} | 31 ++++++++++++++++--- ...930_0758.py => 0009_auto_20150930_0758.py} | 4 +-- 3 files changed, 29 insertions(+), 8 deletions(-) rename ietf/doc/migrations/{0011_auto_20151027_1127.py => 0013_auto_20151027_1127.py} (78%) rename ietf/group/migrations/{0007_auto_20150930_0758.py => 0009_auto_20150930_0758.py} (98%) diff --git a/ietf/doc/migrations/0012_auto_20160207_0537.py b/ietf/doc/migrations/0012_auto_20160207_0537.py index 85b239812..897799377 100644 --- a/ietf/doc/migrations/0012_auto_20160207_0537.py +++ b/ietf/doc/migrations/0012_auto_20160207_0537.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models, migrations diff --git a/ietf/doc/migrations/0011_auto_20151027_1127.py b/ietf/doc/migrations/0013_auto_20151027_1127.py similarity index 78% rename from ietf/doc/migrations/0011_auto_20151027_1127.py rename to ietf/doc/migrations/0013_auto_20151027_1127.py index 7c58f84f3..01dce5678 100644 --- a/ietf/doc/migrations/0011_auto_20151027_1127.py +++ b/ietf/doc/migrations/0013_auto_20151027_1127.py @@ -1,6 +1,8 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- from __future__ import unicode_literals +import sys + from django.db import migrations def fix_buggy_author_foreignkey(apps, schema_editor): @@ -17,6 +19,10 @@ def save_all_documents_in_history(apps, schema_editor): DocumentAuthor = apps.get_model("doc", "DocumentAuthor") DocHistoryAuthor = apps.get_model("doc", "DocHistoryAuthor") + sys.stderr.write('\n' + ' Ensuring that all documents have document history entries.\n' + ' This could take as much as an hour to run.\n') + def canonical_name(self): name = self.name state = State.objects.filter(document=self, type_id=self.type_id).first() @@ -38,6 +44,8 @@ def save_all_documents_in_history(apps, schema_editor): def save_document_in_history(doc): """Save a snapshot of document and related objects in the database.""" + + def get_model_fields_as_dict(obj): return dict((field.name, getattr(obj, field.name)) for field in obj._meta.fields @@ -48,8 +56,21 @@ def save_all_documents_in_history(apps, schema_editor): fields["doc"] = doc fields["name"] = canonical_name(doc) - dochist = DocHistory(**fields) - dochist.save() + objs = DocHistory.objects.filter(**fields) + if objs.exists(): + try: + dochist = objs.get(**fields) + sys.stderr.write('.') + except DocHistory.MultipleObjectsReturned: + dochist_list = list(objs) + for dochist in dochist_list[1:]: + dochist.delete() + dochist = dochist_list[0] + sys.stderr.write('-') + else: + dochist = DocHistory(**fields) + dochist.save() + sys.stderr.write('+') # copy many to many for field in doc._meta.many_to_many: @@ -82,8 +103,8 @@ def save_all_documents_in_history(apps, schema_editor): class Migration(migrations.Migration): dependencies = [ - ('doc', '0010_auto_20150930_0251'), - ('group', '0007_auto_20150930_0758'), + ('doc', '0012_auto_20160207_0537'), + ('group', '0009_auto_20150930_0758'), ] operations = [ diff --git a/ietf/group/migrations/0007_auto_20150930_0758.py b/ietf/group/migrations/0009_auto_20150930_0758.py similarity index 98% rename from ietf/group/migrations/0007_auto_20150930_0758.py rename to ietf/group/migrations/0009_auto_20150930_0758.py index 0515fb990..e84626a50 100644 --- a/ietf/group/migrations/0007_auto_20150930_0758.py +++ b/ietf/group/migrations/0009_auto_20150930_0758.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- from __future__ import unicode_literals import os, datetime @@ -108,7 +108,7 @@ class Migration(migrations.Migration): dependencies = [ ('doc', '0010_auto_20150930_0251'), - ('group', '0006_auto_20150718_0509'), + ('group', '0008_auto_20160505_0523'), ] operations = [