What's the status of the new VirtualFields design? The latest
I've seen is:

  db.item.adder=Field.lazy(lambda self:self.item.a + self.item.b)

I have two design proposals:

(1) Instead of calling them "VirtualFields" and "Lazy VirtualFields,"
    I think they should be "VirtualFields" and "Methods." Two
    completely different things.

    The primary usage of lazy virtual fields seems to be adding helper
    methods to rows, so that one can call them as row.func() instead
    of func_on_table(row).  This is a "method," not a "virtual field."

(2) Put this API into db.define_table() instead of a separate set of
    statements.

    This puts all "objects you can access on a row" (Field,
    VirtualField, ComputedField, and Method) in one place in your
    code.  And compared to separate class definitions, it reduces the
    lines of code necessary.

    Here's an example:

db.define_table('item',
                Field('a', 'double'),
                Field('b', 'integer'),
                VirtualField('added',
                       lambda self: self.item.a + self.item.b),
                Method('notify',
                       lambda self: send_email(self.item.a)))

Reply via email to