Skip to content

Commit e06ac44

Browse files
committed
Added a migration to remove most duplicate 'Upload' doc events.
- Legacy-Id: 12098
1 parent 8a5593e commit e06ac44

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import migrations
5+
6+
import debug # pyflakes:ignore
7+
8+
verbose = False
9+
def note(s):
10+
if verbose:
11+
print(s)
12+
13+
14+
def clean_up_duplicate_upload_docevents(apps, schema_editor):
15+
DocEvent = apps.get_model('doc', 'DocEvent')
16+
DocHistory = apps.get_model('doc', 'DocHistory')
17+
18+
def get_dochistory(e):
19+
return DocHistory.objects.filter(time__lte=e.time,doc__name=e.doc.name).order_by('-time', '-pk').first()
20+
21+
def rev(e):
22+
if hasattr(e, 'newrevisiondocevent'):
23+
return e.newrevisiondocevent.rev
24+
else:
25+
h = get_dochistory(e)
26+
if h:
27+
return h.rev
28+
else:
29+
return " "
30+
31+
events = DocEvent.objects.filter(time__gt='2016-09-10', doc__type='draft', desc='Uploaded new revision').order_by('id')
32+
docs = set()
33+
for e in events:
34+
docs.add(e.doc)
35+
for doc in docs:
36+
note("\n%s" % doc.name)
37+
docevents = list(events.filter(doc=doc))
38+
prev = docevents[0]
39+
for i, event in enumerate(docevents):
40+
if rev(event) != rev(prev):
41+
note("")
42+
if event.time < prev.time:
43+
print( " *** Timestamp discrepancy:")
44+
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'))
45+
if event.by.name == '(System)':
46+
for j in range(i+1, len(docevents)):
47+
next = docevents[j]
48+
if rev(next) == rev(event):
49+
note((u" Deleting event %6d %s %-20s %s" % (event.id, event.time, event.by.name[:24], rev(event), )).encode('utf-8'))
50+
event.delete()
51+
break
52+
prev = event
53+
return False
54+
55+
def noop(apps, schema_editor):
56+
pass
57+
58+
59+
class Migration(migrations.Migration):
60+
61+
dependencies = [
62+
('submit', '0015_fix_bad_submission_docevents'),
63+
]
64+
65+
operations = [
66+
migrations.RunPython(clean_up_duplicate_upload_docevents, noop)
67+
]

0 commit comments

Comments
 (0)