Hi,
You could try doing the conversion in the validator. The you don't
care if it's compound or not because the validator can take care of
all the translation:
class MyValidator(FancyValidator):
def to_python(self, value, state=None):
# collect all sub widget values in 'value' and return a
string
def from_python(self, value, state=None):
# get the string and build a dict to pass to the subwidgets
class FancyCalendar(CompoundWidget):
validator = MyValidator()
Hope it helps,
Alberto
On 22/03/2006, at 2:55, Jason Chu wrote:
> I have a concrete example here. I'm making a calendar that lets you
> specify custom recurrences. Things like "Every monday and
> wednesday" or
> "The third wednesday of every month". I represent these
> recurrences using
> the ical recurrence specification
> (http://www.kanzaki.com/docs/ical/recur.html). It's a single db
> field that
> stores a string.
>
> Needless to say, this interface is fairly complex, with many form
> fields.
> I have two options from what I can tell:
>
> 1) write a single widget that contains multiple form fields and an
> update_data function to parse the string into the form values
>
> 2) write a compound widget that contains all the other form fields as
> widgets
>
> Solution 1 makes things easy rendering the widget. I just stick
> the db
> column into the value dictionary with the widget's name as the
> key. The
> widget parses everything into the proper fields and Bob is, as they
> say, my
> uncle.
>
> Coming back to the controller though, the validator will try and
> find a
> form field with that widget's name and barf. I'd have to create a
> validator with allow_extra_fields, etc in it. Then the controller
> would
> have to piece the data back together into a new string that
> represented the
> new recurrence.
>
> Solution 2 makes things easy for validation. All the fields are
> accounted
> for and validated properly. It makes the controller slightly more
> complicated, because the controller has to parse the recurrence string
> instead of the widget doing that. The controller, on the way in,
> would be
> the same level of complication, because it would have to do the same
> recreation.
>
> Ideally, I think, you'd want a widget that you could give a recurrence
> string to on the controller end and get a recurrence string out
> when it's
> submitted back. With all the fields validated properly and errors
> displayed next to the proper fields. It's almost like a compound
> widget
> that can take a string as its value instead of a dictionary.
>
> Is there some way I can do this?
>
> Jason
>
> --
> If you understand, things are just as they are. If you do not
> understand,
> things are just as they are.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears Trunk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears-trunk
-~----------~----~----~----~------~----~------~--~---