- reasons for applying
[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 showMore(buttonId, divId){
45           var element = document.getElementById(buttonId);
46           var div_element = document.getElementById(divId);
47           if (element.value === '(+)'){
48             element.value = '(-)';
49             $('#'+divId).slideDown('fast');
50           }
51           else {
52             element.value = '(+)';
53             $('#'+divId).slideUp('fast');
54           }
55           return false;
56         }
57 </script>
58
59 <div class="col-md-12">
60         <h2>Authorities</h2>
61 </div>
62 {% if my_authorities %}
63         
64         {% for authority, requests in my_authorities.items %}
65         {% if authority == pi_authority or authority == "fibre" %}
66         <div class="col-md-12">
67                 <h2>{{authority}}</h2>
68                 <table class="table">
69                               <th>
70                                 <td>Type</td>
71                                 <td>Id</td>
72                                 <td>Details</td>
73                                 <td>Timestamp</td>
74                                 <td>Status</td>
75                               </th>
76                         {% for request in requests %} 
77                                 <tr>
78                                         {% if request.object_auth == pi_authority %}
79                                                 <td>
80                                                 {% if request.allowed == 'allowed' %}
81                                                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
82                                                 {% else %}
83                                                         {% if request.allowed == 'expired' %}
84                                                                 expired
85                                                         {% else %} {# denied #}
86                                                                 denied
87                                                         {% endif %}
88                                                 {% endif %}
89                                                 </td>
90                                                 <td>{{ request.type }}</td>
91                                                 <td>{{ request.id }}</td>
92                                                 <td>
93                                                 {% if request.type == 'user' %}
94                                                         Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
95                                                         <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">
96                                                         <div id="reasons_{{request.id}}" style="display:none"> Reasons for Applying:<br> {{request.reasons}} </div> 
97                                                 {% else %}
98                                                 {% if request.type == 'slice' %}
99                                                                 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}}
100                                                         {% else %} {# authority #}
101                                                                 Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
102                                                 {% endif %}
103                                                 {% endif %}
104                                                 </td>
105                                                 <td>{{ request.timestamp }}</td>
106                                         
107                                                 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
108
109                             <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
110                                 {% endif %}
111                                 </tr>
112                         {% endfor %}
113                 </table>
114         </div>
115         {% endif %}
116         {% endfor %}
117
118 {% else %}
119         <div class="col-md-12">
120                 <i>There is no pending request waiting for validation.</i>
121         </div>
122 {% endif %}
123 <br />
124 <div class="col-md-12">
125         <h2>Sub-Authorities</h2>
126 </div>
127 {% if sub_authorities %}
128         
129         {% for authority, requests in sub_authorities.items %}
130         {% if authority == pi_authority or authority == 'fibre'%}
131                 <div class="col-md-12">
132                 <h3>{{authority}}</h3>
133                     <table class="table">
134                       <th>
135                         <td>Type</td>
136                         <td>Id</td>
137                         <td>Details</td>
138                         <td>Timestamp</td>
139                         <td>Status</td>
140                       </th>
141                     {% for request in requests %}
142                           <tr>
143                                 {% if request.object_auth == pi_authority %}
144                                 <td>
145                                 {% if request.allowed == 'allowed' %}
146                                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
147                                 {% else %}
148                                         {% if request.allowed == 'expired' %}
149                                                 expired
150                                         {% else %} {# denied #}
151                                                 denied
152                                         {% endif %}
153                                 {% endif %}
154                                 </td>           
155                                 <td>{{ request.type }}</td>
156                                 <td>{{ request.id }}</td>
157                                 <td>
158                         {% if request.type == 'user' %}
159                         Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
160                         {% else %}
161                             {% if request.type == 'slice' %}
162                         Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
163                             {% else %} {# authority #}
164                         Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
165                             {% endif %}
166                         {% endif %}
167                                 </td>
168                                 <td>{{ request.timestamp }}</td>
169                                 
170                                 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
171                 
172             <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
173                         {% endif %}
174                           </tr>
175                     {% endfor %}
176                     </table>
177                 </div>
178         {% endif %}
179         {% endfor %}
180 {% else %}
181 <div class="col-md-12">
182         <i>There is no pending request waiting for validation.</i>
183 </div>
184 {% endif %}
185 <br />
186 <div class="col-md-12">
187         <h2>Authorities with delegation</h2>
188 </div>
189
190 {% if delegation_authorities %}
191         
192         {% for authority, requests in delegation_authorities.items %}
193         {% if authority == pi_authority  or authority == 'fibre'%}
194         <div class="col-md-12">
195                 <h3>{{authority}}</h3>
196                     <table class="table">
197                       <th>
198                         <td>Type</td>
199                         <td>Id</td>
200                         <td>Details</td>
201                         <td>Timestamp</td>
202                         <td>Status</td>
203                       </th>
204                     {% for request in requests %}
205                           <tr>
206                                 {% if request.object_auth == pi_authority %}
207                                 <td>
208                                 {% if request.allowed == 'allowed' %}
209                                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
210                                 {% else %}
211                                         {% if request.allowed == 'expired' %}
212                                                 expired
213                                         {% else %} {# denied #}
214                                                 denied
215                                         {% endif %}
216                                 {% endif %}
217                                 </td>
218                                 <td>{{ request.type }}</td>
219                                 <td>{{ request.id }}</td>
220                                 <td>
221                         {% if request.type == 'user' %}
222                         Login: {{request.login}} -- First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}
223                         {% else %}
224                             {% if request.type == 'slice' %}
225                         Slice name: {{request.slice_name}} -- Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}
226                             {% else %} {# authority #}
227                         Authority name: {{request.site_name}} -- authority_hrn: {{request.site_authority}} -- City: {{request.address_city}} -- Country: {{request.address_country}}
228                             {% endif %}
229                        {% endif %}
230                                 </td>
231                                 <td>{{ request.timestamp }}</td>
232                         
233                                 <td><span id='portal__status__{{request.type}}__{{request.id}}'></span></td>
234         
235             <!--<div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'> -->
236                         {% endif %}
237                           </tr>
238                     {% endfor %}
239                     </table>
240         </div>
241         {% endif %}
242         {% endfor %}
243 {% else %}
244 <div class="col-md-12">
245         <i>There is no pending request waiting for validation.</i>
246 </div>
247 {% endif %}
248 <br />
249 <div class="col-md-12">
250         <button class="btn btn-onelab" type="button" id="portal__validate" onclick="on_click_event();"><span class="glyphicon glyphicon-ok"></span> Validate</button>
251 </div>