Найти - Пользователи
Полная версия: BB редактирование объекта
Начало » Zope/Plone/Bluebream » BB редактирование объекта
1 2
LightOfMooN
                    prop = removeSecurityProxy(prop)
_props = copy(prop.props)
print lastvalue
if self.context.__parent__ in _props.get(lastvalue, []):
_props[lastvalue].remove(self.context.__parent__)
if _props.has_key(self.context.value):
_props[self.context.value].append(self.context.__parent__)
else:
_props[self.context.value] = [self.context.__parent__]
prop.props = _props
prop._p_changed = 1
ObjectModifiedEvent(prop)
classmeta <class ‘intershop.content.props.tbool.tbool.TBool_Info’>
self <ZODB.serialize.ObjectWriter instance at 0x033A99B8>

state {'description': u'\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e1', ‘name’: u'\u0441\u0432\u043e\…
u0439\u0441\u0442\u0432\u043e1', ‘props’: {False: }}


classmeta <class ‘intershop.content.props.tbool.tbool.TBool_Info’>
self <ZODB.serialize.ObjectWriter instance at 0x033A99B8>

state {'description': u'\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e1', ‘name’: u'\u0441\u0432\u043e\…
u0439\u0441\u0442\u0432\u043e1', ‘props’: {False: }}


<< self._p.clear_memo()
self._p.dump(classmeta)
self._p.dump(state)
self._file.truncate()
return self._file.getvalue()>> self._p.dump(state)
UnpickleableError: Cannot pickle <type ‘zope.security._proxy._Proxy’> objects

Не может взять атрибут?
Sleepwalker
1. Когда пишете “prop.props = _props”, то уже “prop._p_changed = 1” не нужно, т.к. идет явный сетатр.

2. Не понятно что вы делаете этой строчкий кода:
ObjectModifiedEvent(prop)
В таком случае должно быть:
from zope.event import notify

notify(ObjectModifiedEvent(prop))
3. Что за класс intershop.content.thing.thing.Thing. Мне почему-то кажется что на него неверно права проставлены … Можно увидеть zcml и интерфейс класса??
LightOfMooN
класс Thing
интерфейс:
class IThing(IContainer):

name = TextLine(
title=u"name",
default=u"",
required=True)
cost = Float(
title=u"cost",
default=0.0,
required=True)
класс:
class Thing(BTreeContainer):

implements(IThing)

name=u""
cost=0
zcml:
<interface
interface=".interfaces.IThing"
type="zope.app.content.interfaces.IContentType"/>

<class class=".thing.Thing">
<require
interface=".interfaces.IThing"
permission="zope.Public"
/>
<require
set_schema=".interfaces.IThing"
permission="zope.Public"
/>
</class>
LightOfMooN
                    else:
prop.props[self.context.value] = ['123']
>> prop.props =
ForbiddenAttribute: ('__setitem__', {})
Так что, думаю, Thing не при делах)
regall
IThing наследуется от IContainer. Разделите их. Сделайте IThing(IThingSchema, IContainer), где IThingSchema - то, что у вас сейчас.
Потом для класса Thing установите права на IReadContainer, и IWriteContainer, которые нужны для считывания и записи в контейнер.
LightOfMooN
Проблема с сохранением решилась следующей конструкцией:
prop.props=prop.props.copy()
P.S. Почему-то мне кажется, что это не есть хорошо в плане потребления ресурсов
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB