Added a migration to remove most duplicate 'Upload' doc events.
- Legacy-Id: 12098
This commit is contained in:
parent
8a5593e714
commit
e06ac44060
|
@ -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)
|
||||||
|
]
|
Loading…
Reference in a new issue