From 79eadfa08ef746d1477b81ab3eda3559819a7576 Mon Sep 17 00:00:00 2001
From: Yasin <mohammed-yasin.rahman@lip6.fr>
Date: Thu, 6 Mar 2014 15:05:44 +0100
Subject: [PATCH] Registration:  email is checked in sfa, query is very very
 slowgit add registrationview.py

---
 portal/registrationview.py | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/portal/registrationview.py b/portal/registrationview.py
index 8fd5917b..f79b1b5d 100644
--- a/portal/registrationview.py
+++ b/portal/registrationview.py
@@ -41,14 +41,7 @@ class RegistrationView (FreeAccessView, ThemeView):
         authorities = execute_admin_query(wsgi_request, authorities_query)
         if authorities is not None:
             authorities = sorted(authorities)
-
-        # xxx tocheck - if authorities is empty, it's no use anyway
-        # (users won't be able to validate the form anyway)
-
-        # Who am I ?
-        user_query  = Query().get('local:user').select('user_id','email')
-        user_details = execute_admin_query(wsgi_request, user_query)
-
+        
         # Page rendering
         page = Page(wsgi_request)
         page.add_js_files  ( [ "js/jquery.validate.js", "js/my_account.register.js" ] )
@@ -83,9 +76,18 @@ class RegistrationView (FreeAccessView, ThemeView):
                 errors.append('Email is pending for validation. Please provide a new email address.')
             if UserModel._default_manager.filter(email__iexact = user_request['email']): 
                 errors.append('This email is not usable. Please contact the administrator or try with another email.')
+            # Does the user exist in Manifold?
+            user_query  = Query().get('local:user').select('user_id','email')
+            user_details = execute_admin_query(wsgi_request, user_query)
             for user_detail in user_details:
                 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_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.')
 
             # XXX TODO: Factorize with portal/accountview.py
             if 'generate' in wsgi_request.POST['question']:
-- 
2.47.0