Skip to content

Commit 2cf79bb

Browse files
committed
Move update_telechat from idrfc.utils to doc.utils, port remaining
code to using log_state_changed from doc.utils, remove idrfc/utils.py - Legacy-Id: 6050
1 parent a8fefd9 commit 2cf79bb

11 files changed

Lines changed: 83 additions & 147 deletions

File tree

ietf/doc/utils.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,3 +239,54 @@ def nice_consensus(consensus):
239239
False: "No"
240240
}
241241
return mapping[consensus]
242+
243+
def update_telechat(request, doc, by, new_telechat_date, new_returning_item=None):
244+
from ietf.doc.models import TelechatDocEvent
245+
246+
on_agenda = bool(new_telechat_date)
247+
248+
prev = doc.latest_event(TelechatDocEvent, type="scheduled_for_telechat")
249+
prev_returning = bool(prev and prev.returning_item)
250+
prev_telechat = prev.telechat_date if prev else None
251+
prev_agenda = bool(prev_telechat)
252+
253+
returning_item_changed = bool(new_returning_item != None and new_returning_item != prev_returning)
254+
255+
if new_returning_item == None:
256+
returning = prev_returning
257+
else:
258+
returning = new_returning_item
259+
260+
if returning == prev_returning and new_telechat_date == prev_telechat:
261+
# fully updated, nothing to do
262+
return
263+
264+
# auto-update returning item
265+
if (not returning_item_changed and on_agenda and prev_agenda
266+
and new_telechat_date != prev_telechat):
267+
returning = True
268+
269+
e = TelechatDocEvent()
270+
e.type = "scheduled_for_telechat"
271+
e.by = by
272+
e.doc = doc
273+
e.returning_item = returning
274+
e.telechat_date = new_telechat_date
275+
276+
if on_agenda != prev_agenda:
277+
if on_agenda:
278+
e.desc = "Placed on agenda for telechat - %s" % (new_telechat_date)
279+
else:
280+
e.desc = "Removed from agenda for telechat"
281+
elif on_agenda and new_telechat_date != prev_telechat:
282+
e.desc = "Telechat date has been changed to <b>%s</b> from <b>%s</b>" % (
283+
new_telechat_date, prev_telechat)
284+
else:
285+
# we didn't reschedule but flipped returning item bit - let's
286+
# just explain that
287+
if returning:
288+
e.desc = "Set telechat returning item indication"
289+
else:
290+
e.desc = "Removed telechat returning item indication"
291+
292+
e.save()

ietf/doc/views_conflict_review.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88
from django.template.loader import render_to_string
99
from django.conf import settings
1010

11-
from ietf.idrfc.utils import update_telechat
12-
13-
from ietf.doc.utils import log_state_changed
11+
from ietf.doc.utils import log_state_changed, update_telechat
1412

1513
from ietf.doc.models import save_document_in_history
1614
from ietf.doc.utils import create_ballot_if_not_open, close_open_ballots, get_document_content

ietf/doc/views_status_change.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
from django.template.loader import render_to_string
99
from django.conf import settings
1010

11-
from ietf.idrfc.utils import update_telechat
12-
from ietf.doc.utils import log_state_changed
11+
from ietf.doc.utils import log_state_changed, update_telechat
1312
from ietf.doc.models import save_document_in_history
1413

1514
from ietf.doc.utils import create_ballot_if_not_open, close_open_ballots, get_document_content

ietf/idrfc/expire.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
from django.template.loader import render_to_string
55
from django.db.models import Q
66

7-
import datetime, os, shutil, glob, re, itertools
7+
import datetime, os, shutil, glob, re
88

99
from ietf.utils.mail import send_mail, send_mail_subj
10-
from ietf.idrfc.utils import log_state_changed
1110
from ietf.doc.models import Document, DocEvent, State, save_document_in_history, IESG_SUBSTATE_TAGS
1211
from ietf.person.models import Person, Email
1312
from ietf.meeting.models import Meeting
13+
from ietf.doc.utils import log_state_changed
1414

