From c13195b306273bdad099e33988e67addf9dc0ca5 Mon Sep 17 00:00:00 2001
From: Fredrik Jonsson <frjo@xdeb.org>
Date: Fri, 7 Sep 2018 14:45:28 +0200
Subject: [PATCH] Disable auto_* on date fields so imported dates are used.

---
 .../activity/management/commands/migrate_comments.py   |  4 ++++
 .../commands/migrate_concept_determinations.py         |  7 +++++++
 .../commands/migrate_proposal_determinations.py        | 10 ++++++++++
 .../apply/funds/management/commands/migration_base.py  |  5 +++++
 4 files changed, 26 insertions(+)

diff --git a/opentech/apply/activity/management/commands/migrate_comments.py b/opentech/apply/activity/management/commands/migrate_comments.py
index 59bfd12b1..d03da81e7 100644
--- a/opentech/apply/activity/management/commands/migrate_comments.py
+++ b/opentech/apply/activity/management/commands/migrate_comments.py
@@ -39,6 +39,10 @@ class Command(BaseCommand):
                 type='comment',
                 visibility='internal',
             )
+            # Disable auto_* on date fields so imported dates are used.
+            for field in activity._meta.local_fields:
+                if field.name == "timestamp":
+                    field.auto_now_add = False
             try:
                 activity.save()
                 self.stdout.write(f"Processed \"{comment['subject']}\" ({comment['cid']})")
diff --git a/opentech/apply/determinations/management/commands/migrate_concept_determinations.py b/opentech/apply/determinations/management/commands/migrate_concept_determinations.py
index 7e61f0b05..ce73c9362 100644
--- a/opentech/apply/determinations/management/commands/migrate_concept_determinations.py
+++ b/opentech/apply/determinations/management/commands/migrate_concept_determinations.py
@@ -67,6 +67,13 @@ class Command(BaseCommand):
         except Determination.DoesNotExist:
             determination = Determination(drupal_id=node['nid'])
 
+        # Disable auto_* on date fields so imported dates are used.
+        for field in determination._meta.local_fields:
+            if field.name == "created_at":
+                field.auto_now_add = False
+            elif field.name == "updated_at":
+                field.auto_now = False
+
         # TODO timezone?
         determination.created_at = datetime.fromtimestamp(int(node['created']), timezone.utc)
         determination.updated_at = datetime.fromtimestamp(int(node['changed']), timezone.utc)
diff --git a/opentech/apply/determinations/management/commands/migrate_proposal_determinations.py b/opentech/apply/determinations/management/commands/migrate_proposal_determinations.py
index b503d0ef7..d8afec47b 100644
--- a/opentech/apply/determinations/management/commands/migrate_proposal_determinations.py
+++ b/opentech/apply/determinations/management/commands/migrate_proposal_determinations.py
@@ -119,6 +119,13 @@ class Command(BaseCommand):
         except Determination.DoesNotExist:
             determination = Determination(drupal_id=node['nid'])
 
+        # Disable auto_* on date fields so imported dates are used.
+        for field in determination._meta.local_fields:
+            if field.name == "created_at":
+                field.auto_now_add = False
+            elif field.name == "updated_at":
+                field.auto_now = False
+
         # TODO timezone?
         determination.created_at = datetime.fromtimestamp(int(node['created']), timezone.utc)
         determination.updated_at = datetime.fromtimestamp(int(node['changed']), timezone.utc)
@@ -202,6 +209,9 @@ class Command(BaseCommand):
         return value
 
     def get_user(self, uid):
+        # Dan Blah hade one admin account uid 52, all should be set up uid 2 in new system.
+        if uid == '52':
+            uid = '2'
         try:
             User = get_user_model()
             return User.objects.get(drupal_id=uid)
diff --git a/opentech/apply/funds/management/commands/migration_base.py b/opentech/apply/funds/management/commands/migration_base.py
index d469324f5..547f8b205 100644
--- a/opentech/apply/funds/management/commands/migration_base.py
+++ b/opentech/apply/funds/management/commands/migration_base.py
@@ -80,6 +80,11 @@ class MigrateCommand(BaseCommand):
         except ApplicationSubmission.DoesNotExist:
             submission = ApplicationSubmission(drupal_id=node['nid'])
 
+        # Disable auto_* on date fields so imported dates are used.
+        for field in submission._meta.local_fields:
+            if field.name == "submit_time":
+                field.auto_now_add = False
+
         # TODO timezone?
         submission.submit_time = datetime.fromtimestamp(int(node['created']), timezone.utc)
         submission.user = self.get_user(node['uid'])
-- 
GitLab