[Zope-CMF] index_html acquisition

Chris Withers chrisw@nipltd.com
Fri, 16 May 2003 11:48:25 +0100


David Hart wrote:
> Chris Withers wrote:
> 
>> Troy Farrell wrote:
>>
>>> I suppose instead you could add this line to your __init__():
>>>
>>> setattr(self,'index_html',Acquision.Acquired)
>>
>>
>>
>> You could write that slightly more neatly as:
>>
>> self.index_html = Acquisition.Acquired
>>
>> But why wouldn't you want to do it in the class declaration? 
> 
> The class I've witten is used as a mix-in in a subclass of PloneSite. 
> The PloneSite generator creates an index_html object in the plone_root, 
> and hence setting self.index_html = Acquisition.Acquired throws an 
> error. At least I *think* that's what's going on. :)

The class declaration gets executed when the module containing it is imported, 
that's way before any PloneSite generator script is going to get called...

Your current code runs when the __init__ method of your class is run. __init__ 
runs when an instance of the class is created.

If your subclass that uses your mix-in class doesn't have a __init__, you'll be 
in trouble. If it does, the order in which PloneSite's __init__ and your 
mix-class'es __init__ get executed depend on how you call them in your 
subclass'es __init__.

Now, I don't know when PloneSite' generator (whatever that is...) gets executed. 
If it's after your class's __init__, then it might well set an index_html that 
will replace the one you've set up. If it's after, then your index_html will be 
there. Neither of the setting processes willresult in an error, the error will 
be happening because something is expecting index_html to be something that it 
isn't...

cheers,

Chris