[Zope] Can't access a method 'in this context'

Tim Hicks tim@sitefusion.co.uk
Thu, 15 Aug 2002 18:54:32 +0100


> I suspect you have not made any security assertions on your class.

Casey,

you were partly right... I had copied and pasted a very similar method (and
it's security) but only remembered to change the actual method definition
and not the security.

*However*, correcting this mistake seems to have made no difference at all.
I still receive exactly the same error message and traceback.  To be sure, I
deleted my product from the Control Panel (along with all instances),
restarted Zope (2.5.1 btw) and then tested again... no joy though :-(

Any more clues?  I've got to say, 'context' and acquisition type stuff (if
that's even relevant here) are pretty mysterious to me.

cheers

tim


> On Thursday 15 August 2002 10:12 am, Tim Hicks wrote:
> > I have a XronDTMLMethod with the following body:
> >
> > ----
> > <dtml-let zoffice="superValues(['ZOffice Converter'])[0]">
> > <dtml-call
> > "zoffice.getConverterByName('AsyncZlaveClient').fireNextConversion(_)">
> > </dtml-let>
> > ----
> >
> > So, it finds the nearest 'ZOffice Converter' instance (in the
acquisition
> > chain), names it 'zoffice', then attempts to do the call in the middle
line.
> >
> > My ZOffice class has the following method defined:
> >
> > ----
> > def getConverterByName(self, converterName):
> >     """ """
> >     return self._pluginConverters[converterName].__of__(self)
> > ----
> >
> > self._pluginConverters is a class level dictionary with keys of
converter
> > names and values of converter instances.  The converter instances
inherit
> > from Acquisition.Implicit.
> >
> > However, when I 'Trigger' the XronDTMLMethod, I get the following error:
> >
> > ----
> > Traceback (most recent call last):
> >
> >   File "D:\Zlave\zope251\lib\python\Products\Xron\XronDTMLMethod.py",
line
> > 141, in trigger
> >     REQUEST=REQUEST, RESPONSE=RESPONSE, kw=kw)
> >
> >   File "D:\Zlave\zope251\lib\python\OFS\DTMLMethod.py", line 127, in
> > __call__
> >     r=apply(HTML.__call__, (self, client, REQUEST), kw)
> >
> >   File "D:\Zlave\zope251\lib\python\DocumentTemplate\DT_String.py", line
> > 473, in __call__
> >     try: result = render_blocks(self._v_blocks, md)
> >
> >   File "D:\Zlave\zope251\lib\python\DocumentTemplate\DT_Let.py", line
76, in
> > render
> >     return render_blocks(self.section, md)
> >
> >   File "D:\Zlave\zope251\lib\python\DocumentTemplate\DT_Util.py", line
159,
> > in eval
> >     return eval(code, d)
> >
> >   File "<string>", line 2, in f
> >
> >   File "D:\Zlave\zope251\lib\python\AccessControl\DTML.py", line 29, in
> > guarded_getattr
> >     return guarded_getattr(*args)
> >
> >   File "D:\Zlave\zope251\lib\python\AccessControl\ZopeGuards.py", line
58,
> > in guarded_getattr
> >     return inst.aq_acquire(name, aq_validate, validate)
> >
> >   File "D:\Zlave\zope251\lib\python\AccessControl\ZopeGuards.py", line
40,
> > in aq_validate
> >     return validate(inst, obj, name, v)
> >
> >   File "D:\Zlave\zope251\lib\python\AccessControl\SecurityManager.py",
line
> > 83, in validate
> >     self._context)
> >
> >   File
"D:\Zlave\zope251\lib\python\AccessControl\ZopeSecurityPolicy.py",
> > line 145, in validate
> >     raise Unauthorized(name, value)
> >
> > Unauthorized: You are not allowed to access fireNextConversion in this
> > context
> > ----
> >
> > So, my question; why can't I call this method of my converter object?
> >
> >
> > cheers,
> >
> > tim
> >
> >
> > _______________________________________________
> > Zope maillist  -  Zope@zope.org
> > http://lists.zope.org/mailman/listinfo/zope
> > **   No cross posts or HTML encoding!  **
> > (Related lists -
> >  http://lists.zope.org/mailman/listinfo/zope-announce
> >  http://lists.zope.org/mailman/listinfo/zope-dev )
> >
>