Skip to content

Commit 40081ed

Browse files
committed
Don't try to add a ballot's AD email addresses to a new version notification email if there's no ballot. Also did some linguistic fixes, and got rid of a wildcard import.
- Legacy-Id: 4809
1 parent 93f6971 commit 40081ed

2 files changed

Lines changed: 30 additions & 25 deletions

File tree

ietf/submit/utils.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121

2222
# Some useful states
2323
UPLOADED = 1
24-
WAITING_AUTHENTICATION = 4
24+
AWAITING_AUTHENTICATION = 4
2525
MANUAL_POST_REQUESTED = 5
2626
POSTED = -1
2727
POSTED_BY_SECRETARIAT = -2
28-
CANCELED = -4
28+
CANCELLED = -4
2929
INITIAL_VERSION_APPROVAL_REQUESTED = 10
3030

3131

@@ -261,9 +261,11 @@ def announce_new_versionREDESIGN(request, submission, draft, state_change_msg):
261261
if draft.ad:
262262
to_email.append(draft.ad.role_email("ad").address)
263263

264-
for ad, pos in draft.active_ballot().active_ad_positions().iteritems():
265-
if pos and pos.pos_id == "discuss":
266-
to_email.append(ad.role_email("ad").address)
264+
active_ballot = draft.active_ballot()
265+
if active_ballot:
266+
for ad, pos in active_ballot.active_ad_positions().iteritems():
267+
if pos and pos.pos_id == "discuss":
268+
to_email.append(ad.role_email("ad").address)
267269

268270
subject = 'New Version Notification - %s-%s.txt' % (submission.filename, submission.revision)
269271
from_email = settings.IDSUBMIT_ANNOUNCE_FROM_EMAIL

ietf/submit/views.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
11
# Copyright The IETF Trust 2007, All Rights Reserved
2+
import datetime
3+
24
from django.conf import settings
3-
from django.core.urlresolvers import reverse
5+
from django.core.urlresolvers import reverse as urlreverse
46
from django.contrib.sites.models import Site
57
from django.http import HttpResponseRedirect, Http404, HttpResponseForbidden, HttpResponseNotAllowed
68
from django.shortcuts import get_object_or_404
79
from django.shortcuts import render_to_response
810
from django.template import RequestContext
9-
from django.core.exceptions import ObjectDoesNotExist
1011

11-
from ietf.submit.models import IdSubmissionDetail, Preapproval
12-
from ietf.submit.forms import UploadForm, AutoPostForm, MetaDataForm, PreapprovalForm
13-
from ietf.submit.utils import *
12+
from ietf.group.models import Group
1413
from ietf.utils.mail import send_mail
1514
from ietf.ietfauth.decorators import has_role, role_required
16-
15+
from ietf.submit.models import IdSubmissionDetail, Preapproval
16+
from ietf.submit.forms import UploadForm, AutoPostForm, MetaDataForm, PreapprovalForm
17+
from ietf.submit.utils import UPLOADED, AWAITING_AUTHENTICATION, MANUAL_POST_REQUESTED, CANCELLED, POSTED, INITIAL_VERSION_APPROVAL_REQUESTED
18+
from ietf.submit.utils import is_secretariat, get_approvable_submissions, get_preapprovals, get_recently_approved, get_person_for_user, perform_post, remove_docs, request_full_url
19+
from ietf.submit.utils import DraftValidation
1720

