Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into onelab
authorYasin <mohammed-yasin.rahman@lip6.fr>
Mon, 14 Apr 2014 13:04:53 +0000 (15:04 +0200)
committerYasin <mohammed-yasin.rahman@lip6.fr>
Mon, 14 Apr 2014 13:04:53 +0000 (15:04 +0200)
manifoldapi/manifoldapi.py
plugins/testbeds/static/js/testbeds.js
portal/actions.py
portal/contactview.py
portal/joinview.py
portal/registrationview.py
portal/sliceresourceview.py
portal/static/img/testbeds/wilab2.ilabt.iminds.be.png [new file with mode: 0644]
portal/templates/slice-resource-view.html
portal/templates/slice-tab-testbeds.html
portal/validationview.py

index b1a1a0c..b105bf3 100644 (file)
@@ -152,7 +152,9 @@ def _execute_query(request, query, manifold_api_session_auth):
 def execute_query(request, query):
     if not 'manifold' in request.session or not 'auth' in request.session['manifold']:
         request.session.flush()
-        raise Exception, "User not authenticated"
+        #raise Exception, "User not authenticated"
+        host = request.get_host()
+        return redirect(host)
     manifold_api_session_auth = request.session['manifold']['auth']
     return _execute_query(request, query, manifold_api_session_auth)
 
index f26602e..b977127 100644 (file)
 
                 value = this.dataset['platform'];
                 // handle the hrn that include . in their name (has to be in sync with the data from SFA)
-                value = value.replace(/\./g,"\\.");
+                //value = value.replace(/\./g,"\\.");
                 key = "network_hrn";
                 op = "included";
                 return $(this).hasClass('active') ? self._addFilter(key, op, value) : self._removeFilter(key, op, value);
index 7cda3a9..c3695e3 100644 (file)
@@ -23,6 +23,7 @@ theme = ThemeView()
 def authority_get_pis(request, authority_hrn):
     query = Query.get('authority').filter_by('authority_hrn', '==', authority_hrn).select('pi_users')
     results = execute_admin_query(request, query)
+    print "authority_get_pis = %s" % results
     # NOTE: temporarily commented. Because results is giving empty list. 
     # Needs more debugging
     #if not results:
@@ -33,6 +34,8 @@ def authority_get_pis(request, authority_hrn):
 
 def authority_get_pi_emails(request, authority_hrn):
     pi_users = authority_get_pis(request,authority_hrn)
+    print "pi_users = %s" % pi_users
+
     if any(d['pi_users'] == None for d in pi_users):
         theme.template_name = 'email_default_recipients.txt' 
         default_email = render_to_string(theme.template, request)
@@ -404,7 +407,7 @@ def create_pending_slice(wsgi_request, request, email):
     try:
         # Send an email: the recipients are the PI of the authority
         recipients = authority_get_pi_emails(wsgi_request, request['authority_hrn'])
-    
+
         theme.template_name = 'slice_request_email.txt' 
         text_content = render_to_string(theme.template, request)
     
@@ -416,8 +419,7 @@ def create_pending_slice(wsgi_request, request, email):
         subject = subject.replace('\n', '')
     
         sender = email
-        msg = EmailMultiAlternatives(subject, text_content, sender, [recipients])
-        print msg
+        msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
         msg.attach_alternative(html_content, "text/html")
         msg.send()
     except Exception, e:
@@ -595,8 +597,10 @@ def create_pending_user(wsgi_request, request, user_detail):
         sender =  render_to_string(theme.template, request)
         sender = sender.replace('\n', '')
     
-        msg = EmailMultiAlternatives(subject, text_content, sender, [recipients])
+        msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
         msg.attach_alternative(html_content, "text/html")
         msg.send()
     except Exception, e:
         print "Failed to send email, please check the mail templates and the SMTP configuration of your server"
+        import traceback
+        traceback.print_exc()
index 95fb44e..44c151c 100644 (file)
@@ -50,7 +50,7 @@ class ContactView (FreeAccessView, ThemeView):
                 else:
                     sender = email
         
-                msg = EmailMultiAlternatives(subject, text_content, sender, [recipients])
+                msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
                 msg.attach_alternative(html_content, "text/html")
                 msg.send()
             except Exception, e:
index a2b8b7d..c128db3 100644 (file)
@@ -205,7 +205,7 @@ class JoinView (FreeAccessView, ThemeView):
                     sender =  render_to_string(theme.template, ctx)
                     sender = sender.replace('\n', '')
             
-                    msg = EmailMultiAlternatives(subject, text_content, sender, [recipients])
+                    msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
                     msg.attach_alternative(html_content, "text/html")
                     msg.send()
     
