[Zope-CMF] Re: GenericSetup improvements

Florent Guillaume fg at nuxeo.com
Thu Dec 29 18:46:19 EST 2005


Hi Yuppie!

On 29 Dec 2005, at 21:20, yuppie wrote:
> Florent Guillaume wrote:
>> On 27 Dec 2005, at 10:51, yuppie wrote:
>>> Florent Guillaume wrote:
>>>> Also I'd like to change things like:
>>>>     node = property(_exportNode, _importNode)
>>>> into:
>>>>     def __exportNode(self):
>>>>         return self._exportNode()
>>>>     def __importNode(self, *args)
>>>>         self._importNode(*args)
>>>>     node = property(__exportNode, __importNode)
>>>> To allow proper subclass overriding and avoid the dead chicken  
>>>> of having to redefine the node property each time.
>> Done.
>> But in my (complex) setup it revealed an unintended side effect.  
>> There are actually 3 useful methods when doing export (also valid  
>> for import):
>> - export as simple node for its parent file (just the <object  
>> name="foo" meta_type="bar"> part),
>> - export as full node tree,
>> - export as XML body using the "full node" code.
>
> Correct.
>
>> Before, the fact that you defined or not
>>    node = property(_exportNode, _importNode)
>> made the export "do the right thing", as
>>  - _extractObjects calls exporter.node, thus calls the last node  
>> property defined, whereas
>>  - _exportBody calls self._exportNode(), thus inherits
>> This is *very* implicit and magic, and would benefit from some  
>> refactoring...
>
> Well. That's the way property() works. Your change adds magic  
> because it makes property() inherit its methods.

I know it's the way property works, but it's usually (and also by me)  
considered a hindrance, because people are used to see methods  
inherited.

>> The current status of the code is that exports of more that one  
>> level are currently not correct.
>> It seems there's no unit test for it...
>
> There are no real unit tests for it, but there are many unit tests  
> for adapters using those base classes. These are at the same time  
> integration tests for the base classes in GenericSetup.utils. Some  
> CMFCore tests are failing after your change.
>
>> I'll fix this in a few days unless someone is interested to do it  
>> before then.
>
> I don't think it's a good idea to make obviously incomplete  
> checkins to the trunk. Why didn't you create a branch?

At the time I made the proposal I really tought it had no impact. And  
I fucked up my testing due to the numerous sandboxes I have. I've  
reverted it for now.

I'll answer the rest of your email when I've thought more about this  
whole business :)

Florent

-- 
Florent Guillaume, Nuxeo (Paris, France)   Director of R&D
+33 1 40 33 71 59   http://nuxeo.com   fg at nuxeo.com





More information about the Zope-CMF mailing list