management requests table reorganization
[myslice.git] / portal / templates / management-tab-requests.html
1 <script type="text/javascript">
2         $(document).ready(function() {
3                 $("li#nav-request").addClass("active");
4         });
5         function on_click_event() {
6                 var ids = []; 
7                 $('.portal__validate__checkbox').each(function(i, el) {
8                         if ($(el).prop('checked')) {
9                                 // portal__validate__checkbox__slice__2
10                                 var id_array = $(el).attr('id').split('__');
11                                 // push(slice__2)
12                                 ids.push(id_array[3] + '__' + id_array[4]);
13                         }
14                 });
15                 if (ids.length > 0) {
16                         var id_str = ids.join('/');
17
18                         // XXX spinner
19
20                         $.getJSON('/portal/validate_action/' + id_str,
21                                 function(status) {
22                                         $.each(status, function(request_type__id, request_status) {
23                                                 // request_status: NAME -> dict (status, description)
24                                                 var status_str = '';
25                                                 $.each(request_status, function(name, result) {
26                                                         if (status_str != '')
27                                                                 status_str += ' -- ';
28
29                                                         if (result.status) {
30                                                                 status_str += '<font color="green">OK</font>';
31                                                                 $('#portal__validate__checkbox__' + request_type__id).hide();
32                                                         } else {
33                                                                 status_str += '<font color="red">ERROR: ' + result.description + '</font>';
34                                                         }
35                                                 });
36                                                 $('#portal__status__' + request_type__id).html(status_str);
37
38
39                                         });
40                                 }
41                         );
42                 }
43         }
44         function on_click_reject() {
45                 var ids = []; 
46                 $('.portal__validate__checkbox').each(function(i, el) {
47                         if ($(el).prop('checked')) {
48                                 // portal__validate__checkbox__slice__2
49                                 var id_array = $(el).attr('id').split('__');
50                                 // push(slice__2)
51                                 ids.push(id_array[3] + '__' + id_array[4]);
52                         }
53                 });
54                 if (ids.length > 0) {
55                         var id_str = ids.join('/');
56
57                         // XXX spinner
58
59                         $.getJSON('/portal/reject_action/' + id_str,
60                                 function(status) {
61                                         $.each(status, function(request_type__id, request_status) {
62                                                 // request_status: NAME -> dict (status, description)
63                                                 var status_str = '';
64                                                 $.each(request_status, function(name, result) {
65                                                         if (status_str != '')
66                                                                 status_str += ' -- ';
67
68                                                         if (result.status) {
69                                                                 status_str += '<font color="green">Rejected</font>';
70                                                                 $('#portal__validate__checkbox__' + request_type__id).hide();
71                                                         } else {
72                                                                 status_str += '<font color="red">ERROR: ' + result.description + '</font>';
73                                                         }
74                                                 });
75                                                 $('#portal__status__' + request_type__id).html(status_str);
76
77
78                                         });
79                                 }
80                         );
81                 }
82         }
83 </script>
84
85 <div class="col-md-12">
86         <h2>From your authorities</h2>
87 </div>
88 {% if my_authorities %}
89         
90         {% for authority in my_authorities.items %}
91     
92     <div class="col-md-12">
93         <h2>Authorities</h2>
94     </div>
95     <div class="col-md-12">
96         <table class="table">
97         {% for request in requests %}
98     
99           <tr>
100             <td>{{authority}}</td>
101             <td>
102             {% if request.allowed == 'allowed' %}
103             <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
104             {% else %}
105                 {% if request.allowed == 'expired' %}expired{% else %}denied{% endif %}
106             {% endif %}
107             </td>
108             <td>{{ request.type }}</td>
109             <td>{{ request.id }}</td>
110             <td>
111             {% if request.type == 'user' %}
112                 <b>{{request.first_name}} {{request.last_name}}</b> <a href="mailto:{{request.email}}">{{request.email}}</a>
113             {% else %}
114                 {% if request.type == 'slice' %}
115                 <b>{{request.slice_name}}</b> -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
116                 {% else %} {# authority #}
117                 <b>{{request.site_name}}</b> ({{request.site_authority}}) -- {{request.address_city}}, {{request.address_country}}
118                 {% endif %}
119             {% endif %}
120             </td>
121             <td>{{ request.timestamp }}</td>
122             
123             <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
124     
125         <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
126           </tr>
127     
128         {% endfor %}
129         </table>
130     </div>
131     {% endfor %}
132     
133     
134         {% for requests in my_authorities.items %}
135         
136         <div class="col-md-12">
137                 <h2>{{authority}}</h2>
138         </div>
139         <div class="col-md-12">
140         <table class="table">
141         {% for request in requests %}
142     
143           <tr>
144             <td>{{authority}}</td>
145                 <td>
146                 {% if request.allowed == 'allowed' %}
147                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
148                 {% else %}
149                         {% if request.allowed == 'expired' %}expired{% else %}denied{% endif %}
150                 {% endif %}
151                 </td>
152                 <td>{{ request.type }}</td>
153                 <td>{{ request.id }}</td>
154                 <td>
155             {% if request.type == 'user' %}
156                 <b>{{request.first_name}} {{request.last_name}}</b> <a href="mailto:{{request.email}}">{{request.email}}</a>
157             {% else %}
158                 {% if request.type == 'slice' %}
159                 <b>{{request.slice_name}}</b> -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
160                 {% else %} {# authority #}
161                 <b>{{request.site_name}}</b> ({{request.site_authority}}) -- {{request.address_city}}, {{request.address_country}}
162                 {% endif %}
163             {% endif %}
164                 </td>
165                 <td>{{ request.timestamp }}</td>
166                 
167                 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
168     
169         <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
170           </tr>
171     
172         {% endfor %}
173         </table>
174         </div>
175         {% endfor %}
176
177 {% else %}
178         <div class="col-md-12">
179                 <i>There is no pending request waiting for validation.</i>
180         </div>
181 {% endif %}
182 <br />
183 <div class="col-md-12">
184         <h2>From your sub-authorities</h2>
185 </div>
186 {% if sub_authorities %}
187         
188         {% for authority, requests in sub_authorities.items %}
189         <div class="col-md-12">
190         <h3>{{authority}}</h3>
191             <table class="table">
192               <th>
193                 <td>Type</td>
194                 <td>Id</td>
195                 <td>Details</td>
196                 <td>Timestamp</td>
197                 <td>Status</td>
198               </th>
199             {% for request in requests %}
200                   <tr>
201                         <td>
202                         {% if request.allowed == 'allowed' %}
203                         <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
204                         {% else %}
205                                 {% if request.allowed == 'expired' %}
206                                         expired
207                                 {% else %} {# denied #}
208                                         denied
209                                 {% endif %}
210                         {% endif %}
211                         </td>
212                         <td>{{ request.type }}</td>
213                         <td>{{ request.id }}</td>
214                         <td>
215                 {% if request.type == 'user' %}
216                 Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
217                 {% else %}
218                     {% if request.type == 'slice' %}
219                 Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
220                     {% else %} {# authority #}
221                 Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
222                     {% endif %}
223                 {% endif %}
224                         </td>
225                         <td>{{ request.timestamp }}</td>
226                         
227                         <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
228         
229             <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
230                   </tr>
231             {% endfor %}
232             </table>
233         </div>
234         {% endfor %}
235 {% else %}
236 <div class="col-md-12">
237         <i>There is no pending request waiting for validation.</i>
238 </div>
239 {% endif %}
240 <br />
241 <div class="col-md-12">
242         <h2>From your authorities with delegation</h2>
243 </div>
244
245 {% if delegation_authorities %}
246         
247         {% for authority, requests in delegation_authorities.items %}
248         <div class="col-md-12">
249                 <h3>{{authority}}</h3>
250                     <table class="table">
251                       <th>
252                         <td>Type</td>
253                         <td>Id</td>
254                         <td>Details</td>
255                         <td>Timestamp</td>
256                         <td>Status</td>
257                       </th>
258                     {% for request in requests %}
259                           <tr>
260                                 <td>
261                                 {% if request.allowed == 'allowed' %}
262                                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
263                                 {% else %}
264                                         {% if request.allowed == 'expired' %}
265                                                 expired
266                                         {% else %} {# denied #}
267                                                 denied
268                                         {% endif %}
269                                 {% endif %}
270                                 </td>
271                                 <td>{{ request.type }}</td>
272                                 <td>{{ request.id }}</td>
273                                 <td>
274                         {% if request.type == 'user' %}
275                         Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
276                         {% else %}
277                             {% if request.type == 'slice' %}
278                         Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
279                             {% else %} {# authority #}
280                         Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
281                             {% endif %}
282                        {% endif %}
283                                 </td>
284                                 <td>{{ request.timestamp }}</td>
285                                 
286                                 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
287                 
288                     <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
289                           </tr>
290                     {% endfor %}
291                     </table>
292                 </div>
293                 {% endfor %}
294 {% else %}
295 <div class="col-md-12">
296         <i>There is no pending request waiting for validation.</i>
297 </div>
298 {% endif %}
299 <br />
300 <div class="col-md-12">
301         <button class="btn btn-onelab" type="button" id="portal__validate" onclick="on_click_event();"><span class="glyphicon glyphicon-ok"></span> Validate</button>
302         <button class="btn btn-onelab" type="button" id="portal__reject" onclick="on_click_reject();"><span class="glyphicon glyphicon-remove"></span> Reject</button>
303 </div>