activity for users
[unfold.git] / portal / joinview.py
index 8356dec..832055b 100644 (file)
@@ -23,6 +23,8 @@ from portal.actions             import authority_get_pi_emails, manifold_add_use
 
 from myslice.theme import ThemeView
 
+import activity.institution
+
 # since we inherit from FreeAccessView we cannot redefine 'dispatch'
 # so let's override 'get' and 'post' instead
 #
@@ -74,6 +76,8 @@ class JoinView (FreeAccessView, ThemeView):
             #prepare user_hrn 
             split_email = reg_email.split("@")[0] 
             split_email = split_email.replace(".", "_")
+            # Replace + by _ => more convenient for testing and validate with a real email
+            split_email = split_email.replace("+", "_")
             user_hrn = reg_auth + '.' + split_email
             
             UserModel = get_user_model()
@@ -91,6 +95,16 @@ class JoinView (FreeAccessView, ThemeView):
                 errors.append('First Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
             if (re.search(r'^[\w+\s.@+-]+$', reg_lname) == None):
                 errors.append('Last Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+            if (re.search(r'^[A-Za-z0-9_ ]*$', reg_site_name) == None):
+                errors.append('Name of organization  may contain only letters, numbers, and underscore.')
+            if (re.search(r'^[A-Za-z ]*$', reg_address_city) == None):
+                errors.append('City may contain only letters.')
+            if (re.search(r'^[A-Za-z ]*$', reg_address_country) == None):
+                errors.append('Country may contain only letters.')
+            if (re.search(r'^[A-Za-z0-9]*$', reg_site_abbreviated_name) == None):
+                errors.append('Shortname  may contain only letters and numbers')
+            if (re.search(r'^[0-9]*$', reg_phone) == None):
+                errors.append('Phone number may contain only numbers.')
             #if (re.search(r'^\w+$', reg_site_authority) == None):
             #    errors.append('Site Authority may contain only letters or numbers.')
             # checking in django_db !!
@@ -108,18 +122,15 @@ class JoinView (FreeAccessView, ThemeView):
                     errors.append('Email already registered in Manifold. Please provide a new email address.')
 
 # XXX TODO: Factorize with portal/accountview.py
+# XXX TODO: Factorize with portal/registrationview.py
+# XXX TODO: Factorize with portal/joinview.py
 #            if 'generate' in request.POST['question']:
             from Crypto.PublicKey import RSA
             private = RSA.generate(1024)
-            private_key = json.dumps(private.exportKey())
-            public  = private.publickey()
-            public_key = json.dumps(public.exportKey(format='OpenSSH'))
-
+            private_key = private.exportKey()
+            public_key = private.publickey().exportKey(format='OpenSSH')
             # Saving to DB
-            account_config = '{"user_public_key":'+ public_key + ', "user_private_key":'+ private_key + ', "user_hrn":"'+ user_hrn + '"}'
             auth_type = 'managed'
-            public_key = public_key.replace('"', '');
-            private_key = private_key.replace('"', '');
 
             if not errors:
                 reg_password = request.POST['pi_password']
@@ -230,6 +241,8 @@ class JoinView (FreeAccessView, ThemeView):
                     print "Failed to send email, please check the mail templates and the SMTP configuration of your server"
                 
                 self.template_name = 'join_complete.html'
+                # log institution activity
+                activity.institution.joined(self.request)
                 return render(request, self.template, {'theme': self.theme})
                 #return render(request, 'user_register_complete.html') 
 
@@ -260,4 +273,6 @@ class JoinView (FreeAccessView, ThemeView):
           'theme': self.theme
           }
         template_env.update(page.prelude_env ())
+        # log institution activity
+        activity.institution.join(self.request)
         return render(request, 'join_view.html',template_env)