Re: [zope3ru] Сводка для группы zope3-ru@googlegroups.com - Сообщения: 2 в Тем: 1

4 views
Skip to first unread message

Dmitry Shamov

unread,
Sep 15, 2010, 6:34:37 AM9/15/10
to zope...@googlegroups.com
На самом деле я тоже зедавал такой вопрос тут. Только:

1) Не родитель, а контейнер.

2) Как было мне подсказано в определенных типах есть специальное поле
ссылка на контейнер. Соответственно никто не мешает перехватыват
события у контейнера на изменение и держать список контейнеров в
которых содержится объект.

3) Вероятно такого нет в широком использовании потому, что не очень
надо было. Скорее всего при объяснении зачем это вам появится ответ
как сделать изящнее. Может с помощью словарей (я что-то смутное такое
думаю про это).

15 сентября 2010 г. 13:01 пользователь
<zope3-ru...@googlegroups.com> написал:
>   Сводка по сегодняшним темам
>
> Группа: http://groups.google.com/group/zope3-ru/topics
>
> поиск всех родителей [2 Обновления]
>
>  Тема: поиск всех родителей
>
> Anatoly Bubenkov <bube...@gmail.com> Sep 14 01:26PM +0300 ^
>
> On Tue, 2010-09-14 at 12:54 +0400, Dmitry Vasiliev wrote:
>> > Я создаю объект и сохраняю его в нескольких контейнерах.
>> > Возникает вопрос, как найти всех родителей данного объекта?
>
>> Пока советы не зашли слишком далеко... ;-)
> -1, чтоб далеко не ходить
>
> --
> Anatoly Bubenkov
> +380(66)6358527
> Zojax inc (http://zojax.com/)
>
>
>
> Vitaly <vit...@mail.ru> Sep 14 03:39AM -0700 ^
>
>
>> Я создаю объект и сохраняю его в нескольких контейнерах.
>> Возникает вопрос, как найти всех родителей данного объекта?
>
>> Заранее спасибо.
>
> решил эту задачу индексами, жаль что нет механизма позволяющего
> просмотреть всех родителей
>
>
>
> --
> Russian Zope3 group http://zope3.ru/
> Для отправки сообщений zope...@googlegroups.com
> Отписаться zope3-ru-u...@googlegroups.com
> Архив http://groups.google.com/group/zope3-ru

--
С уважением, Дмитрий

Vitaly

unread,
Sep 16, 2010, 12:10:53 AM9/16/10
to Russian Zope3 group

On 15 сен, 16:34, Dmitry Shamov <demm...@gmail.com> wrote:
> На самом деле я тоже зедавал такой вопрос тут. Только:
>
> 1) Не родитель, а контейнер.

не важно как называть, но если прикопаться :) то у объекта есть
атрибут __parent__ в котором храниться ссылка на _контейнер_, что
переводится как родитель

> 3) Вероятно такого нет в широком использовании потому, что не очень
> надо было. Скорее всего при объяснении зачем это вам появится ответ
> как сделать изящнее. Может с помощью словарей (я что-то смутное такое
> думаю про это).
>

поигравшись с объектом размещенном во множестве контейнеров прихожу к
мнению что это не очень хорошо, лучше хранить ссылки на объекты чем
сами объекты.

Сергей Панов

unread,
Sep 17, 2010, 6:04:01 AM9/17/10
to zope...@googlegroups.com


16 сентября 2010 г. 10:10 пользователь Vitaly <vit...@mail.ru> написал:

--
Russian Zope3 group http://zope3.ru/
Для отправки сообщений zope...@googlegroups.com
Отписаться zope3-ru-u...@googlegroups.com
Архив http://groups.google.com/group/zope3-ru


 эээ вроде все ест ссылка? нет?
--
Best Regards, Panov Sergey

tretiy3

unread,
Sep 17, 2010, 6:33:09 AM9/17/10
to Russian Zope3 group
> эээ вроде все ест ссылка? нет?

все кроме инта и строки.
не в этом дело.
если человек размещает объект в нескольких контейнерах, это значит,
что он последовательно меняет атрибут __parent__ этого объекта с
одного контейнера на другой. при этом в каждом контейнере остается
ссылка на этот объект.
если потом удалить это объект из контейнера, ему в __parent__
запишется None, а по базе будет расбросана куча ссылок на объект у
которого нет ни "контейнера", ни "родителя".
поэтому нехорошо.
правильней размещать объект в каком-то одном контейнере. если хочется
иметь ссылки на него из других контейнеров (или других объектов,
вообще), нужно просто хранить его в каком-нить атрибуте этого
контейнера. но __parent__ лучше не трогать.


