[Zope-dev] Adding your own (complex) data types to property pages:
example and problems...nd problems...
Michel Pelletier
michel@digicool.com
Thu, 04 May 2000 20:20:34 -0700
Mike Fletcher wrote:
>
> It is often necessary to have slightly more complex data types on your
> Z-Class-like products. For instance, in my current project, I need t be
> able to set VRML-style vectors (particularly colors and three-element float
> vectors).
I think it would be better to develop objects like this in Python.
There is no clear benefit to using ZClasses for this. There is a clear
benefit in using a ZClass to provide a user interface and subclasses a
very specialized Python class that does all the heavy lifting.
> Zope allows for creating converters fairly easily, so that you
> can register code for interpreting data types. However, Zope handles the
> creation of input fields for property pages through a hard-coded
> if/elif/else mechanism in OFS/properties.dtml . The result is that your
> non-standard datatype shows up as "Unrecognized field type" and will not be
> part of the form when submitted (which will often cause logic errors if (as
> is likely) it is a required property).
>
> Of course, it is possible to create custom manage documents for each
> property page which has more advanced data types, but this almost completely
> obviates the value of using property pages (i.e. automatic management of
> property sets such that the programmer need not even consider the management
> interface).
That's right.
> As of yet, I don't see a clean way of fixing this problem other than
> re-writing properties.dtml to call out to an extensible mechanism for
> generating edit fields. To make this ideal, you would allow, for instance,
> dropping in a more advanced date editor (such as a calendar) to replace the
> default text-field version, or allowing for "object" fields where you can
> paste or create generic objects etc. If I do this work (at least the basic
> mechanisms, if not the ideal ones), would Digital Creations be willing to
> incorporate the changes?
Yes.
> I am currently developing on 2.1.4, but can upgrade
> if there have been any changes in this area.
Yes.
>If not, are there any
> suggestions on other means to accomplish the same ends (complex property
> data types)?
Doing this right would require some deep discussion. I suggest creating
a Wiki on the zope site and soliciting comments. You may want to review
the Interfaces Wiki first, particulary some very recent documentation
written by Brian Lloyd.
http://www.zope.org/Members/michel/Projects/Interfaces/Properties
Let us know how useful this documentation is for you.
-Michel