def create_identity_relationships(self, req): self.requires_get_or_post(req) args = self.get_args(req, 'contact_properties', 'relationships', ext_id="rd.api") db = RDCouchDB(req) # items_from_related_identities must be moved! from raindrop.extenv import items_from_related_identities gen = items_from_related_identities(db.doc_model, args['relationships'], args['contact_properties'], args['ext_id']) return db.doc_model.create_schema_items(list(gen))
def test_common_displayname(self): # Here we process 2 identities, each with a different email address # but both with a common display-name. We should end up with a single # contact with both identities. si = {'rd_key': ['identity', ['email', '*****@*****.**']], 'rd_schema_id': 'rd.identity.exists', 'rd_source' : None, 'rd_ext_id': 'rd.testsuite', 'items': None, } self.doc_model.create_schema_items([si]) # and make a contact for this address. contact = {'displayName': 'test user'} from raindrop import extenv idrels = [(si['rd_key'][1], 'email')] items = list(extenv.items_from_related_identities(self.doc_model, idrels, contact, 'rd.testsuite')) self.doc_model.create_schema_items(items) # should be one contact with one identity. self.verifyCounts(1, 1) # now create the second identity with the same display name. si = {'rd_key': ['identity', ['email', '*****@*****.**']], 'rd_schema_id': 'rd.identity.exists', 'rd_source' : None, 'rd_ext_id': 'rd.testsuite', 'items': None, } self.doc_model.create_schema_items([si]) idrels = [(si['rd_key'][1], 'email')] items = list(extenv.items_from_related_identities(self.doc_model, idrels, contact, 'rd.testsuite')) self.doc_model.create_schema_items(items) # should be one contact with two identities. self.verifyCounts(1, 2)