Skip to content

Commit feb4f93

Browse files
committed
Import new_revision events for the non-draft document types, this will
allow a more generic document history page; this will be important for charters, less important for other types, but might as well get it right from the beginning - Legacy-Id: 3940
1 parent f2a0506 commit feb4f93

6 files changed

Lines changed: 53 additions & 22 deletions

File tree

ietf/doc/models.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,6 @@ class DocReminder(models.Model):
283283
("changed_document", "Changed document metadata"),
284284
("added_comment", "Added comment"),
285285

286-
("uploaded", "Uploaded document"),
287286
("deleted", "Deleted document"),
288287

289288
# misc draft/RFC events

redesign/importing/import-groups.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from ietf.doc.utils import get_tags_for_stream_id
2020
from ietf.doc.models import Document
2121
from ietf.name.utils import name
22-
from redesign.importing.utils import old_person_to_person
22+
from redesign.importing.utils import old_person_to_person, make_revision_event
2323
from ietf.idtracker.models import AreaGroup, IETFWG, Area, AreaGroup, Acronym, AreaWGURL, IRTF, ChairsHistory, Role, AreaDirector
2424
from ietf.liaisons.models import SDOs
2525
from ietf.iesg.models import TelechatDates, Telechat, TelechatDate
@@ -389,7 +389,8 @@ def import_date_event(group, name, state_id, desc):
389389
import_date_event(group, "start", "active", "Started group")
390390
import_date_event(group, "concluded", "conclude", "Concluded group")
391391
# dormant_date is empty on all so don't bother with that
392-
392+
393+
# import charter
393394
charter = set_or_create_charter(group)
394395
if group.state_id in ("active", "conclude"):
395396
charter.rev = "01"
@@ -402,5 +403,8 @@ def import_date_event(group, name, state_id, desc):
402403
charter.time = e[0].time if e else group.time
403404
charter.save()
404405

406+
e = make_revision_event(charter, system)
407+
e.save()
408+
405409
# FIXME: missing fields from old: meeting_scheduled, email_keyword, meeting_scheduled_old
406410

redesign/importing/import-interim.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from ietf.meeting.models import *
2020
from ietf.person.models import *
2121
from ietf.doc.models import Document, DocAlias, State, DocEvent
22-
from redesign.importing.utils import old_person_to_person, dont_save_queries
22+
from redesign.importing.utils import old_person_to_person, dont_save_queries, make_revision_event
2323
from redesign.interim.models import *
2424
from ietf.name.models import *
2525
from ietf.name.utils import name
@@ -78,6 +78,7 @@
7878
session.modified = datetime.datetime.combine(m.date, datetime.time(0, 0, 0))
7979
session.save()
8080

81+
meeting = m
8182
interim_meeting = o
8283

8384
def import_material_kind(kind, doctype):
@@ -110,6 +111,7 @@ def import_material_kind(kind, doctype):
110111
d.external_url = o.filename # save filenames for now as they don't appear to be quite regular
111112
d.rev = "01"
112113
d.group = session.group
114+
d.time = datetime.datetime.combine(meeting.date, datetime.time(0, 0, 0)) # we may have better estimate below
113115

114116
d.save()
115117

@@ -120,29 +122,32 @@ def import_material_kind(kind, doctype):
120122
session.materials.add(d)
121123

122124
# try to create a doc event to figure out who uploaded it
125+
e = make_revision_event(d, system_person)
126+
123127
t = d.type_id
124128
if d.type_id == "slides":
125129
t = "slide, '%s" % d.title
126130
activities = InterimActivities.objects.filter(group_acronym_id=interim_meeting.group_acronym_id,
127131
meeting_num=interim_meeting.meeting_num,
128132
activity__startswith=t,
129133
activity__endswith="was uploaded").using(database)[:1]
134+
130135
if activities:
131136
a = activities[0]
132-
try:
133-
e = DocEvent.objects.get(doc=d, type="uploaded")
134-
except DocEvent.DoesNotExist:
135-
e = DocEvent(doc=d, type="uploaded")
137+
136138
e.time = datetime.datetime.combine(a.act_date, a.act_time)
137139
try:
138140
e.by = old_person_to_person(PersonOrOrgInfo.objects.get(pk=a.act_by)) or system_person
139141
except PersonOrOrgInfo.DoesNotExist:
140-
e.by = system_person
141-
e.desc = u"Uploaded %s" % d.type_id
142-
e.save()
142+
pass
143+
144+
d.time = e.time
145+
d.save()
143146
else:
144147
print "NO UPLOAD ACTIVITY RECORD for", d.name.encode("utf-8"), t.encode("utf-8"), interim_meeting.group_acronym_id, interim_meeting.meeting_num
145148

149+
e.save()
150+
146151

147152
import_material_kind(InterimAgenda, agenda_doctype)
148153
import_material_kind(InterimMinutes, minutes_doctype)

