Replaced the custom message infrastructure in the nomcom app with django.contrib.messages

- Legacy-Id: 10618
This commit is contained in:
Robert Sparks 2015-12-21 20:46:56 +00:00
parent 2120b79d6b
commit 85c13d65b4
19 changed files with 59 additions and 160 deletions

View file

@ -140,7 +140,7 @@ class NomcomViewsTest(TestCase):
r = self.client.post(self.private_index_url, test_data)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertNotEqual(q('p.alert.alert-success'), [])
self.assertTrue(q('.alert-success'))
self.assertEqual(NomineePosition.objects.filter(state='accepted').count (), 1)
self.client.logout()
@ -152,7 +152,7 @@ class NomcomViewsTest(TestCase):
r = self.client.post(self.private_index_url, test_data)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertNotEqual(q('p.alert.alert-success'), [])
self.assertTrue(q('.alert-success'))
self.assertEqual(NomineePosition.objects.filter(state='declined').count (), 1)
self.client.logout()
@ -164,7 +164,7 @@ class NomcomViewsTest(TestCase):
r = self.client.post(self.private_index_url, test_data)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertNotEqual(q('p.alert.alert-success'), [])
self.assertTrue(q('.alert-success'))
self.assertEqual(NomineePosition.objects.filter(state='pending').count (), 1)
self.client.logout()
@ -1645,7 +1645,9 @@ class NoPublicKeyTests(TestCase):
response = self.client.get(url)
self.assertEqual(response.status_code,200)
q=PyQuery(response.content)
self.assertTrue(any(['not yet' in x.text for x in q('.alert-warning')]))
text_bits = [x.xpath('./text()') for x in q('.alert-warning')]
flat_text_bits = [item for sublist in text_bits for item in sublist]
self.assertTrue(any(['not yet' in y for y in flat_text_bits]))
self.assertEqual(bool(q('form:not(.navbar-form)')),expected_form)
self.client.logout()

View file

