Как я могу обновить схему единственного объекта архетипа по требованию в plone?

Кроме синтаксического сахара, ссылка const указатель ( не указатель на const). Необходимо установить то, что это отсылает к тому, когда Вы объявляете ссылочную переменную, и Вы не можете изменить его позже.

Обновление: теперь, когда я думаю об этом еще немного, существует важное различие.

цель указателя константы А может быть заменена путем взятия ее адреса, и использование константы бросило.

цель ссылки А не может быть заменена всегда за исключением UB.

Это должно разрешить компилятору делать больше оптимизации на ссылке.

5
задан eleddy 23 July 2009 в 00:34
поделиться

2 ответа

Хотя вы не объясняете, что означает «поставить на колени», я предполагаю, что у вас закончилась память. Если это так, вероятно, дело в том, что сценарий не фиксирует изменения на диске. Добавление transaction.commit () в цикл (желательно с тестом, выполняющим только каждый сотый или 1000-й раз) должно исправить это.

Изменить: Итак, я был неправ, это не было проблемой памяти. Похоже, программа обновления архетипов поступает правильно.

0
ответ дан 14 December 2019 в 19:21
поделиться

Покопавшись в коде каталога 2.5, я наконец нашел ответ на ленивое обновление схемы:

if not self._isSchemaCurrent():
    logging.debug("updating schema for %s"%self.absolute_url())
        try:
            import transaction
            transaction.begin()
            self._updateSchema()
            transaction.commit()
        except Exception, e:
            logging.error('Error updating schema at %s: %s'%(self.absolute_url(), e))
            return False
else:
    logging.debug("schema for %s is up to date"%self.absolute_url())
    return True

Обратите внимание, что это Plone 2.5.3 и из того, что я копал через plone 3 выглядит немного иначе. Для некоторых объектов, для которых я уже настроил processForm, я выполняю обновление там, чтобы форма могла отображать новое поле и обрабатываться. Для других просто в ловушке at_post_edit_script, поскольку у них обычно нет мега важных обновлений схемы. Кроме того, обработка форм в любом случае является самой медленной частью сайта, поэтому взаимодействие с пользователем не сильно сказывается.

Это хакерский метод, но он не вызывает лишних затрат на ввод-вывод и работает со всеми версиями объектов. Я возьму!

5
ответ дан 14 December 2019 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: