Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Zope/Plone/Bluebream
  • » можно ли из ZMI доступиться ко вложенным методам подчиненного класса. [RSS Feed]

#1 Ноя. 26, 2009 17:41:09

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

можно ли из ZMI доступиться ко вложенным методам подчиненного класса.

misha111
по id, прочитал. Он мне показал сложноватым, и ещё неизвестно какие подводные камни могут появится.
Нет, при таком подходе (связка по intid) никаких подводных камней не будет, успешно так связывал объекты 2 года и никаких проблем не возникало. Преимущество в том, что вы будете оперировать прозрачными объектами (без вложенностей).

P. S.
Проблемы возникают как раз-таки при вложенностях. У меня был горький опыт со следующим:
Оьъект, у которого было свойство gallery:
...
gallery = Tuple(value_type = ImageField) # Тут ImageField - кастомное поле, которое наследовалось от Bytes
..
При такой тройной вложенности в 10% случаев сохранения объекта возникал конфликт транзакций, потому что сохранение должно быть следующим:
1. В ZODB попадает каждый Image.
2. В ZODB попадает Tuple
3. В ZODB попадает объект.
Видимо, в некоторых случаях (наблюдалось там, где больше 5 картинок) возникал конфликт при изменении очередности этих шагов, поэтому от такой практики пришлось отказаться.

В таких случаях большие объекты вообще лучше делать контейнерами (наследуясьот zope.app.container.btree.BTreeContainer или от zope.app.container.ordered.OrderedContainer), делая ему следующую схему:
class IObjectSchema:
attr1 = Type1()
...
attrN = TypeN()

class IObjectContainer(IOrderedContainer):
containers('path.Interface11', 'path.Interface12', ...)
contains('path.Interface1', 'path.Interface2', ...)

class IObject(IObjectSchema, IObjectContainer):
pass
Потом в объекте Object необходимо настроить права на интерфейсы IObjectSchema, IObjectContainer
Таким образом, можно очень много всякого связывать с данным объектов, вкладывая в него другие объекты как в контейнер



Офлайн

#2 Дек. 11, 2009 11:13:58

astoon
От:
Зарегистрирован: 2007-04-09
Сообщения: 335
Репутация: +  2  -
Профиль   Отправить e-mail  

можно ли из ZMI доступиться ко вложенным методам подчиненного класса.

Лишь подтвержу слова regall: надо использовать intid. При всяческих переиндексациях изменяется состояние лишь индексов. Идентификаторы же объектов привязываются к объектам жестко и не меняются. Так что подводных камней тут нет.
Работа с идентификаторами через индексы - достаточно общий паттерн в zope-разработке.



Офлайн

  • Начало
  • » Zope/Plone/Bluebream
  • » можно ли из ZMI доступиться ко вложенным методам подчиненного класса.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version