AiC and REST login
[myslice.git] / portal / projectrequestview.py
index 086d60c..2757b94 100644 (file)
@@ -1,3 +1,4 @@
+import requests
 import json
 import time
 import re
@@ -10,7 +11,7 @@ from manifoldapi.manifoldapi    import execute_admin_query, execute_query
 
 from unfold.loginrequired       import LoginRequiredAutoLogoutView
 
-from portal.actions import create_pending_project, create_pending_join, sfa_add_authority, authority_add_pis, is_pi
+from portal.actions import create_pending_project, create_pending_join, sfa_add_authority, authority_add_pis, is_pi, getAuthorities
 from portal.models import PendingProject, PendingJoin
 
 from myslice.theme import ThemeView
@@ -19,16 +20,6 @@ from myslice.settings import logger
 class ProjectRequestView(LoginRequiredAutoLogoutView, ThemeView):
     template_name = 'projectrequest_view.html'
     
-    def getAuthorities(self, request):
-        authorities_query = Query.get('authority').select('name', 'authority_hrn')
-        authorities = execute_admin_query(request, authorities_query)
-        if authorities is not None:
-            # Remove the root authority from the list
-            matching = [s for s in authorities if "." in s['authority_hrn']]
-            authorities = sorted(matching, key=lambda k: k['authority_hrn'])
-            authorities = sorted(matching, key=lambda k: k['name'])
-        return authorities
-    
     def getUserAuthority(self, request):
         # Get user_email (XXX Would deserve to be simplified)
         user_query  = Query().get('local:user').select('email','config')
@@ -82,14 +73,14 @@ class ProjectRequestView(LoginRequiredAutoLogoutView, ThemeView):
 
         user_email = self.getUserEmail(wsgi_request)
         
-        authorities = self.getAuthorities(wsgi_request)
+        authorities = getAuthorities(wsgi_request)
         
         user_authority = self.getUserAuthority(wsgi_request)
         
         # getting the org from authority
-        for authority in authorities:
-            if authority['authority_hrn'] == user_authority:
-                authority_name = authority['name']
+        #for authority in authorities:
+        #    if authority['authority_hrn'] == user_authority:
+        #        authority_name = authority['name']
         
         if method == 'POST' :
 
@@ -115,6 +106,7 @@ class ProjectRequestView(LoginRequiredAutoLogoutView, ThemeView):
                     'authority_hrn'     : wsgi_request.POST.get('authority_name', ''),
                     'project_name'      : project_name,
                     'purpose'           : wsgi_request.POST.get('purpose', ''),
+                    'url'               : wsgi_request.POST.get('url', ''),
                 }
 
                 # for new projects max project_name length is 10
@@ -136,11 +128,13 @@ class ProjectRequestView(LoginRequiredAutoLogoutView, ThemeView):
             
             if not errors:
                 logger.info("is_pi on auth_hrn = {}".format(user_authority))
-                if is_pi(wsgi_request, user_hrn, user_authority):
+                if is_pi(wsgi_request, user_hrn, post['authority_hrn']):
                     # PIs can directly create/join project in their own authority...
                     if 'join' in wsgi_request.POST:
+                        # join existing project
                         authority_add_pis(wsgi_request, post['project_name'], user_hrn)
                     else:
+                        # Create project
                         hrn = post['authority_hrn'] + '.' + post['project_name']
                         sfa_add_authority(wsgi_request, {'authority_hrn':hrn})
                         authority_add_pis(wsgi_request, hrn, user_hrn)