Персональные инструменты
Вы здесь: Главная Документация Рецепты Как сгенерировать адрес (short_name) объекта

Как сгенерировать адрес (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

.

Действия с Документом