1
0
Fork 0
satnogs-db/db/base/migrations/0037_add_reviewer_and_date_...

87 lines
4.1 KiB
Python

# Generated by Django 3.1.5 on 2021-03-08 22:59
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
def add_review_details(apps, schema_editor):
TransmitterEntry = apps.get_model('base', 'TransmitterEntry')
orphans = TransmitterEntry.objects.filter(created_by__isnull=True, is_reviewed=True)
for entry in orphans:
entry.reviewed = entry.created
entry.save()
ids = []
non_orphans = TransmitterEntry.objects.filter(created_by__isnull=False, is_reviewed=True).order_by('created')
for entry in non_orphans:
if entry.id in ids:
entry.delete()
continue
next_entries = TransmitterEntry.objects.filter(created_by__isnull=False, is_reviewed=True).filter(uuid=entry.uuid).filter(created__gt=entry.created).order_by('created')
for next_entry in next_entries:
if (entry.uuid == next_entry.uuid and entry.description == next_entry.description and
entry.status == next_entry.status and entry.type == next_entry.type and entry.uplink_low == next_entry.uplink_low and
entry.uplink_high == next_entry.uplink_high and entry.uplink_drift == next_entry.uplink_drift and
entry.downlink_low == next_entry.downlink_low and entry.downlink_high == next_entry.downlink_high and
entry.downlink_drift == next_entry.downlink_drift and entry.downlink_mode == next_entry.downlink_mode and
entry.uplink_mode == next_entry.uplink_mode and entry.invert == next_entry.invert and entry.baud == next_entry.baud and
entry.satellite == next_entry.satellite and entry.reviewed == next_entry.reviewed and entry.approved == next_entry.approved and
entry.citation == next_entry.citation and entry.service == next_entry.service and entry.coordination == next_entry.coordination and
entry.coordination_url == next_entry.coordination_url):
ids.append(next_entry.id)
entry.reviewed = next_entry.created
entry.reviewer = next_entry.created_by
entry.save()
break
else:
entry.reviewed = entry.created
entry.reviewer = entry.created_by
entry.save()
def remove_review_details(apps, schema_editor):
TransmitterEntry = apps.get_model('base', 'TransmitterEntry')
non_orphans = TransmitterEntry.objects.filter(created_by__isnull=False, is_reviewed=True).order_by('created')
for entry in non_orphans:
entry.pk = None
entry.created = entry.reviewed
entry.created_by = entry.reviewer
entry.save()
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('base', '0036_rename_reviewed_field_on_transmitter_entry_model'),
]
operations = [
migrations.AddField(
model_name='transmitterentry',
name='reviewed',
field=models.DateTimeField(blank=True, help_text='Timestamp of review', null=True),
),
migrations.AddField(
model_name='transmitterentry',
name='reviewer',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='reviewed_transmitters', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='transmitterentry',
name='created',
field=models.DateTimeField(default=django.utils.timezone.now, help_text='Timestamp of creation/edit'),
),
migrations.AlterField(
model_name='transmitterentry',
name='created_by',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_transmitters', to=settings.AUTH_USER_MODEL),
),
migrations.AlterUniqueTogether(
name='transmitterentry',
unique_together={('uuid', 'reviewed')},
),
migrations.RunPython(add_review_details, remove_review_details),
]