Я хотел бы прагматично управлять списком разрешенных типов контента отдельных объектов.
Я создаю коллекцию типов контента с помощью archgenxml.В одном случае у меня есть класс моделирования, состоящий из класса RangeBase, который имеет три реализации: valueRange, vectorRange иiformRange.Симуляция может содержать ровно один диапазон, т. Е. Кратность RangeBase равна единице, поэтому в меню добавления симуляции должны быть предложены либо все три типа диапазонов, либо ни одного.и события IObjectRemovedEvent;помещая их соответствующие обработчики, initializedHook и removeHook, в класс RangeBase.Обработчики запрашивают список объектов локально разрешенных типов и соответственно удаляют или добавляют три диапазона.Изучив «Документацию разработчика сообщества» Plone, я подумал, что код initializedHook может выглядеть примерно так:
# Set allowed content types
from Products.ATContentTypes.lib import constraintypes
def initializedHook(obj, event):
# Get this range's parent simulation
parent = obj.aq_parent
# Enable constraining
parent.setConstrainTypesMode(constraintypes.ENABLED)
# Remove the three ranges
allowedTypes = parent.getLocallyAllowedTypes()
ranges = ('valueRange','vectorRange','uniformRange')
for range in ranges:
allowedTypes.remove(range)
# Tweak the menu
parent.setLocallyAllowedTypes(allowedTypes)
parent.setImmediatelyAddableTypes(allowedTypes)
К сожалению, мой класс моделирования не имеет ни одной из этих функций.
Есть лиадаптер, который предоставит моему классу симуляции эту функциональность, или есть другие совершенно разные подходы для достижения желаемого поведения меню?Любые предложения будут оценены.