summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-07-16 12:47:46 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-07-16 12:47:46 +0200
commit92f39de5a44a43883978ff2e297b062af8e0faf9 (patch)
tree7d84a02004b5a52bd41cacaf2352cfd42da26497
parent6b829cd8a901bdab2bf85a0a9e81133127e05fed (diff)
downloadChimère-92f39de5a44a43883978ff2e297b062af8e0faf9.tar.bz2
Chimère-92f39de5a44a43883978ff2e297b062af8e0faf9.zip
Explicit redirect after form submission.
-rw-r--r--chimere/templates/chimere/edit.html4
-rw-r--r--chimere/templates/chimere/form_result_msg.html8
-rw-r--r--chimere/urls.py2
-rw-r--r--chimere/views.py27
4 files changed, 33 insertions, 8 deletions
diff --git a/chimere/templates/chimere/edit.html b/chimere/templates/chimere/edit.html
index 8b66888..d31cb79 100644
--- a/chimere/templates/chimere/edit.html
+++ b/chimere/templates/chimere/edit.html
@@ -154,8 +154,6 @@
$('#upload_in_progress .modal-body').html(upload);
$('#upload_in_progress').modal("show");
}
- var success_msg = "<h3>Merci pour votre contribution au projet !</h3>";
- success_msg += "<p>Votre proposition va être examinée par un modérateur et être validée dans les jours à venir.</p>"
$(function(){
register_subactions();
{% comment %}
@@ -214,7 +212,7 @@
success:function(msg){
$('#upload_in_progress').modal("hide");
$("#modal-edit").modal("hide");
- $("#modal-default-message .modal-body").html(success_msg);
+ $("#modal-default-message .modal-body").html(msg);
$('#modal-default-message').modal("show");
}
});
diff --git a/chimere/templates/chimere/form_result_msg.html b/chimere/templates/chimere/form_result_msg.html
new file mode 100644
index 0000000..3124335
--- /dev/null
+++ b/chimere/templates/chimere/form_result_msg.html
@@ -0,0 +1,8 @@
+<h3>Merci pour votre contribution au projet !</h3>
+{% if success %}
+<p>Votre proposition va être examinée par un modérateur et être validée dans les jours à venir.</p>
+{% else %}
+<div class="alert alert-danger">
+Malheureusement lors de la soumission de votre formulaire une erreur est survenue. L'administrateur de la plateforme a été prévenu. Nous faisons en sorte de régler ce problème au plus vite.
+</div>
+{% endif %}
diff --git a/chimere/urls.py b/chimere/urls.py
index 3f9305e..e7b9133 100644
--- a/chimere/urls.py
+++ b/chimere/urls.py
@@ -74,6 +74,8 @@ urlpatterns += [
url(r'^(?P<area_name>[a-zA-Z0-9_-]+/)?edit-polygon/(?P<item_id>\w+)/'
r'(?P<submited>\w+)?$',
views.editPolygon, name="editpolygon-item"),
+ url(r'^form-result/(?P<success>[a-zA-Z0-9_-]+)?',
+ views.form_result, name='form-result'),
url(r'^', include('chimere.urls_chimere', namespace="chimere")),
url(r'^(?P<area_name>[a-zA-Z0-9_-]+)?', views.index,
name="index"),
diff --git a/chimere/views.py b/chimere/views.py
index 4521001..9b67b70 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -359,15 +359,27 @@ def get_edit_page(redirect_url, item_cls, item_form,
f.save(item)
base_uri = get_base_uri(request)
forms.notifySubmission(base_uri, item)
- response_dct = get_base_response(request, area_name)
- return redirect(
- redirect_url + '-item',
- area_name + '/' if area_name else '',
- item.ref_item.pk, 'submited'), None, subcategories
+ return redirect(reverse('form-result', args=['true'])), None, \
+ subcategories
else:
response_dct['error_message'] = _(
"There are missing field(s)"
" and/or errors in the submitted form.")
+ context = ""
+ for error_key in form.errors:
+ context += "\n * {}: {}".format(
+ error_key, " ; ".join(form.errors[error_key]))
+ forms.notifyByEmail(
+ "[] {}".format(settings.PROJECT_NAME,
+ _('Error on form submission')),
+ 'Context: ' + context,
+ [email for name, email in settings.ADMINS]
+
+ )
+ if settings.DEBUG:
+ print(context)
+ return redirect(reverse('form-result')), None, \
+ subcategories
else:
form = item_form(instance=init_item, subcategories=listed_subcats,
area_name=area_name)
@@ -379,6 +391,11 @@ def get_edit_page(redirect_url, item_cls, item_form,
return func
+def form_result(request, success='false'):
+ res = {'success': True if success == "true" else False}
+ return render(request, 'chimere/form_result_msg.html', res)
+
+
def action_do_redirect(action_name, available_actions):
# redirect to an edit
is_edit = 'edit' in action_name