@ -106,11 +106,11 @@ def announcements(request):
@role_required("Nomcom")
def private_key(request, year):
nomcom = get_nomcom_by_year(year)
message = None
if request.session.get('NOMCOM_PRIVATE_KEY_%s' % year, None):
message = ('warning', 'You already have a private decryption key set for this session.')
messages.warning(request, 'You already have a private decryption key set for this session.')
else:
message = ('warning', "You don't have a private decryption key set for this session yet")
messages.warning(request, "You don't have a private decryption key set for this session yet")
back_url = request.GET.get('back_to', reverse('nomcom_private_index', None, args=(year, )))
if request.method == 'POST':
@ -125,7 +125,6 @@ def private_key(request, year):
'year': year,
'back_url': back_url,
'form': form,
'message': message,
'selected': 'private_key'}, RequestContext(request))
@ -134,10 +133,9 @@ def private_index(request, year):
nomcom = get_nomcom_by_year(year)
all_nominee_positions = NomineePosition.objects.get_by_nomcom(nomcom).not_duplicated()
is_chair = nomcom.group.has_role(request.user, "chair")
message = None
if is_chair and request.method == 'POST':
if nomcom.group.state_id != 'active':
message = ('warning', "This nomcom is not active. Request administrative assistance if Nominee state needs to change.")
messages.warning(request, "This nomcom is not active. Request administrative assistance if Nominee state needs to change.")
else:
action = request.POST.get('action')
nominations_to_modify = request.POST.getlist('selected')
@ -145,15 +143,15 @@ def private_index(request, year):
nominations = all_nominee_positions.filter(id__in=nominations_to_modify)
if action == "set_as_accepted":
nominations.update(state='accepted')
message = ('success', 'The selected nominations have been set as accepted')
messages.success(request,'The selected nominations have been set as accepted')
elif action == "set_as_declined":
nominations.update(state='declined')
message = ('success', 'The selected nominations have been set as declined')
messages.success(request,'The selected nominations have been set as declined')
elif action == "set_as_pending":
nominations.update(state='pending')
message = ('success', 'The selected nominations have been set as pending')
messages.success(request,'The selected nominations have been set as pending')
else:
message = ('warning', "Please, select some nominations to work with")
messages.warning(request, "Please, select some nominations to work with")
filters = {}
questionnaire_state = "questionnaire"
@ -195,7 +193,7 @@ def private_index(request, year):
'selected_position': selected_position and int(selected_position) or None,
'selected': 'index',
'is_chair': is_chair,
'message': message}, RequestContext(request))
}, RequestContext(request))
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -205,11 +203,13 @@ def send_reminder_mail(request, year, type):
has_publickey = nomcom.public_key and True or False
if not has_publickey:
message = ('warning', "This Nomcom does not yet have a public key.")
messages.warning(request, "This Nomcom does not yet have a public key.")
nomcom_ready = False
elif nomcom.group.state_id != 'active':
message = ('warning', "This Nomcom is not active.")
messages.warning(request, "This Nomcom is not active.")
nomcom_ready = False
else:
message = None
nomcom_ready = True
if type=='accept':
interesting_state = 'pending'
@ -239,17 +239,17 @@ def send_reminder_mail(request, year, type):
mail_template = DBTemplate.objects.filter(group=nomcom.group, path=mail_path)
mail_template = mail_template and mail_template[0] or None
if request.method == 'POST' and not message:
if request.method == 'POST' and nomcom_ready:
selected_nominees = request.POST.getlist('selected')
selected_nominees = nominees.filter(id__in=selected_nominees)
if selected_nominees:
addrs = send_reminder_to_nominees(selected_nominees,type)
if addrs:
message = ('success', 'A copy of "%s" has been sent to %s'%(mail_template.title,", ".join(addrs)))
messages.success(request, 'A copy of "%s" has been sent to %s'%(mail_template.title,", ".join(addrs)))
else:
message = ('warning', 'No messages were sent.')
messages.warning(request, 'No messages were sent.')
else:
message = ('warning', "Please, select at least one nominee")
messages.warning(request, "Please, select at least one nominee")
return render_to_response('nomcom/send_reminder_mail.html',
{'nomcom': nomcom,
@ -259,7 +259,6 @@ def send_reminder_mail(request, year, type):
'selected': selected_tab,
'reminder_description': reminder_description,
'state_description': state_description,
'message': message,
'is_chair_task' : True,
}, RequestContext(request))
@ -268,15 +267,14 @@ def send_reminder_mail(request, year, type):
def private_merge(request, year):
nomcom = get_nomcom_by_year(year)
if nomcom.group.state_id != 'active':
message = ('warning', "This Nomcom is not active.")
messages.warning(request, "This Nomcom is not active.")
form = None
else:
message = None
if request.method == 'POST':
form = MergeForm(request.POST, nomcom=nomcom)
if form.is_valid():
form.save()
message = ('success', 'The emails have been unified')
messages.success(request, 'The emails have been unified')
else:
form = MergeForm(nomcom=nomcom)
@ -284,7 +282,6 @@ def private_merge(request, year):
{'nomcom': nomcom,
'year': year,
'form': form,
'message': message,
'selected': 'merge',
'is_chair_task' : True,
}, RequestContext(request))
@ -338,22 +335,19 @@ def nominate(request, year, public, newperson):
template = 'nomcom/private_nominate.html'
if not has_publickey:
message = ('warning', "This Nomcom is not yet accepting nominations")
messages.warning(request, "This Nomcom is not yet accepting nominations")
return render_to_response(template,
{'message': message,
'nomcom': nomcom,
{'nomcom': nomcom,
'year': year,
'selected': 'nominate'}, RequestContext(request))
if nomcom.group.state_id == 'conclude':
message = ('warning', "Nominations to this Nomcom are closed.")
messages.warning(request, "Nominations to this Nomcom are closed.")
return render_to_response(template,
{'message': message,
'nomcom': nomcom,
{'nomcom': nomcom,
'year': year,
'selected': 'nominate'}, RequestContext(request))
message = None
if request.method == 'POST':
if newperson:
form = NominateNewPersonForm(data=request.POST, nomcom=nomcom, user=request.user, public=public)
@ -361,7 +355,7 @@ def nominate(request, year, public, newperson):
form = NominateForm(data=request.POST, nomcom=nomcom, user=request.user, public=public)
if form.is_valid():
form.save()
message = ('success', 'Your nomination has been registered. Thank you for the nomination.')
messages.success(request, 'Your nomination has been registered. Thank you for the nomination.')
if newperson:
## This needs to redirect to the normal nominate URL instead.
## Need to weed out the custom message stuff.
@ -376,7 +370,6 @@ def nominate(request, year, public, newperson):
return render_to_response(template,
{'form': form,
'message': message,
'nomcom': nomcom,
'year': year,
'selected': 'nominate'}, RequestContext(request))
@ -418,9 +411,8 @@ def feedback(request, year, public):
base_template = "nomcom/nomcom_private_base.html"
if not has_publickey:
message = ('warning', "This Nomcom is not yet accepting comments")
messages.warning(request, "This Nomcom is not yet accepting comments")
return render(request, 'nomcom/feedback.html', {
'message': message,
'nomcom': nomcom,
'year': year,
'selected': 'feedback',
@ -428,14 +420,13 @@ def feedback(request, year, public):
'base_template': base_template
})
message = None
if nominee and position and request.method == 'POST':
form = FeedbackForm(data=request.POST,
nomcom=nomcom, user=request.user,
public=public, position=position, nominee=nominee)
if form.is_valid():
form.save()
message = ('success', 'Your feedback has been registered.')
messages.success(request, 'Your feedback has been registered.')
form = None
else:
if nominee and position:
@ -446,7 +437,6 @@ def feedback(request, year, public):
return render(request, 'nomcom/feedback.html', {
'form': form,
'message': message,
'nomcom': nomcom,
'year': year,
'positions': positions,
@ -460,20 +450,20 @@ def feedback(request, year, public):
def private_feedback_email(request, year):
nomcom = get_nomcom_by_year(year)
has_publickey = nomcom.public_key and True or False
message = None
template = 'nomcom/private_feedback_email.html'
if not has_publickey:
message = ('warning', "This Nomcom is not yet accepting feedback email.")
messages.warning(request, "This Nomcom is not yet accepting feedback email.")
nomcom_ready = False
elif nomcom.group.state_id != 'active':
message = ('warning', "This Nomcom is not active, and is not accepting feedback email.")
messages.warning(request, "This Nomcom is not active, and is not accepting feedback email.")
nomcom_ready = False
else:
pass
nomcom_ready = True
if message:
if not nomcom_ready:
return render_to_response(template,
{'message': message,
'nomcom': nomcom,
{'nomcom': nomcom,
'year': year,
'selected': 'feedback_email',
'is_chair_task' : True,
@ -487,35 +477,33 @@ def private_feedback_email(request, year):
if form.is_valid():
form.save()
form = FeedbackEmailForm(nomcom=nomcom)
message = ('success', 'The feedback email has been registered.')
messages.success(request, 'The feedback email has been registered.')
return render_to_response(template,
{'form': form,
'message': message,
'nomcom': nomcom,
'year': year,
'selected': 'feedback_email'}, RequestContext(request))
@role_required("Nomcom Chair", "Nomcom Advisor")
def private_questionnaire(request, year):
nomcom = get_nomcom_by_year(year)
has_publickey = nomcom.public_key and True or False
message = None
questionnaire_response = None
template = 'nomcom/private_questionnaire.html'
if not has_publickey:
message = ('warning', "This Nomcom is not yet accepting questionnaires.")
messages.warning(request, "This Nomcom is not yet accepting questionnaires.")
nomcom_ready = False
elif nomcom.group.state_id != 'active':
message = ('warning', "This Nomcom is not active, and is not accepting questionnaires.")
messages.warning(request, "This Nomcom is not active, and is not accepting questionnaires.")
nomcom_ready = False
else:
pass
nomcom_ready = True
if message:
if not nomcom_ready:
return render_to_response(template,
{'message': message,
'nomcom': nomcom,
{'nomcom': nomcom,
'year': year,
'selected': 'questionnaire',
'is_chair_task' : True,
@ -526,7 +514,7 @@ def private_questionnaire(request, year):
nomcom=nomcom, user=request.user)
if form.is_valid():
form.save()
message = ('success', 'The questionnaire response has been registered.')
messages.success(request, 'The questionnaire response has been registered.')
questionnaire_response = form.cleaned_data['comments']
form = QuestionnaireForm(nomcom=nomcom, user=request.user)
else:
@ -535,7 +523,6 @@ def private_questionnaire(request, year):
return render_to_response(template,
{'form': form,
'questionnaire_response': questionnaire_response,
'message': message,
'nomcom': nomcom,
'year': year,
'selected': 'questionnaire'}, RequestContext(request))
@ -560,10 +547,7 @@ def process_nomination_status(request, year, nominee_position_id, state, date, h
return HttpResponseForbidden("The nomination already was %s" % nominee_position.state)
state = get_object_or_404(NomineePositionStateName, slug=state)
message = ('warning',
("Click on 'Save' to set the state of your nomination to %s to %s (this"+
" is not a final commitment - you can notify us later if you need to change this).") %
(nominee_position.position.name, state.name))
messages.info(request, "Click on 'Save' to set the state of your nomination to %s to %s (this is not a final commitment - you can notify us later if you need to change this)." % (nominee_position.position.name, state.name))
if request.method == 'POST':
form = NominationResponseCommentForm(request.POST)
if form.is_valid():
@ -586,13 +570,11 @@ def process_nomination_status(request, year, nominee_position_id, state, date, h
f.positions.add(nominee_position.position)
f.nominees.add(nominee_position.nominee)
message = ('success', 'Your nomination on %s has been set as %s' % (nominee_position.position.name,
state.name))
messages.success(request, 'Your nomination on %s has been set as %s' % (nominee_position.position.name, state.name))
else:
form = NominationResponseCommentForm()
return render_to_response('nomcom/process_nomination_status.html',
{'message': message,
'nomcom': nomcom,
{'nomcom': nomcom,
'year': year,
'nominee_position': nominee_position,
'state': state,
@ -663,9 +645,6 @@ def view_feedback_pending(request, year):
if nomcom.group.state_id == 'conclude':
return HttpResponseForbidden("This nomcom is concluded.")
extra_ids = None
message = None
for message in messages.get_messages(request):
message = ('success', message.message)
FeedbackFormSet = modelformset_factory(Feedback,
form=PendingFeedbackForm,
extra=0)
@ -728,7 +707,7 @@ def view_feedback_pending(request, year):
for form in formset.forms:
form.set_nomcom(nomcom, request.user, extra)
if moved:
message = ('success', '%s messages classified. You must enter more information for the following feedback.' % moved)
messages.success(request, '%s messages classified. You must enter more information for the following feedback.' % moved)
else:
messages.success(request, 'Feedback saved')
return redirect('nomcom_view_feedback_pending', year=year)
@ -749,7 +728,6 @@ def view_feedback_pending(request, year):
{'year': year,
'selected': 'feedback_pending',
'formset': formset,
'message': message,
'extra_step': extra_step,
'type_dict': type_dict,
'extra_ids': extra_ids,
@ -802,14 +780,13 @@ def view_feedback_nominee(request, year, nominee_id):
def edit_nominee(request, year, nominee_id):
nomcom = get_nomcom_by_year(year)
nominee = get_object_or_404(Nominee, id=nominee_id)
message = None
if request.method == 'POST':
form = EditNomineeForm(request.POST,
instance=nominee)
if form.is_valid():
form.save()
message = ('success', 'The nominee has been changed')
messages.success(request, 'The nominee has been changed')
else:
form = EditNomineeForm(instance=nominee)
@ -818,7 +795,6 @@ def edit_nominee(request, year, nominee_id):
'selected': 'index',
'nominee': nominee,
'form': form,
'message': message,
'nomcom': nomcom,
'is_chair_task' : True,
}, RequestContext(request))
@ -829,9 +805,9 @@ def edit_nomcom(request, year):
nomcom = get_nomcom_by_year(year)
if nomcom.public_key:
message = ('warning', 'Previous data will remain encrypted with the old key')
messages.warning(request, 'Previous data will remain encrypted with the old key')
else:
message = ('warning', 'This Nomcom does not yet have a public key')
messages.warning(request, 'This Nomcom does not yet have a public key')
ReminderDateInlineFormSet = inlineformset_factory(parent_model=NomCom,
model=ReminderDates,
@ -849,7 +825,7 @@ def edit_nomcom(request, year):
form.save()
formset.save()
formset = ReminderDateInlineFormSet(instance=nomcom)
message = ('success', 'The nomcom has been changed')
messages.success(request, 'The nomcom has been changed')
else:
formset = ReminderDateInlineFormSet(instance=nomcom)
form = EditNomcomForm(instance=nomcom)
@ -858,7 +834,6 @@ def edit_nomcom(request, year):
{'form': form,
'formset': formset,
'nomcom': nomcom,
'message': message,
'year': year,
'selected': 'edit_nomcom',
'is_chair_task' : True,

View file

@ -1,6 +1,7 @@
<!DOCTYPE html> {% load ietf_filters staticfiles %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}{% origin %}
{% load bootstrap3 %}
<html lang="en">
<head>
<meta charset="utf-8">
@ -83,15 +84,7 @@
</nav>
{% endwith %}
<div class="container-fluid">
{% if messages %}
<div class="row">
<div class="col-lg-12">
{% for message in messages %}
<p class="alert alert-info {% if message.tags %}{{ message.tags }}{% endif %}">{{ message }}</p>
{% endfor %}
</div>
</div>
{% endif %}
{% bootstrap_messages %}
{% if request.COOKIES.left_menu != "off" and not hide_menu %} {# ugly hack for the more or less unported meeting agenda edit pages #}
<div class="row">
<div class="col-md-2 visible-md visible-lg leftmenu">

View file

@ -12,9 +12,6 @@
{% block nomcom_content %}
{% origin %}
{% comment %} Why isn't this part of the base templates? {% endcomment %}
{% bootstrap_messages %}
<div class="col-sm-2 col-sm-offset-10 hidden-xs hidden-print bs-docs-sidebar" id="nav-instructions">
<ul class="nav nav-pills nav-stacked small" data-spy="affix">
<li><a href="#keys">Keypair</a></li>

View file

@ -10,8 +10,6 @@
{% origin %}
<h2>Edit members</h2>
{% bootstrap_messages %}
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -14,12 +14,6 @@
{% origin %}
<h2>Settings</h2>
{% if message %}
<div class="alert alert-{{ message.0 }}">{{ message.1 }}</div>
{% endif %}
{% bootstrap_messages %}
<form enctype="multipart/form-data" method="post">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -8,14 +8,9 @@
{% block nomcom_content %}
{% origin %}
{% bootstrap_messages %}
<h2>Edit email<br><small>{{ nominee }}</small></h2>
{% if message %}
<p class="alert alert-{{ message.0 }}">{{ message.1 }}</p>
{% endif %}
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -15,8 +15,6 @@
{% origin %}
<h2>{% if position %}Edit{% else %}Add{% endif %} position</h2>
{% bootstrap_messages %}
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -26,12 +26,6 @@
{% endif %}
</p>
{% if message %}
<p class="alert alert-{{ message.0 }}">{{ message.1 }}</p>
{% endif %}
{% bootstrap_messages %}
{% if nomcom|has_publickey %}
<div class="row">
<div id="nominees" class="col-sm-4 col-sm-push-8">

View file

@ -8,13 +8,8 @@
{% block nomcom_content %}
{% origin %}
{% if message %}
<div class="alert alert-{{ message.0 }}">{{ message.1 }}</div>
{% endif %}
{% if form %}
{% bootstrap_messages %}
<form id="paste-email-feedback-form" method="post">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -100,9 +100,6 @@
</table>
{% if is_chair %}
{% if message %}
<p class="alert alert-{{ message.0 }}">{{ message.1 }}</p>
{% endif %}
{% if nomcom.group.state_id == 'active' %}
<div class="form-group">

View file

@ -10,10 +10,6 @@
{% origin %}
<h2>Enter private key</h2>
{% if message %}
<p class="alert alert-{{ message.0 }}">{{ message.1 }}</p>
{% endif %}
<p>In order to access the {{ nomcom.group }} data you have to enter your private key. Please paste it in the text area below. The key must be in the following format:</p>
<pre>

View file

@ -26,12 +26,6 @@
primary address is the one which the nominee prefers at the time.
</p>
{% if message %}
<div class="alert alert-{{ message.0 }}">{{ message.1 }}</div>
{% endif %}
{% bootstrap_messages %}
{% if form %}
<form id="mergeform" method="post">
{% csrf_token %}

View file

@ -17,12 +17,6 @@
{% origin %}
<h2>Candidate nomination</h2>
{% bootstrap_messages %}
{% if message %}
<p class="alert alert-{{ message.0 }}">{{ message.1 }}</p>
{% endif %}
{% if form %}
<form id="nominate-form" method="post">

View file

@ -9,18 +9,12 @@
{% block nomcom_content %}
{% if message %}
<p class="alert alert-{{ message.0 }}">{{ message.1 }}</p>
{% endif %}
{% if form %}
{% if questionnaire_response %}
<h2>Questionnaire response</h2>
{{ questionnaire_response }}
{% endif %}
{% bootstrap_messages %}
<form id="questionnnaireform" method="post">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -8,9 +8,6 @@
{% block nomcom_content %}
{% origin %}
{% if message %}
<div class="alert alert-{{ message.0 }}">{{ message.1 }}</div>
{% endif %}
{% if need_confirmation %}
<form method="post">

View file

@ -15,11 +15,6 @@
{% block nomcom_content %}
{% origin %}
{% if message %}
<p class="alert alert-{{ message.0 }}">{{ message.1 }}</p>
{% endif %}
{% bootstrap_messages %}
{% if form %}
<form id="nominate-form" method="post">

View file

@ -26,12 +26,6 @@
<p>The message that will be sent is shown below the list of nominees. </p>
{% endif %}
{% bootstrap_messages %}
{% if message %}
<div class="alert alert-{{ message.0 }}">{{ message.1 }}</div>
{% endif %}
{% if nomcom.group.state_id == 'active' %}
<form id="reminderform " method="post">
{% csrf_token %}

View file

@ -15,9 +15,6 @@
{% origin %}
<h2>Feedback pending from email list</h2>
{% if message %}
<p class="alert alert-{{ message.0 }}">{{ message.1 }}</p>
{% endif %}
{% if formset.forms %}
<form method="post">