Create Project: url field added
[myslice.git] / portal / projectrequestview.py
index 69941b3..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,20 +20,6 @@ from myslice.settings import logger
 class ProjectRequestView(LoginRequiredAutoLogoutView, ThemeView):
     template_name = 'projectrequest_view.html'
     
-    def getAuthorities(self, request):
-        if self.theme == 'fed4fire':
-            authorities_query = Query.get('myslice:authority').select('authority_hrn')
-        else:
-            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'])
-            if self.theme != 'fed4fire':
-                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')
@@ -86,7 +73,7 @@ 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)
         
@@ -119,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
@@ -140,7 +128,7 @@ 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