datatracker/ietf/doc/migrations/0023_set_docevent_rev_data.py

71 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
# Generated by Django 1.10.5 on 2017-03-04 08:30
from __future__ import unicode_literals, print_function
from tqdm import tqdm
from django.db import migrations
import debug # pyflakes:ignore
from ietf.doc.models import DocHistory
def ename(event):
return u"%s %s by %s at %s" % (event.doc.name, event.get_type_display().lower(), event.by.name, event.time)
def get_dochistory(event):
h = DocHistory.objects.filter(time__lte=event.time,doc__name=event.doc.name).order_by('-time', '-pk')
if not h.exists():
h = DocHistory.objects.filter(time__gte=event.time,doc__name=event.doc.name).order_by('time', 'pk')
return h
def get_history_rev(e):
h = e.get_dochistory()
rev = None
if h.exists():
for i in h:
if i.rev:
break
if i and i.rev:
rev = i.rev
return rev
def forwards(apps,schema_editor):
DocEvent = apps.get_model('doc', 'DocEvent')
DocEvent.get_dochistory = get_dochistory
NewRevisionDocEvent = apps.get_model('doc', 'NewRevisionDocEvent')
SubmissionDocEvent = apps.get_model('doc', 'SubmissionDocEvent')
print("\nProcessing NewRevisionDocEvents:")
for e in tqdm(list(NewRevisionDocEvent.objects.filter(rev=''))):
if e.revision:
e.rev = e.revision
e.save()
print("\nProcessing SubmissionDocEvents:")
for e in tqdm(list(SubmissionDocEvent.objects.filter(rev=''))):
if e.revision:
e.rev = e.revision
e.save()
print("\nProcessing remaining DocEvents:")
for e in tqdm(list(DocEvent.objects.filter(rev=''))):
rev = get_history_rev(e)
if rev:
e.rev = rev
e.save()
def backwards(apps,schema_editor):
DocEvent = apps.get_model('doc', 'DocEvent')
print("\nProcessing DocEvents:")
for e in tqdm(list(DocEvent.objects.exclude(rev=''))):
e.rev = ''
e.save()
class Migration(migrations.Migration):
dependencies = [
('doc', '0022_add_docevent_rev'),
]
operations = [
migrations.RunPython(forwards, backwards),
]