index a4b5fd5..ab09c9f 100644 (file)
@@ -88,8 +88,11 @@ class RegistrationView (FreeAccessView, ThemeView):
                 if user_detail['email'] == user_request['email']:
                     errors.append('Email already registered in Manifold. Please provide a new email address.')
             # Does the user exist in sfa? [query is very slow!!]
-            user_query  = Query().get('user').select('user_hrn','user_email')
+            #user_query  = Query().get('user').select('user_hrn','user_email')
+            # XXX Test based on the user_hrn is quick
+            user_query  = Query().get('user').select('user_hrn','user_email').filter_by('user_hrn','==',user_request['user_hrn'])
             user_details_sfa = execute_admin_query(wsgi_request, user_query)
+
             for user in user_details_sfa:
                 if user['user_email'] == user_request['email']:
                     errors.append('Email already registered in SFA registry. Please use another email.')
index fd9b3f8..b02b0ca 100644 (file)
@@ -50,7 +50,7 @@ class SliceResourceView (LoginRequiredView, ThemeView):
                 'resource.hostname', 'resource.type',
                 'resource.network_hrn',
                 'lease.urn',
-                'user.user_hrn',
+                #'user.user_hrn',
                 #'application.measurement_point.counter'
         )
         # for internal use in the querytable plugin;
diff --git a/portal/static/img/testbeds/wilab2.ilabt.iminds.be.png b/portal/static/img/testbeds/wilab2.ilabt.iminds.be.png
new file mode 100644 (file)
index 0000000..4ce8035
Binary files /dev/null and b/portal/static/img/testbeds/wilab2.ilabt.iminds.be.png differ
index 33d0c08..556db48 100644 (file)
@@ -85,7 +85,7 @@
                 {{map_resources}}
                        </div>
                        <div id="scheduler-tab" class="panel" style="height:370px;display:none;">
-                {#scheduler#}
+                {{scheduler}}
                        </div>
                        <div id="pending" class="panel" style="height:370px;display:none;">
                 {{pending_resources}}
index c8d6a77..d40909c 100644 (file)
@@ -18,7 +18,7 @@ $(document).ready(function() {
                        testbed_row += "<th id=testbed_check><input type=\"checkbox\" name=\"network_hrn\" value=\"all\"/></th>";
                        testbed_row += "<th id=testbed_icon></th>";
                        testbed_row += "<th>network_hrn</th>";
-                       testbed_row += "<th>Full name</th>";
+                       //testbed_row += "<th>Full name</th>";
                        testbed_row += "<th>Description</th>";
                        testbed_row += "</tr>";
                        testbed_row += "</thead>";
@@ -26,10 +26,12 @@ $(document).ready(function() {
                        $.each( data, function(key, val) {
                                testbed_row = "<tr data-keys=\""+val.network_hrn+"\" class=\"odd\">";
                                testbed_row += "<td><input type=\"checkbox\" name=\"network_hrn\" value=\""+val.network_hrn+"\"/></td>";
-                               testbed_row += "<td><img src='/static/img/testbeds/"+val.network_hrn+".png' alt='' /></td>";
+                net_hrn = val.network_hrn;
+                net_hrn = net_hrn.replace(/\\/g, '');
+                               testbed_row += "<td><img src='/static/img/testbeds/"+net_hrn+".png' alt='' /></td>";
                                testbed_row += "<td>"+val.network_hrn+"</td>";
                                testbed_row += "<td>"+val.network_longname+"</td>";
-                               testbed_row += "<td>"+val.description+"</td>";
+                               //testbed_row += "<td>"+val.description+"</td>";
                                testbed_row += "</thead>";
        
                                testbed_data.push(testbed_row);
index 3cfa528..f8788d0 100644 (file)
@@ -153,8 +153,17 @@ class ValidatePendingView(LoginRequiredAutoLogoutView, ThemeView):
             pi_authorities_query = Query.get('user').filter_by('user_hrn', '==', '$user_hrn').select('pi_authorities')
             pi_authorities_tmp = execute_query(self.request, pi_authorities_query)
             pi_authorities = set()
-            for pa in pi_authorities_tmp:
-                pi_authorities |= set(pa['pi_authorities'])
+            try:
+                for pa in pi_authorities_tmp:
+                    pi_authorities |= set(pa['pi_authorities'])
+            except:
+                print 'No pi_authorities'
+# TODO: exception if no parent_authority
+#             try:
+#                 for pa in pi_authorities_tmp:
+#                     pi_authorities |= set(pa['pi_authorities'])
+#             except:
+
 
 #            # include all sub-authorities of the PI
 #            # if PI on ple, include all sub-auths ple.upmc, ple.inria and so on...