Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into onelab
authorCiro Scognamiglio <ciro.scognamiglio@cslash.net>
Thu, 21 Aug 2014 16:32:40 +0000 (18:32 +0200)
committerCiro Scognamiglio <ciro.scognamiglio@cslash.net>
Thu, 21 Aug 2014 16:32:40 +0000 (18:32 +0200)
debian/deb-cheat-sheet
portal/emailactivationview.py
portal/forms.py
portal/templates/onelab/onelab_home-view.html

index 182c3d3..3d3f1bc 100644 (file)
@@ -21,3 +21,7 @@ dpkg -i foo.deb
 - or, if this has deps that need to be pulled through apt-get:
 gdebi foo.deb
 (install with apt-get install -y gdebi-core)
+
+--- find which package a file belongs to
+apt-file search /path/to/file
+(can be installed with : sudo apt-get install apt-file)
index a485bc3..533cccf 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)
 
@@ -40,7 +52,6 @@ class ActivateEmailView(FreeAccessView, ThemeView):
                 hash_code=value
         if PendingUser.objects.filter(email_hash__iexact = hash_code).filter(status__iexact = 'False'):           
             activation = 'success'
-            PendingUser.objects.filter(email_hash__iexact = hash_code).update(status='True')
 
             # AUTO VALIDATION of PLE enabled users (only for OneLab Portal)
             if self.theme == "onelab":
@@ -50,26 +61,20 @@ class ActivateEmailView(FreeAccessView, ThemeView):
                 # TODO in SFA XXX We need a Resolve based on email
                 # TODO maybe we can use MyPLC API for PLE
                 pending_users = PendingUser.objects.filter(email_hash__iexact = hash_code)
+
+                # by default user is not in PLE
+                ple_user_enabled = False
+
                 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
-                        else:
-                            ple_user_enabled = False
-
+                    
                     # 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
-                        #PendingUser.objects.filter(email_hash__iexact = hash_code).delete()
+                        PendingUser.objects.filter(email_hash__iexact = hash_code).delete()
 
                         # template user auto validated
                         activation = 'validated'
@@ -96,6 +101,7 @@ class ActivateEmailView(FreeAccessView, ThemeView):
                         #    import traceback
                         #    traceback.print_exc()
             
+            PendingUser.objects.filter(email_hash__iexact = hash_code).update(status='True')
         else:
             activation = 'failed'
         
index 67e02a1..e5087d8 100644 (file)
@@ -85,15 +85,8 @@ class ContactForm(forms.Form):
    #                              label=_("authority"),
    #                              error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})
     email = forms.EmailField(widget=forms.TextInput(attrs={'class':'form-control'}))
-    subject = forms.RegexField(widget=forms.TextInput(attrs={'class':'form-control'}),
-                                regex=r'^[\w+\s\w+]+$',
-                                 max_length=100,
-                                 label=_("subject"),
-                                 error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})
-    description = forms.RegexField(widget=forms.Textarea(attrs={'class':'form-control'}),
-                                regex=r'^[\w+\s\w+]+$',
-                                 label=_("description"),
-                                 error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})    
+    subject = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}))
+    description = forms.CharField(widget=forms.Textarea(attrs={'class':'form-control'}))
     #cc_myself = forms.BooleanField(required=False,widget=forms.CheckboxInput(attrs={'class':'form-control'}))
 
 class PassResetForm(forms.Form):
index b6908ed..898a785 100644 (file)
@@ -182,7 +182,7 @@ This should go into session
 --------*/
 });
 </script>
-{% widget "_widget-monitor.html" %}
-{% widget "_widget-stats-top-slices.html" %}
+{# widget "_widget-monitor.html" #}
+{# widget "_widget-stats-top-slices.html" #}
 
-{% endblock %}
\ No newline at end of file
+{% endblock %}