RT 81 - If the user has registered a new authority, we don't validate automatically...
authorLoic Baron <loic.baron@lip6.fr>
Tue, 19 Aug 2014 09:53:12 +0000 (11:53 +0200)
committerLoic Baron <loic.baron@lip6.fr>
Tue, 19 Aug 2014 09:53:12 +0000 (11:53 +0200)
portal/emailactivationview.py

index 4680256..b7f9cd5 100644 (file)
@@ -11,7 +11,7 @@ from django.http                        import HttpResponse, HttpResponseRedirec
 from django.contrib                     import messages
 from django.contrib.auth.decorators     import login_required
 from myslice.theme                      import ThemeView
-from portal.models                      import PendingUser
+from portal.models                      import PendingUser, PendingAuthority
 from django.core.mail                   import EmailMultiAlternatives, send_mail
 from django.contrib.sites.models        import Site
 
@@ -21,10 +21,22 @@ import json, os, re, itertools
 def ValuesQuerySetToDict(vqs):
     return [item for item in vqs]
 
-
 # requires login
 class ActivateEmailView(FreeAccessView, ThemeView):
     template_name = "email_activation.html"
+    def is_ple_enabled(self, pending_user):
+        pending_authorities = PendingAuthority.objects.filter(site_authority__iexact = pending_user.authority_hrn)
+        if pending_authorities:
+            return False                        
+        pending_user_email = pending_user.email
+        query = Query.get('myplcuser').filter_by('email', '==', pending_user_email).select('enabled')
+        results = execute_admin_query(self.request, query)
+        for result in results:
+            # User is enabled in PLE
+            if 'enabled' in result and result['enabled']==True:
+                return True
+        return False
+
     def dispatch(self, *args, **kwargs):
         return super(ActivateEmailView, self).dispatch(*args, **kwargs)
 
@@ -55,18 +67,10 @@ class ActivateEmailView(FreeAccessView, ThemeView):
 
                 if pending_users:
                     pending_user = pending_users[0]
-                    pending_user_request = make_request_user(pending_user)
-                    pending_user_email = pending_users[0].email
-                    query = Query.get('myplcuser').filter_by('email', '==', pending_user_email).select('enabled')
-                    results = execute_admin_query(self.request, query)
-                    for result in results:
-                        # User is enabled in PLE
-                        if 'enabled' in result and result['enabled']==True:
-                            ple_user_enabled = True
-                            break
-
+                    
                     # Auto Validation 
-                    if ple_user_enabled:
+                    if self.is_ple_enabled(pending_user):
+                        pending_user_request = make_request_user(pending_user)
                         # Create user in SFA and Update in Manifold
                         create_user(self.request, pending_user_request, namespace = 'myslice', as_admin = True)
                         # Delete pending user