def get_schemas(model_or_obj, marker=None): model_or_obj = removeSecurityProxy(model_or_obj) for schema in get_direct_interfaces(model_or_obj): yield schema model = model_or_obj if isinstance(model_or_obj, type) else type(model_or_obj) for schema in getSiteManager().adapters._adapters[1].get(implementedBy(model), []): yield schema if model_implements_marker(model_or_obj, marker): yield marker
def migrate_image_to_file(obj): image = obj.getImage() # Use the functionality of the UpgradeStep class MigrateToFile(UpgradeStep): def __call__(self): # This is an AT => AT migration; we just replace the class. self.migrate_class(obj, File) MigrateToFile(obj.portal_setup) # clear archetypes.schemaextender cache getattr(obj.REQUEST, CACHE_KEY).pop(IUUID(obj), None) ifaces_to_remove = (set(providedBy(obj)) - set(implementedBy(obj.__class__))) map(partial(noLongerProvides, obj), ifaces_to_remove) obj.Schema() obj.setFile(image) obj.setDocumentDate(obj.created()) obj.portal_type = 'File'
def query_adapter_for_class(cls, interface): return getSiteManager().adapters.lookup([implementedBy(cls)], interface)