[Zope3-Users] Re: 403 error upon using addform
jürgen Kartnaller
j.kartnaller at cable.vol.at
Fri Nov 19 07:42:38 EST 2004
Hi Florian,
your problem has to do with the permission zope.Public .
For testing I changed the permissions in my application from
zope.ManageContent to zope.Public.
After that I got the same error you describe.
As a workaround you should change the permissions in your configuration
to zope.ManageContent, or you try to setup your own permissions (I have
not used this until now but the zope 3 book explains this).
I don't know the reason for this, I just give you this workaround.
Jürgen
Florian Lindner wrote:
> Mmhh, too trvial, too complicated are you too busy? ;-)
>
> I would really appreciate an answer, cause I'm stuck at this point...
>
> Thanks Stephan,
>
> Florian
>
> Florian Lindner schrieb:
>
>> Stephan Richter schrieb:
>>
>>> On Sunday 14 November 2004 11:11, Florian Lindner wrote:
>>>
>>>> But when I fill in the id input field in the form and submit I just get
>>>> a Unauthorized (403) error message, also I am logged in as a manager.
>>
>>
>>
>> One addition: It's exactly the same behavior when I'm not logged in
>> (working as anonymous).
>>
>>> Can you provide the traceback? Just because you are a manager, you
>>> cannot do everything. If a particular attribute has no security
>>> declaration, it is accessible by noone.
>>
>>
>>
>> I haven't translated it, but I'm sure you know what the fields are:
>>
>> Zeit: Tue Nov 16 11:41:50 2004
>> Benutzer: florian, zope.manager, Manager,
>> Anfrage-URL:
>> http://localhost:8080/++skin++centershock/eventfolder/+/AddCSEvent.html%3Dabc
>>
>> Ausnahmetyp: Unauthorized
>> Ausnahmewert: ('browserDefault', 'zope.Public')
>>
>> Zurückverfolgung:
>>
>> Traceback (innermost last):
>>
>> * Module zope.publisher.publish, line 135, in publish
>> object = request.traverse(object)
>> * Module zope.publisher.browser, line 507, in traverse
>> ob, add_steps = publication.getDefaultTraversal(self, ob)
>> * Module zope.app.publication.browser, line 52, in getDefaultTraversal
>> return ob.browserDefault(request)
>>
>> Unauthorized: ('browserDefault', 'zope.Public')
>>
>>
>>>> Another questions is why there is only one field although the schema at
>>>> CS.interfaces.IEvent definied some other fields?
>>>
>>>
>>>
>>>
>>> This is strange. Did you setup something incorreclty?
>>
>>
>>
>> Probably... But what?
>>
>>>> The ZCML reference says:
>>>> "The fields and the order in which to display them. If this is not
>>>> specified, all schema fields will be displayed in the order
>>>> specified in
>>>> the schema itself."
>>>
>>>
>>>
>>>
>>> This is the doc string for the "fields" attribute. As you can read,
>>> all fields should be displayed. It might be good to also send us your
>>> IEvent interface.
>>
>>
>>
>> I know, that's why I copied it here.
>>
>> This is my complete CS.interfaces (CS\interfaces.py)
>>
>> from zope.interface import Interface
>> from zope.app.container.interfaces import IContainer, IContained
>> from zope.schema import TextLine, Text, Field
>> from zope.app.container.constraints import ItemTypePrecondition,
>> ContainerTypesConstraint
>>
>> class IEvent(Interface):
>> """This interface stores information about a event."""
>>
>> def __setitem__(name, object):
>> """Add a IEvent object."""
>>
>> name = TextLine(
>> title = u"Name",
>> description = u"Short name",
>> required = True)
>>
>> description = Text (
>> title = u"Description",
>> description = u"Longer description of the event",
>> default = u"",
>> required = False)
>>
>> location = Text (
>> title = u"Location",
>> description = u"The location where the event take place.",
>> default = u"",
>> required = False)
>>
>> class IEventFolder(IContainer):
>> def __setitem__(name, object):
>> """Adds a IEventFolder object."""
>>
>> __setitem__.precondition = ItemTypePrecondition(IEvent)
>>
>>
>> class IEventContained(IContained):
>> __parent__ = Field( constraint =
>> ContainerTypesConstraint(IEventFolder))
>>
>>
>> And my configure.zcml (CS\configure.zcml)
>>
>> <configure xmlns="http://namespaces.zope.org/zope">
>> <include package=".Principal" />
>> <include package=".browser" />
>>
>> <interface interface=".interfaces.IEventFolder"
>> type="zope.app.content.interfaces.IContentType" />
>> <content class=".event.EventFolder">
>> <implements
>> interface="zope.app.annotation.interfaces.IAttributeAnnotatable" />
>> <implements
>> interface="zope.app.container.interfaces.IContentContainer" />
>> <factory id="CS.event.EventFolder" description="CS EventFolder"/>
>> <require permission="zope.Public"
>> interface=".interfaces.IEventFolder" />
>> <require permission="zope.Public"
>> set_schema=".interfaces.IEventFolder" />
>> </content>
>> <interface interface=".interfaces.IEvent"
>> type="zope.app.content.interfaces.IContentType" />
>> <content class=".event.Event">
>> <implements
>> interface="zope.app.annotation.interfaces.IAttributeAnnotatable" />
>> <factory id="CS.event.Event" description="CS Event"/>
>> <require permission="zope.Public" interface=".interfaces.IEvent" />
>> <require permission="zope.Public" set_schema=".interfaces.IEvent" />
>> </content>
>>
>> </configure>
>>
>> Anything else you need?
>>
>> TIA,
More information about the Zope3-users
mailing list