Skip to content

Commit 65e5298

Browse files
committed
Be more careful in handling Document.stream now that it can be null
- Legacy-Id: 3865
1 parent df1a915 commit 65e5298

6 files changed

Lines changed: 19 additions & 8 deletions

File tree

ietf/doc/utils.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ def get_state_types(doc):
88

99
res.append(doc.type_id)
1010

11-
#if doc.type_id in ("agenda", "minutes", "slides", "liai-att"):
12-
# res.append(doc.type_id)
1311
if doc.type_id == "draft":
14-
if doc.stream_id != "legacy":
12+
if doc.stream_id and doc.stream_id != "legacy":
1513
res.append("draft-stream-%s" % doc.stream_id)
1614

1715
res.append("draft-iesg")

ietf/idrfc/testsREDESIGN.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,6 @@ def test_start_iesg_process_on_draft(self):
257257
time=datetime.datetime.now(),
258258
type_id="draft",
259259
title="Testing adding a draft",
260-
stream_id="ietf",
261260
group=Group.objects.get(acronym="mars"),
262261
abstract="Test test test.",
263262
rev="01",
@@ -297,7 +296,7 @@ def test_start_iesg_process_on_draft(self):
297296

298297
r = self.client.post(url,
299298
dict(intended_std_level=str(draft.intended_std_level_id),
300-
stream=draft.stream_id,
299+
stream="ietf",
301300
via_rfc_editor="1",
302301
ad=ad.pk,
303302
create_in_state=State.objects.get(type="draft-iesg", slug="watching").pk,

ietf/ietfworkflows/accounts.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,12 @@ def is_authorized_in_draft_streamREDESIGN(user, draft):
8383
if is_secretariat(user):
8484
return True
8585

86-
# must be a chair or delegate of the stream group (or draft group)
8786
from ietf.doc.models import Document
87+
88+
if not super(Document, draft).stream:
89+
return False
90+
91+
# must be a chair or delegate of the stream group (or draft group)
8892
group_req = Q(group__acronym=super(Document, draft).stream.slug)
8993
if draft.group and super(Document, draft).stream.slug == "ietf":
9094
group_req |= Q(group=draft.group)
@@ -118,7 +122,7 @@ def can_edit_stream(user, draft):
118122
return is_secretariat(user)
119123

120124
def can_adopt(user, draft):
121-
if settings.USE_DB_REDESIGN_PROXY_CLASSES and (not draft.stream or draft.stream_id == "ietf") and draft.group.type_id == "individ":
125+
if settings.USE_DB_REDESIGN_PROXY_CLASSES and (not draft.stream_id or draft.stream_id == "ietf") and draft.group.type_id == "individ":
122126
person = get_person_for_user(user)
123127
if not person:
124128
return False

ietf/ietfworkflows/forms.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,9 @@ def get_transitions(self):
199199

200200
def get_next_states(self):
201201
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
202+
if not self.draft.stream_id:
203+
return []
204+
202205
from ietf.doc.models import State
203206
state_type = "draft-stream-%s" % self.draft.stream_id
204207
s = self.draft.get_state(state_type)
@@ -226,6 +229,9 @@ def get_next_states(self):
226229

227230
def get_states(self):
228231
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
232+
if not self.draft.stream_id:
233+
return []
234+
229235
from ietf.doc.models import State
230236
states = State.objects.filter(type="draft-stream-%s" % self.draft.stream_id)
231237
if self.draft.stream_id == "ietf" and self.draft.group:

ietf/ietfworkflows/tests.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ def test_set_state(self):
141141

142142
def test_set_stream(self):
143143
draft = make_test_data()
144+
draft.stream = None
145+
draft.save()
144146

145147
url = urlreverse('edit_stream', kwargs=dict(name=draft.name))
146148
login_testing_unauthorized(self, "secretary", url)

ietf/ietfworkflows/utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,9 @@ def update_stream(request, doc, comment, person, to_stream, extra_notify=[]):
390390
doc.save()
391391

392392
e = DocEvent(type="changed_stream", time=doc.time, by=person, doc=doc)
393-
e.desc = u"Stream changed to <b>%s</b> from %s" % (to_stream.name, from_stream.name)
393+
e.desc = u"Stream changed to <b>%s</b>" % to_stream.name
394+
if from_stream:
395+
e.desc += u"from %s" % from_stream.name
394396
e.save()
395397

396398
receivers = get_notification_receivers(doc, extra_notify)

0 commit comments

Comments
 (0)