On Sep 17, 1:04 pm, Сергей Панов <spanoval...@gmail.com> wrote:
> 16 сентября 2010 г. 10:10 пользователь Vitaly <vita...@mail.ru> написал:


>
>
>
>
>
> > On 15 сен, 16:34, Dmitry Shamov <demm...@gmail.com> wrote:
> > > На самом деле я тоже зедавал такой вопрос тут. Только:
>
> > > 1) Не родитель, а контейнер.
>
> > не важно как называть, но если прикопаться :) то у объекта есть
> > атрибут __parent__ в котором храниться ссылка на _контейнер_, что
> > переводится как родитель
>
> > > 3) Вероятно такого нет в широком использовании потому, что не очень
> > > надо было. Скорее всего при объяснении зачем это вам появится ответ
> > > как сделать изящнее. Может с помощью словарей (я что-то смутное такое
> > > думаю про это).
>
> > поигравшись с объектом размещенном во множестве контейнеров прихожу к
> > мнению что это не очень хорошо, лучше хранить ссылки на объекты чем
> > сами объекты.
>
> > --

> > Russian Zope3 grouphttp://zope3.ru/


> > Для отправки сообщений zope...@googlegroups.com
> > Отписаться zope3-ru-u...@googlegroups.com

> > Архивhttp://groups.google.com/group/zope3-ru

Ilshad Khabibullin

unread,
Sep 17, 2010, 6:57:03 AM9/17/10
to zope...@googlegroups.com
Логично было бы оформить этот паттерн в виде аннотации, чтобы приведение к интерфейсу IMultiParents(context) дергал аннотацию, хранящую ссылки на множественных родителей.

А вообще да, у семи parent'ов контентный объект без присмотра.

17 сентября 2010 г. 16:33 пользователь tretiy3 <tre...@gmail.com> написал:
--
Russian Zope3 group http://zope3.ru/

Для отправки сообщений zope...@googlegroups.com
Отписаться zope3-ru-u...@googlegroups.com
Архив http://groups.google.com/group/zope3-ru



--
Ilshad R. Khabibullin
http://astoon.zwiki.org
+7 922 600 56 06

tretiy3

unread,
Sep 17, 2010, 7:19:39 AM9/17/10
to Russian Zope3 group
ага. и родителей тоже нужно метить каким-нить образом.
и подписывать их обоих на каждый чих, чтобы связь держали, потому как
если удалить такого сынка, из его настоящего контейнера
скрежет зубовный по всей системе будет стоять.
получится, в итоге, свой маленький фреймворк.


On Sep 17, 1:57 pm, Ilshad Khabibullin <astoon....@gmail.com> wrote:
> Логично было бы оформить этот паттерн в виде аннотации, чтобы приведение к
> интерфейсу IMultiParents(context) дергал аннотацию, хранящую ссылки на
> множественных родителей.
>
> А вообще да, у семи parent'ов контентный объект без присмотра.
>

> 17 сентября 2010 г. 16:33 пользователь tretiy3 <tret...@gmail.com> написал:

> --
> Ilshad R. Khabibullinhttp://astoon.zwiki.org+7 922 600 56 06begin_of_the_skype_highlighting              +7 922 600 56 06      end_of_the_skype_highlighting

Ilshad Khabibullin

unread,
Sep 17, 2010, 7:54:33 AM9/17/10
to zope...@googlegroups.com


17 сентября 2010 г. 17:19 пользователь tretiy3 <tre...@gmail.com> написал:

ага. и родителей тоже нужно метить каким-нить образом.
и подписывать их обоих на каждый чих, чтобы связь держали, потому как
если удалить такого сынка, из его настоящего контейнера
скрежет зубовный по всей системе будет стоять.
получится, в итоге, свой маленький фреймворк.


Все эти сложности не представляют никакой сложности в zope3 так как делаются через подписчики, и существуют общепринятые события.

Вообще, я делал подобное, и это не вызвало непредвиденных сложностей. Это ж Zope3 - что хочешь то и делай. Кончено, я не складывал объект в несколько разных контейнеров (т.к. в этом случае, как наиболее точно выразился Анатолий, просто теряются преимущества от использования протокола ILocation, который предоставляет конвенциональное поведение "из коробки").

