Merge branch 'fibre' of ssh://git.onelab.eu/git/myslice into fibre fibre
authorRezende & Pedro & Carlos & Raphael <rezende@land.ufrj.br>
Tue, 14 Jul 2015 18:26:50 +0000 (15:26 -0300)
committerRezende & Pedro & Carlos & Raphael <rezende@land.ufrj.br>
Tue, 14 Jul 2015 18:26:50 +0000 (15:26 -0300)
Conflicts:
portal/homeview.py

1  2 
portal/actions.py
portal/homeview.py
portal/templates/fibre/fibre_institution.html

diff --combined portal/actions.py
@@@ -61,7 -61,6 +61,6 @@@ def clear_user_creds(request, user_emai
      try:
          user_query  = Query().get('local:user').filter_by('email', '==', user_email).select('user_id','email','password','config')
          user_details = execute_admin_query(request, user_query)
          # getting the user_id from the session
          for user_detail in user_details:
              user_id = user_detail['user_id']
@@@ -593,21 -592,31 +592,31 @@@ def create_slice(wsgi_request, request)
          Exception
      """
      hrn = "%s.%s" % (request['authority_hrn'], request['slice_name'])
+      
      # XXX tmp sfa dependency
      from sfa.util.xrn import Xrn 
      urn = Xrn(hrn, request['type']).get_urn()
      
      # Add User to Slice if we have the user_hrn in pendingslice table
      user_hrn = request.get('user_hrn', None)
+     user_obj = User.objects.get(username = user_hrn.split(".")[1])
+     list_users = []
      user_hrns = list([user_hrn]) if user_hrn else list()
+     for user in user_hrns:
+         list_users +=[User.objects.get(username = user.split(".")[1])] 
+     
+     #user_query  = Query.get('local:user').select('email').filter_by('email','==',user.username)
+     #user_details_sfa = execute_admin_query(wsgi_request, user_query)
+     
+     pendinguser = PendingUser.objects.filter(login__iexact = user_obj.username)    
+     if pendinguser :
+         raise Exception, "User %s doesn't exist, validate user before validating slice" % user_obj.username
+     #if not user_details_sfa:
+     #    raise Exception, "User %s doesn't exist, validate user before validating slice" % user_hrn
+     #for user in list_users:
+      
+     user_email = user_obj.email
      
-     user_query  = Query().get('user').select('user_hrn','user_email').filter_by('user_hrn','==',user_hrn)
-     user_details_sfa = execute_admin_query(wsgi_request, user_query)
-     if not user_details_sfa:
-         raise Exception, "User %s doesn't exist, validate user before validating slice" % user_hrn
-     for user in user_details_sfa:
-         user_email = user['user_email']
      # XXX LOIC Quick fix because this is totally inconsistent
      if not 'number_of_nodes' in request:
          request['number_of_nodes']=""
      # ignored in request: id, timestamp,  number_of_nodes, type_of_nodes, purpose
  
      query = Query.create('slice').set(slice_params).select('slice_hrn')
-     results = execute_query(wsgi_request, query)
+     results = execute_admin_query(wsgi_request, query)
      if not results:
          raise Exception, "Could not create %s. Already exists ?" % slice_params['hrn']
-     else:
-         clear_user_creds(wsgi_request,user_email)
+     else:     
+         clear_user_creds(wsgi_request,user_obj.username)
          # log user activity
-         activity.slice.validate(self.request, "Slice validation", { "slice" : hrn })
+         activity.slice.validate(request,{ "slice" : hrn }) #"Slice validation", { "slice" : hrn })
+       
          try:
              theme.template_name = 'slice_request_validated.txt'
              text_content = render_to_string(theme.template, request)
@@@ -752,7 -762,7 +762,7 @@@ def manifold_add_reference_user_account
          }
          manifold_add_account(wsgi_request, manifold_account_params)
  
 -def sfa_create_user(wsgi_request, request, namespace = None, as_admin = False):
 +def sfa_create_user(wsgi_request, request, namespace = None, as_admin = True):
      """
      Arguments:
          wsgi_request (~ WSGIRequest) : 
      #query = Query.create('user').set(sfa_user_params).select('user_hrn')
      #results = execute_query(wsgi_request, query)
  
 +    ###### Guilherme 08-07-2015
 +    ##subject = 'Teste das chaves publicas'
 +    ##message = 'Um novo usuario SFA esta sendo criado\n'
 +    ##message += "request['public_key']: " + request['public_key'] + '\n'
 +    ##message += "sfa_user_params['keys']: " + sfa_user_params['keys'] + '\n'
 +    ##send_mail(subject, message, 'support@fibre.org.br', [request['email']], fail_silently=False)
 +
      if namespace is not None:
          query = Query.create('%s:user' % namespace).set(sfa_user_params).select('user_hrn')
      else:
@@@ -889,7 -892,7 +899,7 @@@ def iotlab_create_user (wsgi_request, r
          "structure"     : request['authority_hrn'],
          "city"          : "N/A",
          "country"       : "N/A",
-         "sshPublicKey"  : [request['public_key']],
+         "sshPublicKey"  : request['public_key'],
          "motivations"   : "SFA federation",
      }    
     
diff --combined portal/homeview.py
@@@ -64,7 -64,7 +64,7 @@@ class HomeView (FreeAccessView, ThemeVi
        #################################################
        ## first you must open a connection to the server
        try:
 -              # Connect to NOC
 +              # Connect to UFRJ
                  l = ldap.initialize("ldap://200.130.15.186:389")
                # Bind/authenticate with a root user to search all objects
                l.simple_bind_s("cn=Manager,dc=br,dc=fibre","fibre2013")
          else:
              # log user activity
              #activity.user.login(self.request, "error")
 -            env['state'] = "Your username and/or password were incorrect."
 -            
 +
 +          env['state'] = "Your username and/or password were incorrect."
 +
              return render_to_response(self.template, env, context_instance=RequestContext(request))
  
      def get (self, request, state=None):
              # XXX Something like an invalid session seems to make the execute fail sometimes, and thus gives an error on the main page
              platform_details = execute_query(self.request, platform_query)
              account_details = execute_query(self.request, account_query)
-             for platform_detail in platform_details:
-                 for account_detail in account_details:
-                     if 'platform_id' in platform_detail:
-                         if platform_detail['platform_id'] == account_detail['platform_id']:
-                             if 'config' in account_detail and account_detail['config'] is not '':
-                                 account_config = json.loads(account_detail['config'])
-                                 if 'myslice' in platform_detail['platform']:
-                                     acc_auth_cred = account_config.get('delegated_authority_credentials','N/A')
-                                     acc_user_cred = account_config.get('delegated_user_credential','N/A')
+             if platform_details is not None and platform_details != {}:
+                 for platform_detail in platform_details:
+                     for account_detail in account_details:
+                         if 'platform_id' in platform_detail:
+                             if platform_detail['platform_id'] == account_detail['platform_id']:
+                                 if 'config' in account_detail and account_detail['config'] is not '':
+                                     account_config = json.loads(account_detail['config'])
+                                     if 'myslice' in platform_detail['platform']:
+                                         acc_auth_cred = account_config.get('delegated_authority_credentials','N/A')
+                                         acc_user_cred = account_config.get('delegated_user_credential','N/A')
              # assigning values
              if acc_auth_cred=={} or acc_auth_cred=='N/A':
                  pi = "is_not_pi"
@@@ -6,29 -6,32 +6,29 @@@
  
  {% block content %}
  <div class="container">
 -      <div class="row">
 -              <div class="col-md-12">
 -                       <div class="breadcrumbs">
 -                               Management &nbsp;>&nbsp; Institution: <span id="authority_name"></span>
 -                       </div>
 -              </div>
 -      </div>
 +  <div class="row">
 +    <div class="col-md-12">
 +      <div class="breadcrumbs">
 +        Management &nbsp;>&nbsp; Institution: <span id="authority_name"></span>
 +      </div>
 +    </div>
 +  </div>
  </div>
 +
  <div class="container">
 -      <div class="row">
 -              <div class="col-md-12">
 -                      <ul class="nav nav-tabs nav-section">
 -                              <!-- <li class="active"><a href="#about">About</a></li>-->
 -                              <li class="active"><a href="#users">Users</a></li>
 -                              <li><a href="#slices">Slices</a></li>
 -                              <li><a href="#requests">Requests</a></li>
 -                      </ul>
 -          </div>
 -      </div>
 +  <div class="row">
 +    <div class="col-md-12">
 +      <ul class="nav nav-tabs nav-section">
 +      <li class="active"><a href="#users">Users</a></li>
 +      <li><a href="#slices">Slices</a></li>
 +      <li><a href="#requests">Requests</a></li>
 +      </ul>
 +    </div>
 +  </div>
  </div>
 +
  <div class="container tab-content">
 -<!--
 -      <div class="tab-pane active row" id="about">
 -      </div>
 --->
 -      <div class="tab-pane row" id="users" data-authority="{{user_details.parent_authority}}">
 +      <div class="tab-pane active row" id="users" data-authority="{{user_details.parent_authority}}">
                <div class="col-md-12 el">
                        <div id="user-tab-loading"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading Slices" /></div>
                                <div id="user-tab-loaded" style="display:none;">
@@@ -95,13 -98,10 +95,10 @@@ $(document).ready(function() 
      {% if user_details.parent_authority %}
  
          $.post("/rest/slice/",{'filters':{'parent_authority':'{{user_details.parent_authority}}'}}, function( data ) {
-           var username = "{{person.username}}";
              var list_slices = [];
              var table_slices = [];
              /* "slice_hrn", "slice_description", "slice_type", "parent_authority", "created", "nodes", "slice_url", "slice_last_updated", "users", "slice_urn", "slice_expires" */
              $.each( data, function( key, val ) {
-               if(String(val.users[0]).indexOf("@") != -1){
-               if(String(val.users[0]).split("@")[1] == username.split("@")[1]){
                  list_slices.push( "<li><a href=\"portal/slice/"+val.slice_hrn+"\">" + val.slice_hrn + "</a></li>" );
                  if(val.nodes=="undefined" || val.nodes==null){
                      nodes_length=0;
                  slice_row += "<td>"+val.slice_expires+"</td>";
                  slice_row += "</tr>";
                  table_slices.push(slice_row);
-               }
-               }
              });
             
              /* $("div#slice-list").html($( "<ul/>", { html: list_slices.join( "" ) })); */