X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FPersons.py;h=5a0240379790c8c33badb819fbf9be12e31e69e3;hb=fe81b2c91b436b1882f63023413c7f51b29538ed;hp=8aa638eda0ca9908901426a61e713779146705d3;hpb=f8f4dd18ee4895d2941b14a65c51d87ceed802fe;p=plcapi.git diff --git a/PLC/Persons.py b/PLC/Persons.py index 8aa638ed..5a024037 100644 --- a/PLC/Persons.py +++ b/PLC/Persons.py @@ -9,8 +9,10 @@ # from types import StringTypes -from datetime import datetime -import md5 +try: + from hashlib import md5 +except ImportError: + from md5 import md5 import time from random import Random import re @@ -78,25 +80,25 @@ class Person(Row): """ Validate email address. Stolen from Mailman. """ - + email = email.lower() invalid_email = PLCInvalidArgument("Invalid e-mail address") if not email: raise invalid_email - email_re = re.compile('[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-_]+\.[a-zA-Z]+') + email_re = re.compile('\A[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9._\-]+\.[a-zA-Z]+\Z') if not email_re.match(email): raise invalid_email # check only against users on the same peer - if 'peer_id' in self: + if 'peer_id' in self: namespace_peer_id = self['peer_id'] else: namespace_peer_id = None - conflicts = Persons(self.api, {'email':email,'peer_id':namespace_peer_id}) + conflicts = Persons(self.api, {'email':email,'peer_id':namespace_peer_id}) - for person in conflicts: + for person in conflicts: if 'person_id' not in self or self['person_id'] != person['person_id']: raise PLCInvalidArgument, "E-mail address already in use" @@ -116,7 +118,7 @@ class Person(Row): else: # Generate a somewhat unique 8 character salt string salt = str(time.time()) + str(Random().random()) - salt = md5.md5(salt).hexdigest()[:8] + salt = md5(salt).hexdigest()[:8] return crypt.crypt(password.encode(self.api.encoding), magic + salt + "$") validate_date_created = Row.validate_timestamp