1 <script type="text/javascript">
2 $(document).ready(function() {
3 $("li#nav-request").addClass("active");
4 $('table.requests').dataTable({
6 "bScrollCollapse": true,
9 "bLengthChange": false,
17 function on_click_event() {
19 $('.portal__validate__checkbox').each(function(i, el) {
20 if ($(el).prop('checked')) {
21 // portal__validate__checkbox__slice__2
22 var id_array = $(el).attr('id').split('__');
24 ids.push(id_array[3] + '__' + id_array[4]);
28 var id_str = ids.join('/');
32 $.getJSON('/portal/validate_action/' + id_str,
34 $.each(status, function(request_type__id, request_status) {
35 // request_status: NAME -> dict (status, description)
37 $.each(request_status, function(name, result) {
42 status_str += '<font color="green">OK</font>';
43 $('#portal__validate__checkbox__' + request_type__id).hide();
45 status_str += '<font color="red">ERROR: ' + result.description + '</font>';
48 $('#portal__status__' + request_type__id).html(status_str);
56 function showMore(buttonId, divId){
57 var element = document.getElementById(buttonId);
58 var div_element = document.getElementById(divId);
59 if (element.value === '(+)'){
60 element.value = '(-)';
61 $('#'+divId).slideDown('fast');
64 element.value = '(+)';
65 $('#'+divId).slideUp('fast');
69 function on_click_reject() {
71 $('.portal__validate__checkbox').each(function(i, el) {
72 if ($(el).prop('checked')) {
73 // portal__validate__checkbox__slice__2
74 var id_array = $(el).attr('id').split('__');
76 ids.push(id_array[3] + '__' + id_array[4]);
80 var id_str = ids.join('/');
84 $.getJSON('/portal/reject_action/' + id_str,
86 $.each(status, function(request_type__id, request_status) {
87 // request_status: NAME -> dict (status, description)
89 $.each(request_status, function(name, result) {
94 status_str += '<font color="green">Rejected</font>';
95 $('#portal__validate__checkbox__' + request_type__id).hide();
97 status_str += '<font color="red">ERROR: ' + result.description + '</font>';
100 $('#portal__status__' + request_type__id).html(status_str);
110 <div class="container-fluid">
111 <div class="col-md-12">
112 <h2>From your authorities</h2>
114 {% if my_authorities %}
115 <div class="col-md-12">
116 <table class="table requests">
129 {% for authority, requests in my_authorities.items %}
130 {% if authority == pi_authority or authority == "fibre" %}
133 <div class="col-md-12">
134 <h2>{{authority}}</h2>
135 <table class="table">
143 {% for request in requests %}
145 {% if request.object_auth == pi_authority %}
147 {% if request.allowed == 'allowed' %}
148 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
150 {% if request.allowed == 'expired' %}
152 {% else %} {# denied #}
157 <td>{{ request.type }}</td>
158 <td>{{ request.id }}</td>
160 {% if request.type == 'user' %}
161 Login: {{request.login}} - First name: {{request.first_name}} - Last name: {{request.last_name}} - Email: {{request.email}}
162 <input type = "button" id = "moreBtn_{{request.id}}" value = "(+)" onclick = "showMore('moreBtn_{{request.id}}','reasons_{{request.id}}')" style="color:blue; padding:0; border:none; background:none">
163 <div id="reasons_{{request.id}}" style="display:none"> Reasons for Applying:<br> {{request.reasons}} </div>
165 {% if request.type == 'slice' %}
166 Slice name: {{request.slice_name}} - User_hrn: {{ request.user_hrn }} - Number of nodes: {{request.number_of_nodes}} - Type of nodes: {{request.type_of_nodes}} - Purpose: {{request.purpose}}
167 {% else %} {# authority #}
168 Authority name: {{request.site_name}} - authority_hrn: {{request.site_authority}} - City: {{request.address_city}} - Country: {{request.address_country}}
172 <td>{{ request.timestamp }}</td>
174 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
176 <!- <div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'>
185 {% for request in requests %}
187 {% if request.type == 'user' %}
189 {% elif request.type == 'slice' %}
194 <td><span class="gray small">{{ request.id }}</span></td>
196 {% if request.allowed == 'allowed' %}
197 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
199 {% if request.allowed == 'expired' %}expired{% else %}denied{% endif %}
202 <td><span class="type">{{ request.type }}</span></td>
203 <td><i>{{authority}}{{request.site_authority}}</i></td>
205 {% if request.type == 'user' %}
206 <b>{{request.first_name}} {{request.last_name}}</b> <<a href="mailto:{{request.email}}">{{request.email}}</a>>
207 <input type = "button" id = "moreBtn_{{request.id}}" value = "(+)" onclick = "showMore('moreBtn_{{request.id}}','reasons_{{request.id}}')" style="color:blue; padding:0; border:none; background:none">
208 <div id="reasons_{{request.id}}" style="display:none"> Reasons for Applying:<br> {{request.reasons}} </div>
210 {% elif request.type == 'slice' %}
211 <b>{{request.slice_name}}</b> -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
213 <b>{{request.site_name}}</b> ({{request.site_authority}}) -- {{request.address_city}}, {{request.address_country}}
216 <td>{{ request.timestamp }}</td>
218 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
220 <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
230 <div class="col-md-12">
231 <i>There is no pending request waiting for validation.</i>
238 <div class="col-md-12">
239 <h2>From your sub-authorities</h2>
241 {% if sub_authorities %}
243 {% for authority, requests in sub_authorities.items %}
244 {% if authority == pi_authority or authority == 'fibre'%}
245 <div class="col-md-12">
246 <h3>{{authority}}</h3>
247 <table class="table">
255 {% for request in requests %}
257 {% if request.object_auth == pi_authority %}
259 {% if request.allowed == 'allowed' %}
260 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
262 {% if request.allowed == 'expired' %}
264 {% else %} {# denied #}
269 <td>{{ request.type }}</td>
270 <td>{{ request.id }}</td>
272 {% if request.type == 'user' %}
273 Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
275 {% if request.type == 'slice' %}
276 Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
277 {% else %} {# authority #}
278 Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
282 <td>{{ request.timestamp }}</td>
284 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
286 <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
295 <div class="col-md-12">
296 <i>There is no pending request waiting for validation.</i>
300 <div class="col-md-12">
301 <h2>From your authorities with delegation</h2>
304 {% if delegation_authorities %}
306 {% for authority, requests in delegation_authorities.items %}
307 {% if authority == pi_authority or authority == 'fibre'%}
308 <div class="col-md-12">
309 <h3>{{authority}}</h3>
310 <table class="table">
318 {% for request in requests %}
320 {% if request.object_auth == pi_authority %}
322 {% if request.allowed == 'allowed' %}
323 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
325 {% if request.allowed == 'expired' %}
327 {% else %} {# denied #}
332 <td>{{ request.type }}</td>
333 <td>{{ request.id }}</td>
335 {% if request.type == 'user' %}
336 Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
338 {% if request.type == 'slice' %}
339 Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
340 {% else %} {# authority #}
341 Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
345 <td>{{ request.timestamp }}</td>
347 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
349 <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
358 <div class="col-md-12">
359 <i>There is no pending request waiting for validation.</i>
363 <div class="col-md-12">
364 <button class="btn btn-onelab" type="button" id="portal__validate" onclick="on_click_event();"><span class="glyphicon glyphicon-ok"></span> Validate</button>
365 <button class="btn btn-danger" type="button" id="portal__reject" onclick="on_click_reject();"><span class="glyphicon glyphicon-remove"></span> Reject</button>