From: Thierry Parmentelat Date: Fri, 3 Feb 2012 08:46:51 +0000 (+0100) Subject: store incoming keys when adding a user record X-Git-Tag: sfa-2.1-2~12 X-Git-Url: http://git.onelab.eu/?p=sfa.git;a=commitdiff_plain;h=a57f14522958756b44f102860161b5b9df8f2d89 store incoming keys when adding a user record --- diff --git a/sfa/managers/registry_manager.py b/sfa/managers/registry_manager.py index 79ac91c0..ddca3ae5 100644 --- a/sfa/managers/registry_manager.py +++ b/sfa/managers/registry_manager.py @@ -18,7 +18,7 @@ from sfa.trust.credential import Credential from sfa.trust.certificate import Certificate, Keypair, convert_public_key from sfa.trust.gid import create_uuid -from sfa.storage.model import make_record,RegRecord +from sfa.storage.model import make_record, RegRecord, RegUser from sfa.storage.alchemy import dbsession class RegistryManager: @@ -295,6 +295,10 @@ class RegistryManager: gid = auth_info.get_gid_object() record.gid=gid.save_to_string(save_parents=True) + # post-process / cleanup for relation ships + if isinstance (record, RegUser): + record.normalize_xml() + # update testbed-specific data if needed pointer = self.driver.register (record.__dict__, hrn, pub_key) diff --git a/sfa/storage/model.py b/sfa/storage/model.py index da667167..30670f4a 100644 --- a/sfa/storage/model.py +++ b/sfa/storage/model.py @@ -201,7 +201,7 @@ class RegUser (RegRecord): email = Column ('email', String) # can't use name 'keys' here because when loading from xml we're getting # a 'keys' tag, and assigning a list of strings in a reference column like this crashes - reg_keys = relationship ('RegKey', backref='reg_user') + reg_keys = relationship ('RegKey', backref='reg_user') def __init__ (self, **kwds): # handle local settings @@ -222,6 +222,9 @@ class RegUser (RegRecord): assert '@' in address return address + def normalize_xml (self): + if hasattr(self,'keys'): self.reg_keys = [ RegKey (key) for key in self.keys ] + #################### # xxx tocheck : not sure about eager loading of this one # meaning, when querying the whole records, we expect there should @@ -293,3 +296,4 @@ def make_record_xml (xml): xml_dict = xml_record.todict() logger.info("load from xml, keys=%s"%xml_dict.keys()) return make_record_dict (xml_dict) +