Re: [Zope] siblings of me, rather than of parent

2000-12-04 Thread Randall Kern



ahahhaha!!! (sorry, been up _way_ too 
long.)

the trick was returning ob.aq_base.__of__(self), 
not ob.aq_inner.__of__(self)!

Seems to work great now.
-Randy

  - Original Message - 
  From: 
  Randall Kern 
  
  To: [EMAIL PROTECTED] 
  Sent: Sunday, December 03, 2000 11:08 
  PM
  Subject: Re: [Zope] siblings of me, 
  rather than of parent
  
  Sorry, my __bobo_traverse__ method is working, 
  the PARENTS stack is exactly as I would hope, with my module as the parent of 
  the category, rather than the root.
  
  Here's the whole story:
  
  /
   index_html 
  (dtml method)
   index.html 
  (dtml method)
   category (Folder)
  foo.html 
  (dtml method)
   blah 
  (Module)
   
  category (Folder)
   
  header.html (dtml method)
   weather 
  (Category)
  
  /index_html:
   dtml-var 
  index.html
  
  /index.html:
   dtml-var 
  standard_html_header
  
   dtml-if expr="meta_type == 
  'Category'" !-- true in cases of url like 
  /blah/weather --

  dtml-call expr="REQUEST.set('splevel', category)"
   /dtml-if
  
   dtml-with splevel 
  mapping

  dtml-var header.html
   
/dtml-with
  
   dtml-var 
  standard_html_footer
  
  
  Now, what I hope to happen is that the dtml-with 
  would bind to the /blah/category folder, and therefore be able to find 
  header.html. However, somehow it's getting the /category folder instead, 
  which doesn't have header.html.
  
  Anyone understand why this is 
  happening?
  
  Thanks again,
  -Randy
  
- Original Message - 
From: 
Randall 
Kern 
To: [EMAIL PROTECTED] 
Sent: Sunday, December 03, 2000 8:08 
    PM
Subject: [Zope] siblings of me, rather 
than of parent

My site has two main classes of objects, 
Modules (and their derivatives), and Categories. A normal setup might 
look something like this:

root
 blab 
(Module)
 weather 
(Category)
 rain 
(Category)
  sun 
(Category)
 region 
(Category)

I need to handle URLs like 
/root/blab/weather. The problem is that I need weather.__of__(blab) on 
the stack, rather than weather.__of__(root) on top. This is because 
blab (in some cases) overrides default behaviors from root.

I thought the proper way to do this was by 
adding a __bobo_traverse__ method to my Module, like this:

 def __bobo_traverse__(self, 
REQUEST, name): 
try: 
parents = 
REQUEST['PARENTS'] 
parent = 
parents[-2] 
if hasattr(parent, 
name): 
ob = getattr(parent, 
name) 
if ob.meta_type == 
'Category': 
return 
ob.aq_inner.__of__(self) 
except: 
pass

 
return getattr(self, name)

But that doesn't seem to change anything, 
although it does perform the return (and doesn't throw any 
exceptions.)

Basically, I'm trying to offer my siblings as 
if they were my children, so if they fail to offer something, it will be 
looked for in me, rather than my parent.

Thanks,
-Randy


[Zope] siblings of me, rather than of parent

2000-12-03 Thread Randall Kern



My site has two main classes of objects, Modules 
(and their derivatives), and Categories. A normal setup might look 
something like this:

root
 blab 
(Module)
 weather (Category)
 rain 
(Category)
  sun 
(Category)
 region (Category)

I need to handle URLs like 
/root/blab/weather. The problem is that I need weather.__of__(blab) on the 
stack, rather than weather.__of__(root) on top. This is because blab (in 
some cases) overrides default behaviors from root.

I thought the proper way to do this was by adding a 
__bobo_traverse__ method to my Module, like this:

 def __bobo_traverse__(self, REQUEST, 
name): 
try: 
parents = 
REQUEST['PARENTS'] 
parent = 
parents[-2] 
if hasattr(parent, 
name): 
ob = getattr(parent, 
name) 
if ob.meta_type == 
'Category': 
return ob.aq_inner.__of__(self) 
except: 
pass

 return 
getattr(self, name)

But that doesn't seem to change anything, although 
it does perform the return (and doesn't throw any exceptions.)

Basically, I'm trying to offer my siblings as if 
they were my children, so if they fail to offer something, it will be looked for 
in me, rather than my parent.

Thanks,
-Randy


Re: [Zope] siblings of me, rather than of parent

2000-12-03 Thread Randall Kern



Sorry, my __bobo_traverse__ method is working, the 
PARENTS stack is exactly as I would hope, with my module as the parent of the 
category, rather than the root.

Here's the whole story:

/
 index_html 
(dtml method)
 index.html 
(dtml method)
 category (Folder)
foo.html 
(dtml method)
 blah 
(Module)
 category 
(Folder)
 
header.html (dtml method)
 weather 
(Category)

/index_html:
 dtml-var 
index.html

/index.html:
 dtml-var 
standard_html_header

 dtml-if expr="meta_type == 
'Category'" !-- true in cases of url like 
/blah/weather --
  dtml-call 
expr="REQUEST.set('splevel', category)"
 /dtml-if

 dtml-with splevel 
mapping
  dtml-var 
header.html
 /dtml-with

 dtml-var 
standard_html_footer


Now, what I hope to happen is that the dtml-with 
would bind to the /blah/category folder, and therefore be able to find 
header.html. However, somehow it's getting the /category folder instead, 
which doesn't have header.html.

Anyone understand why this is 
happening?

Thanks again,
-Randy

  - Original Message - 
  From: 
  Randall Kern 
  
  To: [EMAIL PROTECTED] 
  Sent: Sunday, December 03, 2000 8:08 
  PM
  Subject: [Zope] siblings of me, rather 
  than of parent
  
  My site has two main classes of objects, Modules 
  (and their derivatives), and Categories. A normal setup might look 
  something like this:
  
  root
   blab 
  (Module)
   weather 
(Category)
   rain 
  (Category)
sun 
  (Category)
   region (Category)
  
  I need to handle URLs like 
  /root/blab/weather. The problem is that I need weather.__of__(blab) on 
  the stack, rather than weather.__of__(root) on top. This is because blab 
  (in some cases) overrides default behaviors from root.
  
  I thought the proper way to do this was by adding 
  a __bobo_traverse__ method to my Module, like this:
  
   def __bobo_traverse__(self, REQUEST, 
  name): 
  try: 
  parents = 
  REQUEST['PARENTS'] 
  parent = 
  parents[-2] 
  if hasattr(parent, 
  name): 
  ob = getattr(parent, 
  name) 
  if ob.meta_type == 
  'Category': 
  return ob.aq_inner.__of__(self) 
  except: 
  pass
  
   return 
  getattr(self, name)
  
  But that doesn't seem to change anything, 
  although it does perform the return (and doesn't throw any 
  exceptions.)
  
  Basically, I'm trying to offer my siblings as if 
  they were my children, so if they fail to offer something, it will be looked 
  for in me, rather than my parent.
  
  Thanks,
  -Randy