[Zope-CMF] SVN: Products.GenericSetup/trunk/Products/GenericSetup/ Don't bomb out with an AttributeError when encoding an attribute

yuppie y.2010 at wcm-solutions.de
Wed Mar 3 07:18:48 EST 2010


Maurits van Rees wrote:
> Wichert Akkerman, on 2010-03-03:
>> On 3/3/10 11:48 , Maurits van Rees wrote:
>>> Log message for revision 109595:
>>>     Don't bomb out with an AttributeError when encoding an attribute
>>>     with value None that is being exported; just use an empty string then.
>>>     Case in point: create a Plone Site, set the MailHost settings through
>>>     the Site Setup; an export of the mailhost settings would then fail if
>>>     some of the values (e.g. smtp_uid) were blank (None).
>>
>> Might I suggest not exporting anything instead of an empty string? There
>> is a big difference between None and "".
>
> I just tried that; this would generate a file like this:
>
> <object name="foo_mailhost" meta_type="Mail Host" smtp_host="localhost"
>     smtp_port="25"/>
>
> An import of this file in a Plone Site worked.  But then the export
> would become this:
>
> <object name="foo_mailhost" meta_type="Mail Host" smtp_host="localhost"
>     smtp_port="25" smtp_pwd="" smtp_uid=""/>
>
> So then an import of an export gives a slightly different result; and
> the tests do not like that, failing either in test_body_set or in
> test_body_get, depending on how you define as self._BODY in
> MailHost/tests/test_exportimport.py
>
> So I say we keep it like this.
>
>
> Alternatively, Plone could be fixed to not set None values in the mail
> settings (in plone.app.controlpanel).  But I think this general fix in
> GenericSetup is fine.

I think the fix is in the wrong place. I doubt None is a valid value for 
a DOM attribute. So instead of working around invalid data we should 
make sure only valid data is written to the DOM.

AFAICS MailHostXMLAdapter._exportNode is the right place to fix this.

Cheers,	Yuppie


More information about the Zope-CMF mailing list