Skip to content
Snippets Groups Projects
Commit 085c48a4 authored by Tanner Prestegard's avatar Tanner Prestegard Committed by GraceDB
Browse files

Update confirm GW button on superevent detail page

The 'confirm GW' button on the superevent web detail page now
uses AJAX to make the request to the corresponding API endpoint.
As a result, the separate view function for this endpoint in the
superevents app is no longer needed, so we have deleted it.
parent 1c5296be
No related branches found
No related tags found
No related merge requests found
......@@ -12,8 +12,6 @@ suburlpatterns = [
# Superevent detail view
url(r'^view/$', views.SupereventDetailView.as_view(), name="view"),
# Confirm as GW
url(r'^confirm_as_gw/$', views.confirm_as_gw, name="confirm-gw"),
# Files
url(r'^files/$', views.file_list, name="file-list"),
......
......@@ -15,8 +15,7 @@ from events.permission_utils import is_external
from .mixins import ExposeHideMixin, OperatorSignoffMixin, \
AdvocateSignoffMixin
from .models import Superevent
from .utils import get_superevent_by_date_id_or_404, \
confirm_superevent_as_gw
from .utils import get_superevent_by_date_id_or_404
# Set up logger
......@@ -95,33 +94,6 @@ class SupereventDetailView(OperatorSignoffMixin, AdvocateSignoffMixin,
return context
@require_POST
def confirm_as_gw(request, superevent_id):
# Check user permissions
if not request.user.has_perm('confirm_gw_superevent'):
return HttpResponseForbidden('You do not have permission to perform '
'this action.')
# TODO: make sure user has permission to see the superevent
# need to do some kind of filtering on queryset initially, like in
# rest_framework. maybe add an optional queryset argument to
# get_superevent_by_date_id_or_404, and a check that the queryset's model
# is Superevent
# Get superevent id from superevent_id
# Get superevent object
# TODO: add queryset to args
superevent = get_superevent_by_date_id_or_404(superevent_id)
# Set superevent as gw
confirm_superevent_as_gw(superevent, request.user)
# Return to superevent page
return HttpResponseRedirect(reverse('superevents:view',
args=[superevent_id]))
# TODO:
# filter files for external users (see how this is done for events)
def file_list(request, superevent_id):
......
......@@ -57,10 +57,10 @@
{% if show_gw_status_form %}
<div class="content-area">
<form action="{% url "superevents:confirm-gw" superevent.superevent_id %}" method="POST">
<input type="submit" value="Confirm this superevent as a GW" class="permButtonClass">
<form action="{% url "shib:default:superevents:superevent-confirm-as-gw" superevent.superevent_id %}" method="POST" id="confirm_as_gw_form">
<input type="submit" value="Confirm this superevent as a GW" class="permButtonClass" disabled>
</form>
<div><b>Note:</b> this action is irreversible without manual intervention by an admin!</div>
<div><b>Note:</b> this action is irreversible without manual intervention by an admin.</div>
</div>
{% endif %}
......@@ -72,7 +72,7 @@
<div class="content-area">
<form action="{% url "shib:default:superevents:superevent-permission-modify" superevent.superevent_id %}" method="POST" id="permissions_form">
<input type="hidden" name="action" value="{{ permissions_action }}">
<input type="submit" value="{{ permissions_form_button_text }}" class="permButtonClass">
<input type="submit" value="{{ permissions_form_button_text }}" class="permButtonClass" disabled>
</form>
</div>
{% endif %}
......
......@@ -228,6 +228,43 @@ require([
// We don't enable the input buttons until right now otherwise fast users
// can trigger the form before the javascript is ready... not ideal
$("#confirm_as_gw_form input[type=submit]").attr('disabled', false);
// Confirm as GW form
$("#confirm_as_gw_form").submit(function(e) {
e.preventDefault();
// Get button and disable it to prevent multiple clicks
var submit_button = $(this).children("input[type=submit]");
submit_button.attr("disabled", true);
// Make ajax request
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
success: function(resp) {
// Don't need to re-enable since we reload the page
//submit_button.attr("disabled", false);
location.reload(true);
},
error: function(error) {
//this.button.set("disabled", false);
var err_msg = "Error " + error.status + ": ";
if (error.responseText != "") {
err_msg += error.responseText;
} else {
err_msg += error.statusText;
}
if (error.status == 404) {
err_msg += ". Reload the page.";
}
alert(err_msg);
// Re-enable submit button
submit_button.attr("disabled", false);
}
});
});
$(".signoff_form input[type=submit]").attr('disabled', false);
// Signoff form - determine HTTP method type and url based on
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment