diff --git a/plone/dexterity/fti.py b/plone/dexterity/fti.py index f5c2e4b..131077b 100644 --- a/plone/dexterity/fti.py +++ b/plone/dexterity/fti.py @@ -367,11 +367,11 @@ def unregister(fti, old_name=None): site_manager = getSiteManager(site) portal_type = old_name or fti.getId() + + notify(SchemaInvalidatedEvent(portal_type)) site_manager.unregisterUtility(provided=IDexterityFTI, name=portal_type) - unregister_factory(fti.factory, site_manager) - - notify(SchemaInvalidatedEvent(portal_type)) + unregister_factory(fti.factory, site_manager) def unregister_factory(factory_name, site_manager): """Helper method to unregister factories when unused by any dexterity @@ -465,4 +465,4 @@ def ftiModified(object, event): model = fti.lookupModel() syncSchema(model.schema, schema, overwrite=True) - notify(SchemaInvalidatedEvent(portal_type)) \ No newline at end of file + notify(SchemaInvalidatedEvent(portal_type)) diff --git a/plone/dexterity/schema.py b/plone/dexterity/schema.py index 38ea083..5188299 100644 --- a/plone/dexterity/schema.py +++ b/plone/dexterity/schema.py @@ -115,7 +115,8 @@ class SchemaCache(object): @synchronized(lock) def invalidate(self, portal_type): fti = queryUtility(IDexterityFTI, name=portal_type) - invalidate_cache(fti) + if fti is not None: + invalidate_cache(fti) SCHEMA_CACHE = SchemaCache()