f7476c6412d4e6e94a8d8ac379c6eba1af3b4ac0
[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, requests in my_authorities.items %}
91         
92         <div class="col-md-12">
93                 <h2>{{authority|default:"Authorities"}}</h2>
94         </div>
95         <div class="col-md-12">
96         <table class="table">
97           <th>
98             <td>Authority</td>
99             <td>Type</td>
100             <td>Id</td>
101             <td>Details</td>
102             <td>Timestamp</td>
103             <td>Status</td>
104           </th>
105         {% for request in requests %}
106     
107           <tr>
108             <td>{{authority}}</td>
109                 <td>
110                 {% if request.allowed == 'allowed' %}
111                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
112                 {% else %}
113                         {% if request.allowed == 'expired' %}expired{% else %}denied{% endif %}
114                 {% endif %}
115                 </td>
116                 <td>{{ request.type }}</td>
117                 <td>{{ request.id }}</td>
118                 <td>
119             {% if request.type == 'user' %}
120                 <b>{{request.first_name}} {{request.last_name}}</b> <a href="mailto:{{request.email}}">{{request.email}}</a>
121             {% else %}
122                 {% if request.type == 'slice' %}
123                 <b>{{request.slice_name}}</b> -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
124                 {% else %} {# authority #}
125                 <b>{{request.site_name}}</b> ({{request.site_authority}}) -- {{request.address_city}}, {{request.address_country}}
126                 {% endif %}
127             {% endif %}
128                 </td>
129                 <td>{{ request.timestamp }}</td>
130                 
131                 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
132     
133         <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
134           </tr>
135     
136         {% endfor %}
137         </table>
138         </div>
139         {% endfor %}
140
141 {% else %}
142         <div class="col-md-12">
143                 <i>There is no pending request waiting for validation.</i>
144         </div>
145 {% endif %}
146 <br />
147 <div class="col-md-12">
148         <h2>From your sub-authorities</h2>
149 </div>
150 {% if sub_authorities %}
151         
152         {% for authority, requests in sub_authorities.items %}
153         <div class="col-md-12">
154         <h3>{{authority}}</h3>
155             <table class="table">
156               <th>
157                 <td>Type</td>
158                 <td>Id</td>
159                 <td>Details</td>
160                 <td>Timestamp</td>
161                 <td>Status</td>
162               </th>
163             {% for request in requests %}
164                   <tr>
165                         <td>
166                         {% if request.allowed == 'allowed' %}
167                         <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
168                         {% else %}
169                                 {% if request.allowed == 'expired' %}
170                                         expired
171                                 {% else %} {# denied #}
172                                         denied
173                                 {% endif %}
174                         {% endif %}
175                         </td>
176                         <td>{{ request.type }}</td>
177                         <td>{{ request.id }}</td>
178                         <td>
179                 {% if request.type == 'user' %}
180                 Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
181                 {% else %}
182                     {% if request.type == 'slice' %}
183                 Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
184                     {% else %} {# authority #}
185                 Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
186                     {% endif %}
187                 {% endif %}
188                         </td>
189                         <td>{{ request.timestamp }}</td>
190                         
191                         <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
192         
193             <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
194                   </tr>
195             {% endfor %}
196             </table>
197         </div>
198         {% endfor %}
199 {% else %}
200 <div class="col-md-12">
201         <i>There is no pending request waiting for validation.</i>
202 </div>
203 {% endif %}
204 <br />
205 <div class="col-md-12">
206         <h2>From your authorities with delegation</h2>
207 </div>
208
209 {% if delegation_authorities %}
210         
211         {% for authority, requests in delegation_authorities.items %}
212         <div class="col-md-12">
213                 <h3>{{authority}}</h3>
214                     <table class="table">
215                       <th>
216                         <td>Type</td>
217                         <td>Id</td>
218                         <td>Details</td>
219                         <td>Timestamp</td>
220                         <td>Status</td>
221                       </th>
222                     {% for request in requests %}
223                           <tr>
224                                 <td>
225                                 {% if request.allowed == 'allowed' %}
226                                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
227                                 {% else %}
228                                         {% if request.allowed == 'expired' %}
229                                                 expired
230                                         {% else %} {# denied #}
231                                                 denied
232                                         {% endif %}
233                                 {% endif %}
234                                 </td>
235                                 <td>{{ request.type }}</td>
236                                 <td>{{ request.id }}</td>
237                                 <td>
238                         {% if request.type == 'user' %}
239                         Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
240                         {% else %}
241                             {% if request.type == 'slice' %}
242                         Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
243                             {% else %} {# authority #}
244                         Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
245                             {% endif %}
246                        {% endif %}
247                                 </td>
248                                 <td>{{ request.timestamp }}</td>
249                                 
250                                 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
251                 
252                     <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
253                           </tr>
254                     {% endfor %}
255                     </table>
256                 </div>
257                 {% endfor %}
258 {% else %}
259 <div class="col-md-12">
260         <i>There is no pending request waiting for validation.</i>
261 </div>
262 {% endif %}
263 <br />
264 <div class="col-md-12">
265         <button class="btn btn-onelab" type="button" id="portal__validate" onclick="on_click_event();"><span class="glyphicon glyphicon-ok"></span> Validate</button>
266         <button class="btn btn-danger" type="button" id="portal__reject" onclick="on_click_reject();"><span class="glyphicon glyphicon-remove"></span> Reject</button>
267 </div>