[ZPT] Calling complex product tags from ZPT

J C Lawrence claw@kanga.nu
Sat, 13 Jul 2002 23:10:49 -0700


On Sun, 07 Jul 2002 18:56:30 +0200 
j-david  <ISO-8859-1> wrote:
> J C Lawrence wrote:
>> On Sun, 07 Jul 2002 17:12:23 +0200 j-david <ISO-8859-1> wrote:

> I use a really primitive way to debug, which is enough most of the
> time. Just modify NuxWidgets to output a message in the right
> places. For example, in NuxWidgets.__init__.py, add the following line
> at the beginning of pt_getContext:

>   open('/tmp/kk', 'w').write('pt_getContext from NuxWidgets\n')

I went a little further than that:

--<cut>--
def pt_getContext(self):
    """
    New "pt_getContext" method, adds the "widgets" name.
    """

    c = self.pt_getContext_old()
    c['widgets'] = widgets
    open('/tmp/t.t', 'a').write('pt_getContext from NuxWidgets\n')

    return c

PageTemplate.pt_getContext = pt_getContext
PageTemplateFile.pt_getContext = pt_getContext
ZopePageTemplate.pt_getContext = pt_getContext

######################################################################
# Security, declare this module public
######################################################################

from AccessControl import ModuleSecurityInfo
ModuleSecurityInfo('Products').declarePublic('NuxWidgets')

######################################################################
# Register the widgets
######################################################################

# Calendar
from Calendar import calendar

open('/tmp/t.t', 'a').write('Declare calendar\n')
widgets['calendar'] = calendar.macros['calendar']

# Timetable
from Timetable import timetable
open('/tmp/t.t', 'a').write('Declare timetable\n')
widgets['timetable'] = timetable.macros['timetable']
open('/tmp/t.t', 'a').write('Done\n')
--<cut>

Results:

  $ cat /tmp/t.t
  Declare calendar
  Declare timetable
  Done

ie pt_getContext is never getting called.

Curious.  This is under Python 2.1.

-- 
J C Lawrence                
---------(*)                Satan, oscillate my metallic sonatas. 
claw@kanga.nu               He lived as a devil, eh?		  
http://www.kanga.nu/~claw/  Evil is a name of a foeman, as I live.