Vinny wrote:
In a ZPT I would do something like:
for field in fieldsInObject(row) # which has (ordered?) fields
th cell: field.name
for row in rowView
for field in fieldsInObject(row) # which has (ordered?) fields
td cell: field.value
I know the above is broken in several ways. I've been
trying various methods all evening. The closest I get
is the __dict__ usage. Ideally, I would get the
interface provided by the object and feed that to
form.Fields() but I can't determine how to get an
interface value that can be fed to form.Fields().
iface = zope.interface.providedBy(obj)
doesn't seem to work.
By itself it won't work. You'll have to do a bit more. First of all, an
object can provide 0, 1 or more interfaces. Second, schemas are just
interfaces whose specifications are fields (a schema can also have
method specifications, there's no restriction to "mixing" a traditional
interface with a schema). Therefore:
for iface in zope.interface.providedBy(obj):
for name in iface:
field = iface[name]
if zope.schema.interfaces.IField.providedBy(field):
# you've got a schema field, now you can work with
# field.title, field.description, etc. (see IField)
--
http://worldcookery.com -- Professional Zope documentation and training
Next Zope 3 training at Camp5: http://trizpug.org/boot-camp/camp5
_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users