Added a migration to remove most duplicate 'Upload' doc events.

- Legacy-Id: 12098
This commit is contained in:
Henrik Levkowetz 2016-10-06 18:40:04 +00:00
parent 8a5593e714
commit e06ac44060

View file

@ -0,0 +1,67 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
import debug # pyflakes:ignore
verbose = False
def note(s):
if verbose:
print(s)
def clean_up_duplicate_upload_docevents(apps, schema_editor):
DocEvent = apps.get_model('doc', 'DocEvent')
DocHistory = apps.get_model('doc', 'DocHistory')
def get_dochistory(e):
return DocHistory.objects.filter(time__lte=e.time,doc__name=e.doc.name).order_by('-time', '-pk').first()
def rev(e):
if hasattr(e, 'newrevisiondocevent'):
return e.newrevisiondocevent.rev
else:
h = get_dochistory(e)
if h:
return h.rev
else:
return " "
events = DocEvent.objects.filter(time__gt='2016-09-10', doc__type='draft', desc='Uploaded new revision').order_by('id')
docs = set()
for e in events:
docs.add(e.doc)
for doc in docs:
note("\n%s" % doc.name)
docevents = list(events.filter(doc=doc))
prev = docevents[0]
for i, event in enumerate(docevents):
if rev(event) != rev(prev):
note("")
if event.time < prev.time:
print( " *** Timestamp discrepancy:")
note((u" %6d %s %-20s %s %s" % (event.id, event.time, event.by.name[:24], rev(event), event.desc[:64].replace('\n',''), )).encode('utf-8'))
if event.by.name == '(System)':
for j in range(i+1, len(docevents)):
next = docevents[j]
if rev(next) == rev(event):
note((u" Deleting event %6d %s %-20s %s" % (event.id, event.time, event.by.name[:24], rev(event), )).encode('utf-8'))
event.delete()
break
prev = event
return False
def noop(apps, schema_editor):
pass
class Migration(migrations.Migration):
dependencies = [
('submit', '0015_fix_bad_submission_docevents'),
]
operations = [
migrations.RunPython(clean_up_duplicate_upload_docevents, noop)
]