Re: [Zope-dev] z3c.form: data manager for PersistentDict/PersistentMapping

2009-07-13 Thread Michael Howitz
Am 13.07.2009 um 16:49 schrieb Stephan Richter:
> On Saturday 11 July 2009, Michael Howitz wrote:
>> z3c.form.datamanager.DictionaryField is a data manager which is
>> registered for fields on a dict. In its __init__ it checks whether  
>> the
>> data object is an instance of dict. So this data manager does neither
>> work for UserDict nor PersistentDict/PersistentMapping.
>> I'd like to change this but there are two possibilities and I'm not
>> sure which is the best one:
>>
>> 1.) Add a subclasses of DictionaryField which is registered for
>> UserDict and which checks whether the data object is an instance of
>> UserDict.
>> (PersistentDict and PersistentMapping are subclasses of  
>> UserDict.)
>>
>> 2.) Register DictionaryField for
>> zope.interface.common.mapping.IMapping. This might have a problem as
>> neither UserDict nor PersistentDict/PersistentMapping seem to provide
>> this interface. (Why?)
>
> I looked at this recently and the reason is that for containers we  
> did not
> usually want the dictionary field data manager, because we usually  
> want the
> regular instance based one.
>
> I am okay to add PersistentDict and PersistentMapping to the list. I  
> am
> already feeling unsure about UserDict, because people might want the  
> instance
> version instead. It is better to register the adapter for the  
> specific cases of
> your application.


I'm fine with that, so I'm going to allow PersistentDict and  
PersistentMapping in the constructor of DictionaryField and I'll add  
an note why the adapter is only registered for dict and not for the  
other possible data storages.

Yours sincerely,
-- 
Michael Howitz · m...@gocept.com · software developer
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 8 · fax +49 345 1229889 1
Zope and Plone consulting and development

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] z3c.form: data manager for PersistentDict/PersistentMapping

2009-07-13 Thread Stephan Richter
On Saturday 11 July 2009, Michael Howitz wrote:
> z3c.form.datamanager.DictionaryField is a data manager which is  
> registered for fields on a dict. In its __init__ it checks whether the  
> data object is an instance of dict. So this data manager does neither  
> work for UserDict nor PersistentDict/PersistentMapping.
> I'd like to change this but there are two possibilities and I'm not  
> sure which is the best one:
>
> 1.) Add a subclasses of DictionaryField which is registered for  
> UserDict and which checks whether the data object is an instance of  
> UserDict.
>  (PersistentDict and PersistentMapping are subclasses of UserDict.)
>
> 2.) Register DictionaryField for  
> zope.interface.common.mapping.IMapping. This might have a problem as  
> neither UserDict nor PersistentDict/PersistentMapping seem to provide  
> this interface. (Why?)

I looked at this recently and the reason is that for containers we did not 
usually want the dictionary field data manager, because we usually want the 
regular instance based one.

I am okay to add PersistentDict and PersistentMapping to the list. I am 
already feeling unsure about UserDict, because people might want the instance 
version instead. It is better to register the adapter for the specific cases of 
your application.

Regards,
Stephan
-- 
Entrepreneur and Software Geek
Google me. "Zope Stephan Richter"
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] z3c.form: data manager for PersistentDict/PersistentMapping

2009-07-13 Thread Michael Howitz
Am 11.07.2009 um 17:43 schrieb Michael Howitz:
> Hello,
>
> z3c.form.datamanager.DictionaryField is a data manager which is
> registered for fields on a dict. In its __init__ it checks whether the
> data object is an instance of dict. So this data manager does neither
> work for UserDict nor PersistentDict/PersistentMapping.
> I'd like to change this but there are two possibilities and I'm not
> sure which is the best one:
>
> 1.) Add a subclasses of DictionaryField which is registered for
> UserDict and which checks whether the data object is an instance of
> UserDict.
> (PersistentDict and PersistentMapping are subclasses of UserDict.)
>
> 2.) Register DictionaryField for
> zope.interface.common.mapping.IMapping. This might have a problem as
> neither UserDict nor PersistentDict/PersistentMapping seem to provide
> this interface. (Why?)


Replying to myself, as I saw on the z3c.form trunk that  
DictionaryField already allows providers of  
zope.interface.common.mapping.IMapping additionally to dict instances  
as the storage object.
The existing solution uses the second of my possibilities, but this is  
not the one which I'd like to prefer, as it does not work with  
PersistentMapping out of the box.
The idea behind this change on the trunk seems to be: to allow  
SessionPkgData as storage. I currently do not use it directly but use  
a PersistentMapping inside SessionPkgData. But maybe this is a  
sufficient solution for now.

Yours sincerely,
-- 
Michael Howitz · m...@gocept.com · software developer
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 8 · fax +49 345 1229889 1
Zope and Plone consulting and development

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


[Zope-dev] z3c.form: data manager for PersistentDict/PersistentMapping

2009-07-11 Thread Michael Howitz
Hello,

z3c.form.datamanager.DictionaryField is a data manager which is  
registered for fields on a dict. In its __init__ it checks whether the  
data object is an instance of dict. So this data manager does neither  
work for UserDict nor PersistentDict/PersistentMapping.
I'd like to change this but there are two possibilities and I'm not  
sure which is the best one:

1.) Add a subclasses of DictionaryField which is registered for  
UserDict and which checks whether the data object is an instance of  
UserDict.
 (PersistentDict and PersistentMapping are subclasses of UserDict.)

2.) Register DictionaryField for  
zope.interface.common.mapping.IMapping. This might have a problem as  
neither UserDict nor PersistentDict/PersistentMapping seem to provide  
this interface. (Why?)

Any suggestions?

Yours sincerely,
-- 
Michael Howitz · m...@gocept.com · software developer
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 8 · fax +49 345 1229889 1
Zope and Plone consulting and development

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )