Skip to content

Commit 97206c6

Browse files
committed
Added user notification about ballots closed automatically when creating a new ballot.
- Legacy-Id: 14471
1 parent 4488fd8 commit 97206c6

3 files changed

Lines changed: 16 additions & 8 deletions

File tree

ietf/doc/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ def authors(self):
342342
# If that assumption is violated, they will only expose the most recently created ballot
343343
def ballot_open(self, ballot_type_slug):
344344
e = self.latest_event(BallotDocEvent, ballot_type__slug=ballot_type_slug)
345-
return e and not e.type == "closed_ballot"
345+
return e if e and not e.type == "closed_ballot" else None
346346

347347
def latest_ballot(self):
348348
"""Returns the most recently created ballot"""

ietf/doc/utils.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,10 @@ def needed_ballot_positions(doc, active_positions):
176176

177177
return " ".join(answer)
178178

179-
def create_ballot(doc, by, ballot_slug, time=None):
180-
close_open_ballots(doc, by)
179+
def create_ballot(request, doc, by, ballot_slug, time=None):
180+
closed = close_open_ballots(doc, by)
181+
for e in closed:
182+
messages.warning(request, "Closed earlier open ballot created %s on '%s' for %s" % (e.time.strftime('%Y-%m-%d %H:%M'), e.ballot_type, e.doc.name, ))
181183
if time:
182184
e = BallotDocEvent(type="created_ballot", by=by, doc=doc, rev=doc.rev, time=time)
183185
else:
@@ -203,15 +205,21 @@ def create_ballot_if_not_open(request, doc, by, ballot_slug, time=None):
203205
return None
204206

205207
def close_ballot(doc, by, ballot_slug):
206-
if doc.ballot_open(ballot_slug):
208+
b = doc.ballot_open(ballot_slug)
209+
if b:
207210
e = BallotDocEvent(type="closed_ballot", doc=doc, rev=doc.rev, by=by)
208211
e.ballot_type = BallotType.objects.get(doc_type=doc.type,slug=ballot_slug)
209212
e.desc = 'Closed "%s" ballot' % e.ballot_type.name
210213
e.save()
214+
return b
211215

212216
def close_open_ballots(doc, by):
217+
closed = []
213218
for t in BallotType.objects.filter(doc_type=doc.type_id):
214-
close_ballot(doc, by, t.slug )
219+
e = close_ballot(doc, by, t.slug )
220+
if e:
221+
closed.append(e)
222+
return closed
215223

216224
def get_chartering_type(doc):
217225
chartering = ""

ietf/doc/views_charter.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,16 +152,16 @@ def change_state(request, name, option=None):
152152

153153
if charter_state.slug == "intrev" and group.type_id == "wg":
154154
if request.POST.get("ballot_wo_extern"):
155-
create_ballot(charter, by, "r-wo-ext")
155+
create_ballot(request, charter, by, "r-wo-ext")
156156
else:
157-
create_ballot(charter, by, "r-extrev")
157+
create_ballot(request, charter, by, "r-extrev")
158158
(e1, e2) = default_review_text(group, charter, by)
159159
e1.save()
160160
e2.save()
161161
e = default_action_text(group, charter, by)
162162
e.save()
163163
elif charter_state.slug in ["extrev","iesgrev"]:
164-
create_ballot(charter, by, "approve")
164+
create_ballot(request, charter, by, "approve")
165165
elif charter_state.slug == "approved":
166166
change_group_state_after_charter_approval(group, by)
167167
fix_charter_revision_after_approval(charter, by)

0 commit comments

Comments
 (0)