portal: improved user and slice request/validation
[myslice.git] / portal / templates / validate_pending.html
1 {% extends "layout-unfold1.html" %}
2
3 {% block head %}
4 <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/validate_pending.css" />
5 <script type="text/javascript">
6         function on_click_event() {
7                 var ids = []; 
8                 $('.portal__validate__checkbox').each(function(i, el) {
9                         if ($(el).prop('checked')) {
10                                 // portal__validate__checkbox__slice__2
11                                 var id_array = $(el).attr('id').split('__');
12                                 // push(slice__2)
13                                 ids.push(id_array[3] + '__' + id_array[4]);
14                         }
15                 });
16                 if (ids.length > 0) {
17                         var id_str = ids.join('/');
18
19                         // XXX spinner
20
21                         $.getJSON('/portal/validate_action/' + id_str,
22                                 function(status) {
23                                         $.each(status, function(request_type__id, request_status) {
24                                                 // request_status: NAME -> dict (status, description)
25                                                 var status_str = '';
26                                                 $.each(request_status, function(name, result) {
27                                                         if (status_str != '')
28                                                                 status_str += ' -- ';
29
30                                                         if (result.status) {
31                                                                 status_str += '<font color="green">OK</font>';
32                                                                 $('#portal__validate__checkbox__' + request_type__id).hide();
33                                                         } else {
34                                                                 status_str += '<font color="red">ERROR: ' + result.description + '</font>';
35                                                         }
36                                                 });
37                                                 $('#portal__status__' + request_type__id).html(status_str)
38
39
40                                         });
41                                 }
42                         );
43                 }
44         }
45 </script>
46 {% endblock %}
47
48 {% block unfold1_main %}
49
50 <h1>Pending requests</h1>
51
52 <h2>My authorities</h2>
53
54 {% if my_authorities %}
55
56 {% for authority, requests in my_authorities.items %}
57 <h3>{{authority}}</h3>
58     {% for request in requests %}
59     <div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'>
60                 <span class='type'>{{ request.type }}</span>
61                 <span class='id'>{{ request.id }}</span>
62                 <span class='timestamp'>{{ request.timestamp }}</span>
63                 <span class='authority'>{{ request.authority_hrn }}</span>
64         
65         {% if request.type == 'user' %}
66         <span class='details'>First name: {{request.first_name}} -- Last name: {{request.last_name}} -- Email: {{request.email}}</span>
67         {% else %}
68             {% if request.type == 'slice' %}
69         <span class='details'>Number of nodes: {{request.number_of_nodes}} -- Type of nodes: {{request.type_of_nodes}} -- Purpose: {{request.purpose}}</span>
70             {% else %} {# authority #}
71         <span class='details'>TODO</span>
72             {% endif %}
73         {% endif %}
74
75                 {% if request.allowed == 'allowed' %}
76                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
77                 {% else %}
78                         {% if request.allowed == 'expired' %}
79                                 expired
80                         {% else %} {# denied #}
81                                 denied
82                         {% endif %}
83                 {% endif %}
84                 <span class='status' id='portal__status__{{request.type}}__{{request.id}}'></span>
85         </div>
86     {% endfor %}
87 {% endfor %}
88
89 {% else %}
90 <i>There is no pending request waiting for validation.</i>
91 {% endif %}
92
93 {% if delegation_authorities %}
94 <h2>Authorities with delegation</h2>
95
96 {% for authority, requests in delegation_authorities.items %}
97 <h3>{{authority}}</h3>
98     {% for request in requests %}
99     <div class='portal_validate_request {{request.type}} {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}'>
100                 <span class='type'>{{ request.type }}</span>
101                 <span class='id'>{{ request.id }}</span>
102                 <span class='timestamp'>{{ request.timestamp }}</span>
103                 <span class='details'>{{ request.details }}</span>
104                 {% if request.allowed == 'allowed' %}
105                 <input class='portal__validate__checkbox' id='portal__validate__checkbox__{{request.type}}__{{request.id}}' type='checkbox'/>
106                 {% else %}
107                         {% if request.allowed == 'expired' %}
108                                 expired
109                         {% else %} {# denied #}
110                                 denied
111                         {% endif %}
112                 {% endif %}
113                 <span class='status' id='portal__status__{{request.type}}__{{request.id}}'></span>
114         </div>
115     {% endfor %}
116 {% endfor %}
117
118 {% endif %}
119
120 <input type='button' id='portal__validate' value='Validate' onclick='on_click_event();'/>
121
122 {% endblock %}