Как сгенерировать адрес (short_name) объекта
Автор: Константин Батьков
—
Последнее изменение:
2010-08-21 21:05
Показывается пример программного генерирования адреса (short_name) объектов разрабатываемого продукта.
По умолчанию Plone генерирует адрес (short_name) объекта на основании его названия (Title). Это поведение можно изменить следующими способами:
Редактирование адреса вручную
Для этого нужно просто включить чекбокс "Enable Short Name Editing" в настройках редактирования сайта (Меню "Установки сайта" › "Редактирование").
Программное генерирование адреса
Для этого нужно в классе вашего продукта определить метод _renameAfterCreation. В качестве примера можно рассмотреть случай, когда объектам просто присваивается последовательный номер. Вот как это сделано в POI: def _renameAfterCreation(self, check_auto_id=False):
parent = self.aq_inner.aq_parent
maxId = 0
for id in parent.objectIds():
try:
intId = int(id)
maxId = max(maxId, intId)
except (TypeError, ValueError):
pass
newId = str(maxId + 1)
# Can't rename without a subtransaction commit when using
# portal_factory!
get_transaction().commit(1)
self.setId(newId)
Более детальный пример метода _renameAfterCreation, генерирующего адрес на основании названия, можно найти в файле Products/Archetypes/BaseObject.py
.

