Restricting addable types¶
The constrain-types machinery and how it drives the "restrict..." option under the "add item" menu.
As of Plone 2.1, the “add item” menu supports a “restrict…” page that
lets the user decide which items can and cannot be added to that folder.
This functionality is defined in a pair of interfaces in
IConstrainTypes for read-only access
ISelectableConstrainTypes for the mutators.
The canonical implementation of these interfaces is in
ATContentTypes.lib.constraintypes. This provides storage for the
constraint mode (more below) and the list of locally allowed and
“preferred” types. The preferred types are the ones that appear in the
list immediately, and the rest of the allowed types appear behind a
The constraint type mode can be
ACQUIRE (the default),
ENABLED. When disabled, the settings in
portal\_types are used. When
enabled, the list of types explicitly set are used. When set to acquire,
the parent folder`s types will be used *if* the parent is of the same
portal type as the folder in question. If they are of different types
the settings in
The rest of the
ConstrainTypesMixin class overrides CMFCore`s
invokeFactory methods to ensure the
constraints are enforced.