Skip to content
This repository has been archived by the owner on Feb 13, 2022. It is now read-only.

Commit

Permalink
Merge pull request #84 from praekelt/feature/SAS-84-improve-count-err…
Browse files Browse the repository at this point in the history
…or-handling

Improve Record counter error handling and copy
  • Loading branch information
KaitCrawford committed Feb 1, 2018
2 parents d58d5ba + 90861b4 commit 0bfb7cc
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 6 deletions.
6 changes: 3 additions & 3 deletions molo/surveys/static/js/survey-admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -268,10 +268,10 @@ $(function(){
$.post(url, send_data, function(data) {
$(".error-message").remove();
$(".error").removeClass("error");
if (data.error != undefined) {
for (key in data.error) {
if (data.errors != undefined) {
for (key in data.errors) {
field = $("[name='" + key + "']");
field.after("<p class='error-message'><span>"+data.error[key]+"</span></p>");
field.closest("div.field-content").append("<p class='error-message'><span>"+data.errors[key]+"</span></p>");
field.closest("li").addClass("error");
}
$("#count-result").html("Please correct errors.");
Expand Down
2 changes: 1 addition & 1 deletion molo/surveys/templates/modeladmin/create.html
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
</div>
</li>
<li class="matching-users-result__result actions">
<p class="matching-users-result__label"><em>{% trans 'Number of matching users:' %}</em></p>
<p class="matching-users-result__label"><em>{% trans 'Users matching static rules:' %}</em></p>
<p id="count-result">-</p>
</li>
</ul>
Expand Down
15 changes: 14 additions & 1 deletion molo/surveys/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -1091,4 +1091,17 @@ def test_segment_user_count(self):
self.submit_survey(self.personalisable_survey, self.user)
response = self.client.post('/surveys/count/', SEGMENT_FORM_DATA)

self.assertContains(response, '"segmentusercount": 1')
self.assertDictEqual(response.json(), {"segmentusercount": 1})

def test_segment_user_count_returns_errors(self):
self.submit_survey(self.personalisable_survey, self.user)
data = SEGMENT_FORM_DATA
data['name'] = [""]
data['surveys_surveyresponserule_related-0-survey'] = ['20']
response = self.client.post('/surveys/count/', data)

self.assertDictEqual(response.json(), {"errors": {
"surveys_surveyresponserule_related-0-survey": [
"Select a valid choice. That choice is not one of the "
"available choices."],
"name": ["This field is required."]}})
13 changes: 12 additions & 1 deletion molo/surveys/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,18 @@ def get_segment_user_count(request):
count = f.count_matching_users(rules, f.instance.match_any)
context = {'segmentusercount': count}
else:
context = {'error': f.errors}
errors = f.errors
# Get the errors for the Rules forms
for formset in f.formsets.values():
if formset.has_changed():
for form in formset:
if form.errors:
id_prefix = form.prefix
for name, error in form.errors.items():
input_name = id_prefix + "-%s" % name
errors[input_name] = error

context = {'errors': errors}

return JsonResponse(context)

Expand Down

0 comments on commit 0bfb7cc

Please sign in to comment.