1821
def submit_index(request):
1922
if request.method == 'POST':
2023
try:
2124
form = UploadForm(request=request, data=request.POST, files=request.FILES)
2225
if form.is_valid():
2326
submit = form.save()
24-
return HttpResponseRedirect(reverse(draft_status, None, kwargs={'submission_id': submit.submission_id, 'submission_hash': submit.get_hash()}))
27+
return HttpResponseRedirect(urlreverse(draft_status, None, kwargs={'submission_id': submit.submission_id, 'submission_hash': submit.get_hash()}))
2528
except IOError, e:
2629
if "Client read error" in str(e): # The server got an IOError when trying to read POST data
2730
form = UploadForm(request=request)
@@ -44,7 +47,7 @@ def submit_status(request):
4447
filename = request.POST.get('filename', '')
4548
detail = IdSubmissionDetail.objects.filter(filename=filename).order_by('-pk')
4649
if detail:
47-
return HttpResponseRedirect(reverse(draft_status, None, kwargs={'submission_id': detail[0].submission_id}))
50+
return HttpResponseRedirect(urlreverse(draft_status, None, kwargs={'submission_id': detail[0].submission_id}))
4851
error = 'No valid history found for %s' % filename
4952
return render_to_response('submit/submit_status.html',
5053
{'selected': 'status',
@@ -64,14 +67,14 @@ def _can_approve(user, detail):
6467

6568
def _can_force_post(user, detail):
6669
if detail.status_id not in [MANUAL_POST_REQUESTED,
67-
WAITING_AUTHENTICATION, INITIAL_VERSION_APPROVAL_REQUESTED]:
70+
AWAITING_AUTHENTICATION, INITIAL_VERSION_APPROVAL_REQUESTED]:
6871
return None
6972
if is_secretariat(user):
7073
return True
7174
return False
7275

7376
def _can_cancel(user, detail, submission_hash):
74-
if detail.status_id in [CANCELED, POSTED]:
77+
if detail.status_id in [CANCELLED, POSTED]:
7578
return None
7679
if is_secretariat(user):
7780
return True
@@ -100,8 +103,8 @@ def draft_status(request, submission_id, submission_hash=None, message=None):
100103
can_approve = _can_approve(request.user, detail)
101104
can_cancel = _can_cancel(request.user, detail, submission_hash)
102105
if detail.status_id != UPLOADED:
103-
if detail.status_id == CANCELED:
104-
message = ('error', 'This submission has been canceled, modification is no longer possible')
106+
if detail.status_id == CANCELLED:
107+
message = ('error', 'This submission has been cancelled, modification is no longer possible')
105108
status = detail.status
106109
allow_edit = None
107110

@@ -127,7 +130,7 @@ def draft_status(request, submission_id, submission_hash=None, message=None):
127130
send_mail(request, to_email, from_email, subject, 'submit/submission_approval.txt',
128131
{'submitter': submitter, 'authors': authors,
129132
'draft': detail, 'domain': Site.objects.get_current().domain})
130-
return HttpResponseRedirect(reverse(draft_status, None, kwargs={'submission_id': detail.submission_id}))
133+
return HttpResponseRedirect(urlreverse(draft_status, None, kwargs={'submission_id': detail.submission_id}))
131134
else:
132135
auto_post_form.save(request)
133136
detail = get_object_or_404(IdSubmissionDetail, submission_id=submission_id)
@@ -142,9 +145,9 @@ def draft_status(request, submission_id, submission_hash=None, message=None):
142145
else:
143146
submission_hash = detail.get_hash()
144147
if submission_hash:
145-
return HttpResponseRedirect(reverse('draft_edit_by_hash', None, kwargs={'submission_id': detail.submission_id, 'submission_hash': submission_hash}))
148+
return HttpResponseRedirect(urlreverse('draft_edit_by_hash', None, kwargs={'submission_id': detail.submission_id, 'submission_hash': submission_hash}))
146149
else:
147-
return HttpResponseRedirect(reverse(draft_edit, None, kwargs={'submission_id': detail.submission_id }))
150+
return HttpResponseRedirect(urlreverse(draft_edit, None, kwargs={'submission_id': detail.submission_id }))
148151
else:
149152
auto_post_form = AutoPostForm(draft=detail, validation=validation)
150153

@@ -180,10 +183,10 @@ def draft_cancel(request, submission_id, submission_hash=None):
180183
if can_cancel == None:
181184
raise Http404
182185
return HttpResponseForbidden('You have no permission to perform this action')
183-
detail.status_id = CANCELED
186+
detail.status_id = CANCELLED
184187
detail.save()
185188
remove_docs(detail)
186-
return HttpResponseRedirect(reverse(draft_status, None, kwargs={'submission_id': submission_id}))
189+
return HttpResponseRedirect(urlreverse(draft_status, None, kwargs={'submission_id': submission_id}))
187190

188191

189192
def draft_edit(request, submission_id, submission_hash=None):
@@ -199,7 +202,7 @@ def draft_edit(request, submission_id, submission_hash=None):
199202
form = MetaDataForm(draft=detail, validation=validation, data=request.POST)
200203
if form.is_valid():
201204
form.save(request)
202-
return HttpResponseRedirect(reverse(draft_status, None, kwargs={'submission_id': detail.submission_id}))
205+
return HttpResponseRedirect(urlreverse(draft_status, None, kwargs={'submission_id': detail.submission_id}))
203206
else:
204207
form = MetaDataForm(draft=detail, validation=validation)
205208
return render_to_response('submit/draft_edit.html',
@@ -217,7 +220,7 @@ def draft_confirm(request, submission_id, auth_key):
217220
message = None
218221
if auth_key != detail.auth_key:
219222
message = ('error', 'Incorrect authorization key')
220-
elif detail.status_id != WAITING_AUTHENTICATION:
223+
elif detail.status_id != AWAITING_AUTHENTICATION:
221224
message = ('error', 'The submission can not be autoposted because it is in state: %s' % detail.status.status_value)
222225
else:
223226
if request.method=='POST':
@@ -240,7 +243,7 @@ def draft_approve(request, submission_id, check_function=_can_approve):
240243
raise Http404
241244
return HttpResponseForbidden('You have no permission to perform this action')
242245
perform_post(request, detail)
243-
return HttpResponseRedirect(reverse(draft_status, None, kwargs={'submission_id': submission_id}))
246+
return HttpResponseRedirect(urlreverse(draft_status, None, kwargs={'submission_id': submission_id}))
244247

245248

246249
def draft_force(request, submission_id):

0 commit comments

Comments
 (0)