redesign/importing/import-liaison.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from ietf.liaisons.models import *
1919
from ietf.doc.models import Document, DocAlias
2020
from ietf.person.models import *
21-
from redesign.importing.utils import old_person_to_person
21+
from redesign.importing.utils import old_person_to_person, make_revision_event
2222
from ietf.name.models import *
2323
from ietf.name.utils import name
2424

@@ -45,6 +45,7 @@
4545
purpose_mapping[5] = purpose_mapping[3] # "Other" is mapped to "For information" as default
4646

4747
system_email = Email.objects.get(person__name="(System)")
48+
system_person = Person.objects.get(name="(System)")
4849
obviously_bogus_date = datetime.date(1970, 1, 1)
4950

5051
bodies = {
@@ -199,6 +200,12 @@ def lookup_group(**kwargs):
199200

200201
DocAlias.objects.get_or_create(document=attachment, name=attachment.name)
201202

203+
e = make_revision_event(attachment, system_person)
204+
if l.from_contact and l.from_contact.person:
205+
e.by = l.from_contact.person
206+
print e.by
207+
e.save()
208+
202209
l.attachments.add(attachment)
203210

204211

redesign/importing/import-meetings.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from ietf.proceedings.models import Meeting as MeetingOld, MeetingVenue, MeetingRoom, NonSession, WgMeetingSession, WgAgenda, Minute, Slide, WgProceedingsActivities, NotMeetingGroup
2121
from ietf.person.models import *
2222
from ietf.doc.models import Document, DocAlias, State, DocEvent
23-
from redesign.importing.utils import old_person_to_person, dont_save_queries
23+
from redesign.importing.utils import old_person_to_person, dont_save_queries, make_revision_event
2424
from ietf.name.models import *
2525
from ietf.name.utils import name
2626

@@ -261,7 +261,7 @@ def import_material_kind(kind, doctype):
261261
d.external_url = o.filename # save filenames for now as they don't appear to be quite regular
262262
d.rev = "01"
263263
d.group = session.group
264-
264+
d.time = datetime.datetime.combine(session.meeting.date, datetime.time(0, 0, 0)) # we may have better estimate below
265265
d.save()
266266

267267
d.set_state(State.objects.get(type=doctype, slug="active"))
@@ -271,6 +271,8 @@ def import_material_kind(kind, doctype):
271271
session.materials.add(d)
272272

273273
# try to create a doc event to figure out who uploaded it
274+
e = make_revision_event(d, system_person)
275+
274276
t = d.type_id
275277
if d.type_id == "slides":
276278
t = "slide, '%s" % d.title
@@ -280,20 +282,19 @@ def import_material_kind(kind, doctype):
280282
activity__endswith="was uploaded")[:1]
281283
if activities:
282284
a = activities[0]
283-
try:
284-
e = DocEvent.objects.get(doc=d, type="uploaded")
285-
except DocEvent.DoesNotExist:
286-
e = DocEvent(doc=d, type="uploaded")
285+
287286
e.time = datetime.datetime.combine(a.act_date, datetime.time(*[int(s) for s in a.act_time.split(":")]))
288287
try:
289288
e.by = old_person_to_person(a.act_by) or system_person
290289
except PersonOrOrgInfo.DoesNotExist:
291-
e.by = system_person
292-
e.desc = u"Uploaded %s" % d.type_id
293-
e.save()
290+
pass
291+
292+
d.time = e.time
293+
d.save()
294294
else:
295295
print "NO UPLOAD ACTIVITY RECORD for", d.name.encode("utf-8"), t.encode("utf-8"), wg_meeting_session.group_acronym_id, wg_meeting_session.meeting_id
296296

297+
e.save()
297298

298299
import_material_kind(WgAgenda, agenda_doctype)
299300
import_material_kind(Minute, minutes_doctype)

redesign/importing/utils.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
import datetime
2+
13
from ietf.utils import unaccent
24
from ietf.person.models import Person, Email, Alias
5+
from ietf.doc.models import NewRevisionDocEvent
36
from ietf.idtracker.models import EmailAddress
4-
import datetime
57

68
def clean_email_address(addr):
79
addr = addr.replace("!", "@").replace("(at)", "@") # some obvious @ replacements
@@ -158,6 +160,19 @@ def possibly_import_other_priority_email(email, old_email):
158160
Email.objects.create(address=addr, person=email.person,
159161
time=calc_email_import_time(old_email.priority))
160162

163+
def make_revision_event(doc, system_person):
164+
try:
165+
e = NewRevisionDocEvent.objects.get(doc=doc, type="new_revision")
166+
except NewRevisionDocEvent.DoesNotExist:
167+
e = NewRevisionDocEvent(doc=doc, type="new_revision")
168+
e.rev = doc.rev
169+
e.time = doc.time
170+
e.by = system_person
171+
e.desc = "Added new revision"
172+
173+
return e
174+
175+
161176
def dont_save_queries():
162177
# prevent memory from leaking when settings.DEBUG=True
163178
from django.db import connection

0 commit comments

Comments
 (0)