durusmail: quixote-users: DateWidget example?
DateWidget example?
2004-04-16
2004-04-19
2004-04-16
DateWidget example?
Charles Brandt
2004-04-19
Just wanted to thank Neil and Roger for the pointers on the DateWidget
examples.  Also, incase anyone else runs into the same issue, here is the
merged version I ended up with.   Thanks again!

class DateWidget (CompositeWidget):

    def __init__ (self, name, value=None, yoptions=None, moptions=None,
                  doptions=None, **kwargs):
        this_year = now().tuple()[0]

        if not yoptions:
            yoptions = [ (y, y) for y in range(this_year,
this_year-80, -1) ]
        yoptions.insert(0, ('',''))
        self.yoptions = yoptions
        if not moptions:
            moptions = [ (m, m) for m in range(1, 13) ]
        moptions.insert(0, ('',''))
        self.moptions = moptions
        if not doptions:
            doptions = [ (d, d) for d in range(1, 32) ]
        doptions.insert(0, ('',''))
        self.doptions = doptions

        year = ''
        month = ''
        day = ''
        if value:
            #process sent value to date
            pass
        CompositeWidget.__init__(self, name, value, **kwargs)
        self.add(SingleSelectWidget, 'month', value=month,
                 options=self.moptions, required=True)
        self.add(SingleSelectWidget, 'day', value=year,
                 options=self.doptions, required=True)
        self.add(SingleSelectWidget, 'year', value=year,
                 options=self.yoptions, required=True)

    def _parse(self, request):
        CompositeWidget._parse(self, request)
        if self.get_error():
            return
        year = self['year']
        month = self['month']
        day = self['day']

        if (not self.yoptions.index((year,year)) or
            not self.moptions.index((month,month)) or
            not self.doptions.index((day,day)) ):
            self.error = "bad date value"

        try:
            self.value = DateTime(year,month,day)
        except RangeError:
            self.error = "date specified does not exist"

    def render(self):
        return (self.get_widget('month').render() +
                self.get_widget('day').render() +
                self.get_widget('year').render()
                )







reply