Но так, что к одному и тому же объекту приходишь из разных контейнеров - тут проблем быть не должно (я решал специфическим траверсом на псево-родителях). Связь между объектами, притом абстрагированную от способа ее реализации, делал через аннотации, лучше c использованием annotation factory из нативного пакета, что позволяет оформить в виде отдельного интерфейса - маркера специфичную и нужную политику взаимотношения хранимых объектов.


--
Russian Zope3 group http://zope3.ru/

Для отправки сообщений zope...@googlegroups.com
Отписаться zope3-ru-u...@googlegroups.com



--
Ilshad R. Khabibullin
http://astoon.zwiki.org

tretiy3

unread,
Sep 17, 2010, 8:26:02 AM9/17/10
to Russian Zope3 group
я тоже такое делал: ортогональную иерархию поверх той что лежит в
базе.
не сложно, согласен. но фреймворк у меня получился в итоге :)
мне кажется и у тебя получился бы фреймворк, если бы ты выставил эти
аннотации пользователям в формах,
и позволил бы добавлять/удалять/менять порядок "детей" у "родителей" и
"родителей" у "детей".
тут не обойтись общепринятыми событиями. и стандартного механизма тут,
конечно же, быть не может.


On Sep 17, 2:54 pm, Ilshad Khabibullin <astoon....@gmail.com> wrote:
> 17 сентября 2010 г. 17:19 пользователь tretiy3 <tret...@gmail.com> написал:


>
> > ага. и родителей тоже нужно метить каким-нить образом.
> > и подписывать их обоих на каждый чих, чтобы связь держали, потому как
> > если удалить такого сынка, из его настоящего контейнера
> > скрежет зубовный по всей системе будет стоять.
> > получится, в итоге, свой маленький фреймворк.
>
> Все эти сложности не представляют никакой сложности в zope3 так как делаются
> через подписчики, и существуют общепринятые события.
>
> Вообще, я делал подобное, и это не вызвало непредвиденных сложностей. Это ж
> Zope3 - что хочешь то и делай. Кончено, я не складывал объект в несколько
> разных контейнеров (т.к. в этом случае, как наиболее точно выразился
> Анатолий, просто теряются преимущества от использования протокола ILocation,
> который предоставляет конвенциональное поведение "из коробки").
>
> Но так, что к одному и тому же объекту приходишь из разных контейнеров - тут
> проблем быть не должно (я решал специфическим траверсом на псево-родителях).
> Связь между объектами, притом абстрагированную от способа ее реализации,
> делал через аннотации, лучше c использованием annotation factory из
> нативного пакета, что позволяет оформить в виде отдельного интерфейса -
> маркера специфичную и нужную политику взаимотношения хранимых объектов.
>

> > > Ilshad R. Khabibullinhttp://astoon.zwiki.org+7922 600 56

Ilshad Khabibullin

unread,
Sep 17, 2010, 8:52:34 AM9/17/10
to zope...@googlegroups.com
Да.

И тут мы возвращаемся к извечному вопросу, дискуссии по которому, фактически, насчитывают мегабайты в частных корпоративных рассылках, ай эр си, джабберах и скайпах между программистами, использующими ZTK.

ZTK не являтся фреймворком в том виде, в котором принято обычно нечто считать вэб-фреймворкам. С одной стороны он не ставит жестких рамок и позволяет делать что угодно и как угодно. С другой стороны он предоставляет высокоуровневые инструменты. С третьей стороны, сам ZTK очень благоволит к написанию фреймфорков поверх себя. При том технически удачных: наглядный пример - Grok - сверхвысокоуровневый фреймворк для сверхбыстрого создания веб-приложений, при этом имеющий в себе самом на удивление мало кода.

Короче, всегда приходится искать баланс, и это будет продолжаться вечно.

Впрочем, то же самое - во многих других областях, в той или иной степени.

Извиняюсь за некоторый флейм.

17 сентября 2010 г. 18:26 пользователь tretiy3 <tre...@gmail.com> написал:
--
Russian Zope3 group http://zope3.ru/

Для отправки сообщений zope...@googlegroups.com
Отписаться zope3-ru-u...@googlegroups.com



--
Ilshad R. Khabibullin
http://astoon.zwiki.org

Ilshad Khabibullin

unread,
Sep 20, 2010, 9:04:42 AM9/20/10
to zope...@googlegroups.com
Возможно, наиболее изяшное решение можно найти по этому пути: http://zope3.ru/novosti/zc-shortcut-1-0-simlinki-dlya-zope3/ (Симлинки для Zope3)

17 сентября 2010 г. 18:52 пользователь Ilshad Khabibullin <astoon.net@gmail.com> написал:
Reply all
Reply to author
Forward
0 new messages