X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FAddPersonToSite.py;h=9710f2ba6e0d88b0684f912d4c12da43561f7b0a;hb=e70e20fdbececafef842ec7b330fd48db42e614e;hp=a6699cf06d6c829007e71caa40373a245826d071;hpb=304a048edbc3909357c8b4e85ea583a673c3cedd;p=plcapi.git diff --git a/PLC/Methods/AddPersonToSite.py b/PLC/Methods/AddPersonToSite.py index a6699cf..9710f2b 100644 --- a/PLC/Methods/AddPersonToSite.py +++ b/PLC/Methods/AddPersonToSite.py @@ -1,12 +1,14 @@ -# $Id$ -# $URL$ from PLC.Faults import * +from PLC.Auth import Auth from PLC.Method import Method from PLC.Parameter import Parameter, Mixed -from PLC.Persons import Person, Persons from PLC.Sites import Site, Sites -from PLC.Auth import Auth -from PLC.SFA import SFA +from PLC.Persons import Person, Persons +from PLC.PersonTags import PersonTags, PersonTag +from PLC.Namespace import email_to_hrn +from PLC.TagTypes import TagTypes + +from PLC.Logger import logger class AddPersonToSite(Method): """ @@ -57,7 +59,31 @@ class AddPersonToSite(Method): self.message = 'Person %d added to site %d' % \ (person['person_id'], site['site_id']) - sfa = SFA(self.api) - sfa.update_record(person, 'user') + # maintain person's hrn + # only if at this point we have a single site + # which means, there was no site attached to person upon entering this call + try: + had_no_site= (len (person['site_ids']) == 0) + if had_no_site: + login_base = site['login_base'] + root_auth = self.api.config.PLC_HRN_ROOT + hrn = email_to_hrn("%s.%s"%(root_auth,login_base),person['email']) + tagname = 'hrn' + tag_type = TagTypes(self.api,{'tagname':tagname})[0] + person_tags = PersonTags(self.api,{'tagname':tagname,'person_id':person['person_id']}) + if not person_tags: + person_tag = PersonTag(self.api) + person_tag['person_id'] = person['person_id'] + person_tag['tag_type_id'] = tag_type['tag_type_id'] + person_tag['tagname'] = tagname + person_tag['value'] = hrn + person_tag.sync() + else: + person_tag = person_tags[0] + person_tag['value'] = hrn + person_tag.sync() + except Exception as e: + logger.exception("ERROR cannot maintain person's hrn, {}" + .format(person_id_or_email)) return 1