1515
def expirable_draft(draft):
1616
"""Return whether draft is in an expirable state or not. This is
@@ -128,14 +128,14 @@ def expire_draft(doc):
128128
save_document_in_history(doc)
129129
if doc.latest_event(type='started_iesg_process'):
130130
dead_state = State.objects.get(used=True, type="draft-iesg", slug="dead")
131-
prev = doc.get_state("draft-iesg")
131+
prev_state = doc.friendly_state()
132132
prev_tag = doc.tags.filter(slug__in=IESG_SUBSTATE_TAGS)
133133
prev_tag = prev_tag[0] if prev_tag else None
134-
if prev != dead_state:
134+
if doc.get_state("draft-iesg") != dead_state:
135135
doc.set_state(dead_state)
136136
if prev_tag:
137137
doc.tags.remove(prev_tag)
138-
log_state_changed(None, doc, system, prev, prev_tag)
138+
log_state_changed(None, doc, system, doc.friendly_state(), prev_state)
139139

140140
e = DocEvent(doc=doc, by=system)
141141
e.type = "expired_document"

ietf/idrfc/lastcall.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@
44

55
from django.conf import settings
66

7-
from ietf.idrfc.mails import *
8-
from ietf.idrfc.utils import *
9-
107
from ietf.doc.models import *
118
from ietf.person.models import Person
9+
from ietf.doc.utils import log_state_changed
10+
from ietf.idrfc.mails import *
1211

1312
def request_last_call(request, doc):
1413
if not doc.latest_event(type="changed_ballot_writeup_text"):
@@ -45,15 +44,15 @@ def expire_last_call(doc):
4544

4645
save_document_in_history(doc)
4746

48-
prev = doc.get_state("draft-iesg")
47+
prev_state = doc.friendly_state()
4948
doc.set_state(state)
5049

5150
prev_tag = doc.tags.filter(slug__in=IESG_SUBSTATE_TAGS)
5251
prev_tag = prev_tag[0] if prev_tag else None
5352
if prev_tag:
5453
doc.tags.remove(prev_tag)
5554

56-
e = log_state_changed(None, doc, Person.objects.get(name="(System)"), prev, prev_tag)
55+
e = log_state_changed(None, doc, Person.objects.get(name="(System)"), doc.friendly_state(), prev_state)
5756

5857
doc.time = e.time
5958
doc.save()

ietf/idrfc/mails.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# generation of mails
22

3-
import textwrap
4-
from datetime import datetime, date, time, timedelta
3+
import textwrap, datetime
54

65
from django.template.loader import render_to_string
76
from django.utils.html import strip_tags
@@ -100,11 +99,11 @@ def generate_ballot_writeup(request, doc):
10099
return e
101100

102101
def generate_last_call_announcement(request, doc):
103-
expiration_date = date.today() + timedelta(days=14)
102+
expiration_date = datetime.date.today() + datetime.timedelta(days=14)
104103
cc = []
105104
if doc.group.type_id in ("individ", "area"):
106105
group = "an individual submitter"
107-
expiration_date += timedelta(days=14)
106+
expiration_date += datetime.timedelta(days=14)
108107
else:
109108
group = "the %s WG (%s)" % (doc.group.name, doc.group.acronym)
110109
if doc.group.list_email:

ietf/idrfc/utils.py

Lines changed: 0 additions & 103 deletions
This file was deleted.

ietf/idrfc/views_ballot.py

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from ietf.ipr.models import IprDetail
2222
from ietf.ipr.search import iprs_from_docs
2323
from ietf.idrfc.mails import *
24-
from ietf.idrfc.utils import *
2524
from ietf.idrfc.lastcall import request_last_call
2625

2726
from ietf.doc.utils import *
@@ -31,9 +30,6 @@
3130
from ietf.message.utils import infer_message
3231
from ietf.person.models import Person
3332

34-
from ietf.doc.utils import log_state_changed as docutil_log_state_changed
35-
from ietf.idrfc.utils import log_state_changed as idrfcutil_log_state_changed
36-
3733
BALLOT_CHOICES = (("yes", "Yes"),
3834
("noobj", "No Objection"),
3935
("discuss", "Discuss"),
@@ -57,14 +53,14 @@ def do_undefer_ballot(request, doc):
5753
prev_state = doc.friendly_state()
5854
if doc.type_id == 'draft':
5955
doc.set_state(State.objects.get(used=True, type="draft-iesg", slug='iesg-eva'))
60-
prev_tag = doc.tags.filter(slug__in=('point', 'ad-f-up', 'need-rev', 'extpty'))
56+
prev_tag = doc.tags.filter(slug__in=IESG_SUBSTATE_TAGS)
6157
prev_tag = prev_tag[0] if prev_tag else None
6258
if prev_tag:
6359
doc.tags.remove(prev_tag)
6460
elif doc.type_id == 'conflrev':
6561
doc.set_state(State.objects.get(used=True, type='conflrev',slug='iesgeval'))
6662

67-
e = docutil_log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
63+
e = log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
6864

6965
doc.time = e.time
7066
doc.save()
@@ -368,7 +364,7 @@ def defer_ballot(request, name):
368364
elif doc.type_id == 'conflrev':
369365
doc.set_state(State.objects.get(used=True, type='conflrev', slug='defer'))
370366

371-
e = docutil_log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
367+
e = log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
372368

373369
doc.time = e.time
374370
doc.save()
@@ -450,15 +446,15 @@ def lastcalltext(request, name):
450446
if "send_last_call_request" in request.POST:
451447
save_document_in_history(doc)
452448

453-
prev = doc.get_state("draft-iesg")
449+
prev_state = doc.friendly_state()
454450
doc.set_state(State.objects.get(used=True, type="draft-iesg", slug='lc-req'))
455451

456452
prev_tag = doc.tags.filter(slug__in=IESG_SUBSTATE_TAGS)
457453
prev_tag = prev_tag[0] if prev_tag else None
458454
if prev_tag:
459455
doc.tags.remove(prev_tag)
460456

461-
e = idrfcutil_log_state_changed(request, doc, login, prev, prev_tag)
457+
e = log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
462458

463459
doc.time = e.time
464460
doc.save()
@@ -669,6 +665,7 @@ def approve_ballot(request, name):
669665
else:
670666
new_state = State.objects.get(used=True, type="draft-iesg", slug="ann")
671667

668+
prev_friendly_state = doc.friendly_state()
672669
prev_state = doc.get_state("draft-iesg")
673670
if new_state.slug == "ann" and new_state.slug != prev_state.slug and not request.REQUEST.get("skiprfceditorpost"):
674671
# start by notifying the RFC Editor
@@ -705,7 +702,7 @@ def approve_ballot(request, name):
705702

706703
change_description = e.desc + " and state has been changed to %s" % doc.get_state("draft-iesg").name
707704

708-
e = idrfcutil_log_state_changed(request, doc, login, prev_state, prev_tag)
705+
e = log_state_changed(request, doc, login, doc.friendly_state(), prev_friendly_state)
709706

710707
doc.time = e.time
711708
doc.save()
@@ -770,24 +767,21 @@ def make_last_call(request, name):
770767

771768
save_document_in_history(doc)
772769

770+
prev_state = doc.get_state("draft-iesg")
773771
if doc.type.slug == 'draft':
774-
775-
prev = doc.get_state("draft-iesg")
776772
doc.set_state(State.objects.get(used=True, type="draft-iesg", slug='lc'))
777773

778-
prev_tag = doc.tags.filter(slug__in=('point', 'ad-f-up', 'need-rev', 'extpty'))
774+
prev_tag = doc.tags.filter(slug__in=IESG_SUBSTATE_TAGS)
779775
prev_tag = prev_tag[0] if prev_tag else None
780776
if prev_tag:
781777
doc.tags.remove(prev_tag)
782778

783-
e = idrfcutil_log_state_changed(request, doc, login, prev, prev_tag)
779+
e = log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
784780
change_description = "Last call has been made for %s and state has been changed to %s" % (doc.name, doc.get_state("draft-iesg").name)
785781

786782
elif doc.type.slug == 'statchg':
787-
788-
prev = doc.friendly_state()
789783
doc.set_state(State.objects.get(used=True, type="statchg", slug='in-lc'))
790-
e = docutil_log_state_changed(request, doc, login, doc.friendly_state(), prev)
784+
e = log_state_changed(request, doc, login, doc.friendly_state(), prev_state)
791785
change_description = "Last call has been made for %s and state has been changed to %s" % (doc.name, doc.friendly_state())
792786

793787
doc.time = e.time

0 commit comments

Comments
 (0)