From e4f5d6afcd616bdaaa16793f6b182fe743244d00 Mon Sep 17 00:00:00 2001 From: Fredrik Jonsson <frjo@xdeb.org> Date: Fri, 7 Sep 2018 17:04:37 +0200 Subject: [PATCH] Added date fields to reviews. --- .../migrate_proposal_determinations.py | 3 ++- .../commands/migration_review_base.py | 12 +++++++++ .../review/migrations/0011_add_date_fields.py | 25 +++++++++++++++++++ opentech/apply/review/models.py | 7 ++++-- 4 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 opentech/apply/review/migrations/0011_add_date_fields.py diff --git a/opentech/apply/determinations/management/commands/migrate_proposal_determinations.py b/opentech/apply/determinations/management/commands/migrate_proposal_determinations.py index d8afec47b..a43b335ec 100644 --- a/opentech/apply/determinations/management/commands/migrate_proposal_determinations.py +++ b/opentech/apply/determinations/management/commands/migrate_proposal_determinations.py @@ -209,7 +209,8 @@ 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. + # Dan Blah hade one extra admin account uid 52 in old system, + # all content should be set to uid 2 in the new system. if uid == '52': uid = '2' try: diff --git a/opentech/apply/review/management/commands/migration_review_base.py b/opentech/apply/review/management/commands/migration_review_base.py index d00b1a72c..8cd7c9891 100644 --- a/opentech/apply/review/management/commands/migration_review_base.py +++ b/opentech/apply/review/management/commands/migration_review_base.py @@ -1,6 +1,8 @@ import argparse import json +from datetime import datetime, timezone + from django.contrib.auth import get_user_model from django.core.management.base import BaseCommand from django.db import transaction @@ -103,6 +105,16 @@ class MigrateCommand(BaseCommand): except Review.DoesNotExist: review = Review(drupal_id=node['nid']) + # Disable auto_* on date fields so imported dates are used. + for field in review._meta.local_fields: + if field.name == "created_at": + field.auto_now_add = False + elif field.name == "updated_at": + field.auto_now = False + + # TODO timezone? + review.created_at = datetime.fromtimestamp(int(node['created']), timezone.utc) + review.updated_at = datetime.fromtimestamp(int(node['changed']), timezone.utc) review.author = self.get_user(node['uid']) review.recommendation = self.get_recommendation(node) review.submission = self.get_submission(node) diff --git a/opentech/apply/review/migrations/0011_add_date_fields.py b/opentech/apply/review/migrations/0011_add_date_fields.py new file mode 100644 index 000000000..7758db9f8 --- /dev/null +++ b/opentech/apply/review/migrations/0011_add_date_fields.py @@ -0,0 +1,25 @@ +# Generated by Django 2.0.2 on 2018-09-07 15:01 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('review', '0010_review_drupal_id'), + ] + + operations = [ + migrations.AddField( + model_name='review', + name='created_at', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now, verbose_name='Creation time'), + preserve_default=False, + ), + migrations.AddField( + model_name='review', + name='updated_at', + field=models.DateTimeField(auto_now=True, verbose_name='Update time'), + ), + ] diff --git a/opentech/apply/review/models.py b/opentech/apply/review/models.py index e7247750b..361a8d0c3 100644 --- a/opentech/apply/review/models.py +++ b/opentech/apply/review/models.py @@ -5,6 +5,7 @@ from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver from django.urls import reverse +from django.utils.translation import ugettext_lazy as _ from wagtail.admin.edit_handlers import FieldPanel, StreamFieldPanel from wagtail.core.fields import StreamField @@ -116,9 +117,11 @@ class Review(ReviewFormFieldsMixin, BaseStreamForm, AccessFormData, models.Model form_data = JSONField(default=dict, encoder=DjangoJSONEncoder) - recommendation = models.IntegerField(verbose_name="Recommendation", choices=RECOMMENDATION_CHOICES, default=0) + recommendation = models.IntegerField(verbose_name=_("Recommendation"), choices=RECOMMENDATION_CHOICES, default=0) score = models.DecimalField(max_digits=10, decimal_places=1, default=0) - is_draft = models.BooleanField(default=False, verbose_name="Draft") + is_draft = models.BooleanField(default=False, verbose_name=_("Draft")) + created_at = models.DateTimeField(verbose_name=_("Creation time"), auto_now_add=True) + updated_at = models.DateTimeField(verbose_name=_("Update time"), auto_now=True) # Meta: used for migration purposes only drupal_id = models.IntegerField(null=True, blank=True, editable=False) -- GitLab