X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Fjoinview.py;h=832055bdfc76230e8fe90ecffd8675bc73cafc7b;hb=bff32abff469690c249af3b4f1cbb6905bd70e0d;hp=8356dec7bc1c94c784ca0c168918d49e43a261de;hpb=06be272232c9f387a12ad10ee87f798720bb6938;p=unfold.git diff --git a/portal/joinview.py b/portal/joinview.py index 8356dec7..832055bd 100644 --- a/portal/joinview.py +++ b/portal/joinview.py @@ -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)