def test_membership_changed(self): tools.add_attribute_to_metadata('organizations', catalog_id) organization = self.new_temporary_folder() person = self.get_test_person() memberships = [Membership(person, 'vice-president')] class Source(TestAdapter): def memberships(self, person=None): return {IUUID(organization): memberships} with self.custom_source(Source): catalog = api.portal.get_tool(catalog_id) rid = tools.get_brain_by_object(person, catalog_id).getRID() get_orgs = lambda: catalog.getMetadataForRID(rid)['organizations'] # because the membership source was added after the person # was created, the organizations metadata column is empty self.assertEqual(get_orgs(), []) # after signalling that the membership has changed, the # organizations should be available notify(MembershipChangedEvent(person)) self.assertEqual(get_orgs(), [organization.id])
def test_add_attribute_to_metadata(self): catalog = api.portal.get_tool('portal_catalog') tools.add_attribute_to_metadata('test') self.assertIn('test', catalog._catalog.schema) # ensure that a second call doesn't do anything tools.add_attribute_to_metadata('test') self.assertIn('test', catalog._catalog.schema)
def update_metadata(fti): compound_columns = get_compound_columns() for column in get_columns(fti.lookupSchema()): for field in column: tools.add_attribute_to_metadata(field, catalog_id) if field in compound_columns: tools.add_attribute_to_metadata( compound_columns[field], catalog_id)