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