diff options
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 |
commit | 92f39de5a44a43883978ff2e297b062af8e0faf9 (patch) | |
tree | 7d84a02004b5a52bd41cacaf2352cfd42da26497 | |
parent | 6b829cd8a901bdab2bf85a0a9e81133127e05fed (diff) | |
download | Chimère-92f39de5a44a43883978ff2e297b062af8e0faf9.tar.bz2 Chimère-92f39de5a44a43883978ff2e297b062af8e0faf9.zip |
Explicit redirect after form submission.
-rw-r--r-- | chimere/templates/chimere/edit.html | 4 | ||||
-rw-r--r-- | chimere/templates/chimere/form_result_msg.html | 8 | ||||
-rw-r--r-- | chimere/urls.py | 2 | ||||
-rw-r--r-- | chimere/views.py | 27 |
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 |