X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FVerifyPerson.py;h=b34506a1a845a925fc186454a716ce3e5d58aba1;hb=e70e20fdbececafef842ec7b330fd48db42e614e;hp=f4f3263f4aa58e9c0125239077245ae75217a370;hpb=5a44e1ff78e60c61f221a9fcf3576b4cdb127360;p=plcapi.git diff --git a/PLC/Methods/VerifyPerson.py b/PLC/Methods/VerifyPerson.py index f4f3263..b34506a 100644 --- a/PLC/Methods/VerifyPerson.py +++ b/PLC/Methods/VerifyPerson.py @@ -3,7 +3,7 @@ import base64 import time import urllib -from PLC.Debug import log +from PLC.Logger import logger from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed @@ -36,24 +36,24 @@ class VerifyPerson(Method): Auth(), Mixed(Person.fields['person_id'], Person.fields['email']), - Person.fields['verification_key'], + Person.fields['verification_key'], Person.fields['verification_expires'] ] returns = Parameter(int, '1 if verification_key is valid') def call(self, auth, person_id_or_email, verification_key = None, verification_expires = None): - # Get account information + # Get account information persons = Persons(self.api, [person_id_or_email]) if not persons: - raise PLCInvalidArgument, "No such account" + raise PLCInvalidArgument, "No such account %r"%person_id_or_email person = persons[0] if person['peer_id'] is not None: - raise PLCInvalidArgument, "Not a local account" + raise PLCInvalidArgument, "Not a local account %r"%person_id_or_email if person['enabled']: - raise PLCInvalidArgument, "Account must be new (disabled)" + raise PLCInvalidArgument, "Account %r must be new (disabled)"%person_id_or_email # Get the primary site name person_sites = Sites(self.api, person['site_ids']) @@ -68,9 +68,9 @@ class VerifyPerson(Method): random_key = base64.b64encode("".join(map(chr, bytes))) if verification_key is None or \ - (verification_key is not None and person['verification_expires'] and \ - person['verification_expires'] < time.time()): - # Only allow one verification at a time + (verification_key is not None and person['verification_expires'] and \ + person['verification_expires'] < time.time()): + # Only allow one verification at a time if person['verification_expires'] is not None and \ person['verification_expires'] > time.time(): raise PLCPermissionDenied, "Verification request already pending" @@ -89,12 +89,12 @@ class VerifyPerson(Method): message_id = 'Verify account' - elif verification_key is not None: + elif verification_key is not None: if person['verification_key'] is None or \ person['verification_expires'] is None: raise PLCPermissionDenied, "Invalid Verification key" elif person['verification_key'] != verification_key: - raise PLCPermissionDenied, "Verification key incorrect" + raise PLCPermissionDenied, "Verification key incorrect" else: person['verification_key'] = None person['verification_expires'] = None @@ -105,7 +105,7 @@ class VerifyPerson(Method): for site in person_sites: person_ids.update(site['person_ids']) persons = Persons(self.api, person_ids) - pis = filter(lambda person: 'pi' in person['roles'], persons) + pis = filter(lambda person: 'pi' in person['roles'] and person['enabled'], persons) # Send e-mail to PI(s) and copy the user To = [("%s %s" % (pi['first_name'], pi['last_name']), pi['email']) for pi in pis] @@ -143,14 +143,14 @@ class VerifyPerson(Method): Subject = message['subject'] % params, Body = message['template'] % params) else: - print >> log, "Warning: No message template '%s'" % message_id + logger.warning("No message template '%s'" % message_id) - # Logging variables - self.object_ids = [person['person_id']] + # Logging variables + self.event_objects = {'Person': [person['person_id']]} self.message = message_id - - if verification_key is not None and person['verification_expires'] and \ + + if verification_key is not None and person['verification_expires'] and \ person['verification_expires'] < time.time(): - raise PLCPermissionDenied, "Verification key has expired. Another email has been sent." + raise PLCPermissionDenied, "Verification key has expired. Another email has been sent." return 1