diff --git a/gracedb/alerts/migrations/0002_add_created_updated_verified_time_fields_to_contact.py b/gracedb/alerts/migrations/0002_add_created_updated_verified_time_fields_to_contact.py new file mode 100644 index 0000000000000000000000000000000000000000..313e1d6ea2325a023942db5830ada981f42e86a7 --- /dev/null +++ b/gracedb/alerts/migrations/0002_add_created_updated_verified_time_fields_to_contact.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.18 on 2019-05-03 17:31 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +def set_verified_time_default(apps, schema_editor): + Contact = apps.get_model('alerts', 'Contact') + + # Data migration to set verified_time for all contacts + # which are already verified + for c in Contact.objects.filter(verified=True).iterator(): + c.verified_time = c.updated + c.save(update_fields=['verified_time']) + + +class Migration(migrations.Migration): + + dependencies = [ + ('alerts', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='contact', + name='created', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='contact', + name='updated', + field=models.DateTimeField(auto_now=True), + ), + migrations.AddField( + model_name='contact', + name='verified_time', + field=models.DateTimeField(blank=True, editable=False, null=True), + ), + migrations.RunPython( + set_verified_time_default, + migrations.RunPython.noop + ), + ] diff --git a/gracedb/alerts/migrations/0003_add_created_updated_time_fields_to_notification.py b/gracedb/alerts/migrations/0003_add_created_updated_time_fields_to_notification.py new file mode 100644 index 0000000000000000000000000000000000000000..6b64254763657c80824bec68ac8b5d2234fa2d62 --- /dev/null +++ b/gracedb/alerts/migrations/0003_add_created_updated_time_fields_to_notification.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.18 on 2019-05-03 17:59 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('alerts', '0002_add_created_updated_verified_time_fields_to_contact'), + ] + + operations = [ + migrations.AddField( + model_name='notification', + name='created', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='notification', + name='updated', + field=models.DateTimeField(auto_now=True), + ), + ] diff --git a/gracedb/alerts/models.py b/gracedb/alerts/models.py index 3d992fb5d1761bdb3ed3ddc570b04ac9ad44af72..a21988b752c9ad5b0238218b730ac6f574da4304 100644 --- a/gracedb/alerts/models.py +++ b/gracedb/alerts/models.py @@ -50,6 +50,10 @@ class Contact(CleanSaveModel): verified = models.BooleanField(default=False, editable=False) verification_code = models.IntegerField(null=True, editable=False) verification_expiration = models.DateTimeField(null=True, editable=False) + # Fields for tracking when certain things happen + created = models.DateTimeField(auto_now_add=True) + updated = models.DateTimeField(auto_now=True) + verified_time = models.DateTimeField(null=True, blank=True, editable=False) def __str__(self): @@ -129,8 +133,10 @@ class Contact(CleanSaveModel): body=msg) def verify(self): - self.verified = True - self.save(update_fields=['verified']) + if not self.verified: + self.verified = True + self.verified_time = timezone.now() + self.save(update_fields=['verified', 'verified_time']) def display(self): if self.email: @@ -149,10 +155,13 @@ class Contact(CleanSaveModel): Contact "{description}" (user {username}) E-mail: {email} Phone: {phone} (method={method}) - Verified: {verified} + Created: {created_time} + Last updated: {updated_time} + Verified: {verified} ({verified_time}) """).format(description=self.description, username=self.user.username, email=self.email, phone=self.phone, method=self.phone_method, - verified=self.verified) + created_time=self.created, updated_time=self.updated, + verified=self.verified, verified_time=self.verified_time) print(info_str) @@ -176,6 +185,9 @@ class Notification(models.Model): category = models.CharField(max_length=1, null=False, blank=False, choices=NOTIFICATION_CATEGORY_CHOICES, default=NOTIFICATION_CATEGORY_SUPEREVENT) + # Fields for tracking when certain things happen + created = models.DateTimeField(auto_now_add=True) + updated = models.DateTimeField(auto_now=True) # Whether the event possibly has a neutron star in it. # The logic for determining this is defined in a method below. ns_candidate = models.BooleanField(default=False)