class FormContentAdapter(object): def __init__(self, context): self.context = ISelectableConstrainTypes(context) @property def constrain_types_mode(self): return self.context.getConstrainTypesMode() @property def allowed_types(self): return self.context.getLocallyAllowedTypes() @property def secondary_types(self): immediately_addable = self.context.getImmediatelyAddableTypes() return [t for t in self.context.getLocallyAllowedTypes() if t not in immediately_addable]
def handle_auto_folder_creation(self, folder, type_): # we only auto publish built-in repositories, otherwise, leave it be try: if api.content.get_state(obj=folder) != 'published': api.content.transition(obj=folder, transition='publish') except WorkflowException: pass aspect = ISelectableConstrainTypes(folder, None) if (aspect and (aspect.getConstrainTypesMode() != 1 or [type_] != aspect.getImmediatelyAddableTypes())): aspect.setConstrainTypesMode(1) try: aspect.setImmediatelyAddableTypes([type_]) except: pass if not getattr(folder, 'exclude_from_nav', False): # if auto generated path, exclude from nav folder.exclude_from_nav = True folder.reindexObject()