Esempio n. 1
0
    def render_view(self, field, value):
        if value is None:
            return ''

        use_ampm = field.get_value('ampm_time_style')

        if not isinstance(value, DateTime):
            value = DateTime(value)
        year = "%04d" % value.year()
        month = "%02d" % value.month()
        day = "%02d" % value.day()
        if use_ampm:
            hour = "%02d" % value.h_12()
        else:
            hour = "%02d" % value.hour()
        minute = "%02d" % value.minute()
        ampm = value.ampm()

        order = field.get_value('input_order')
        if order == 'ymd':
            output = [year, month, day]
        elif order == 'dmy':
            output = [day, month, year]
        elif order == 'mdy':
            output = [month, day, year]
        date_result = string.join(output, field.get_value('date_separator'))

        if not field.get_value('date_only'):
            time_result = hour + field.get_value('time_separator') + minute
            if use_ampm:
                time_result += ' ' + ampm
            return date_result + '   ' + time_result
        else:
            return date_result
Esempio n. 2
0
 def render_hidden(self, field, key, value, REQUEST):
     result = []
     if value is None and field.get_value('default_now'):
         value = DateTime()
     sub_values = {}
     subfields = ['year', 'month', 'day']
     if value is not None:
         if not isinstance(value, DateTime):
             value = DateTime(value)
         sub_values['year'] = '%04d' % value.year()
         sub_values['month'] = "%02d" % value.month()
         sub_values['day'] = "%02d" % value.day()
         if not field.get_value('date_only'):
             use_ampm = field.get_value('ampm_time_style')
             subfields.extend(['hour', 'minute'])
             if use_ampm: subfields.append('ampm')
             if value is not None:
                 if use_ampm:
                     sub_values['hour'] = "%02d" % value.h_12()
                     sub_values['ampm'] = value.ampm()
                 else:
                     sub_values['hour'] = "%02d" % value.hour()
                 sub_values['minute'] = "%02d" % value.minute()
     for subfield in subfields:
         # XXX it would be nicer to pass the hidden value somewhere
         # to the subfields, but ...
         sub_key = field.generate_subfield_key(subfield)
         sub_field = field.sub_form.get_field(subfield)
         result.append(
             sub_field.widget.render_hidden(sub_field, sub_key,
                                            sub_values.get(subfield),
                                            REQUEST))
     return ''.join(result)
Esempio n. 3
0
 def render_hidden(self, field, key, value, REQUEST):
     result = []
     if value is None and field.get_value('default_now'):
         value = DateTime()
     sub_values = {}
     subfields = ['year','month','day']
     if value is not None:
         if not isinstance(value, DateTime):
             value = DateTime(value)
         sub_values['year']  = '%04d' % value.year()
         sub_values['month'] = "%02d" % value.month()
         sub_values['day']   = "%02d" % value.day()
         if not field.get_value('date_only'):
             use_ampm = field.get_value('ampm_time_style')
             subfields.extend(['hour','minute'])
             if use_ampm: subfields.append('ampm')
             if value is not None:
                 if use_ampm:
                     sub_values['hour'] = "%02d" % value.h_12()
                     sub_values['ampm'] = value.ampm()
                 else:
                     sub_values['hour'] = "%02d" % value.hour()
                 sub_values['minute'] = "%02d" % value.minute()
     for subfield in subfields:
         # XXX it would be nicer to pass the hidden value somewhere
         # to the subfields, but ...
         sub_key = field.generate_subfield_key(subfield)
         sub_field = field.sub_form.get_field(subfield)
         result.append(sub_field.widget.render_hidden(sub_field,
                                 sub_key, sub_values.get(subfield), REQUEST))
     return ''.join(result)
Esempio n. 4
0
    def render_view(self, field, value):
        if value is None:
            return ''

        use_ampm = field.get_value('ampm_time_style')

        if not isinstance(value, DateTime):
            value = DateTime(value)
        year = "%04d" % value.year()
        month = "%02d" % value.month()
        day = "%02d" % value.day()
        if use_ampm:
            hour = "%02d" % value.h_12()
        else:
            hour = "%02d" % value.hour()
        minute = "%02d" % value.minute()
        ampm = value.ampm()

        order = field.get_value('input_order')
        if order == 'ymd':
            output = [year, month, day]
        elif order == 'dmy':
            output = [day, month, year]
        elif order == 'mdy':
            output = [month, day, year]
        date_result = string.join(output, field.get_value('date_separator'))

        if not field.get_value('date_only'):
            time_result = hour + field.get_value('time_separator') + minute
            if use_ampm:
                time_result += ' ' + ampm
            return date_result + '   ' + time_result
        else:
            return date_result
Esempio n. 5
0
    def render(self, field, key, value, REQUEST):
        use_ampm = field.get_value('ampm_time_style')
        hide_day = field.get_value('hide_day')
        calendar_picker = field.get_value('calendar_picker')
        start_day = field.get_value('calendar_start')
        # FIXME: backwards compatibility hack:
        if not hasattr(field, 'sub_form'):
            from StandardFields import create_datetime_text_sub_form
            field.sub_form = create_datetime_text_sub_form()

        if value is None and field.get_value('default_now'):
            value = DateTime()

        # Allow subfields to get their values even when default_now is set.
        if REQUEST is not None and \
                   REQUEST.form.has_key(field.generate_subfield_key('year')):
            value = None

        if value is None:
            year = None
            month = None
            day = None
            hour = None
            minute = None
            ampm = None
        else:
            if not isinstance(value, DateTime):
                value = DateTime(value)
            year = "%04d" % value.year()
            month = "%02d" % value.month()
            day = "%02d" % value.day()
            if use_ampm:
                hour = "%02d" % value.h_12()
            else:
                hour = "%02d" % value.hour()
            minute = "%02d" % value.minute()
            ampm = value.ampm()

        input_order = field.get_value('input_order')
        if input_order == 'ymd':
            order = [('year', year), ('month', month), ('day', day)]
        elif input_order == 'dmy':
            order = [('day', day), ('month', month), ('year', year)]
        elif input_order == 'mdy':
            order = [('month', month), ('day', day), ('year', year)]
        result = []
        hidden_day_part = ""
        for sub_field_name, sub_field_value in order:
            if hide_day and (sub_field_name == 'day'):
                dayvalue = sub_field_value
                if dayvalue is None:
                    dayvalue = "01"
                sub_key = field.generate_subfield_key(sub_field_name)
                sub_field = field.sub_form.get_field(sub_field_name)
                hidden_day_part = sub_field.widget.\
                                  render_hidden(sub_field, sub_key,
                                                dayvalue, REQUEST)
            else:
                result.append(
                    field.render_sub_field(sub_field_name, sub_field_value,
                                           REQUEST))
        date_result = string.join(result, field.get_value('date_separator'))

        day_id = field.sub_form.get_field('day').generate_field_html_id(
            "subfield_" + field.id + "_day")
        month_id = field.sub_form.get_field('month').generate_field_html_id(
            "subfield_" + field.id + "_month")
        year_id = field.sub_form.get_field('year').generate_field_html_id(
            "subfield_" + field.id + "_year")

        select_day = ''
        if hidden_day_part:
            date_result += hidden_day_part
        else:
            #get the proper html id
            select_day = 'document.getElementById("' + day_id + '").value = RegExp.$3;'
        calendar_popup = ''
        html_id = field.generate_field_html_id(key)
        if calendar_picker:
            calendar_popup = ' ' + render_element(
                'button',
                css_class='kupu-button kupu-link-reference calendar-button',
                style='padding: 0px 0px 0px 0px',
                id=html_id + '_calendar',
                title='set date',
                contents=' ') + """<script type="text/javascript">
setTimeout(function(){Calendar.setup({inputField : '%s_hiddeninput',
                ifFormat : '%%Y/%%m/%%d %%%s:%%M %%P',
                showsTime : '%s',
                button : '%s_calendar',
                weekNumbers: false,
                timeFormat: '%s',
                date: (new Date()).setHours(0,0,0,0),
                firstDay: '%s'})},100);</script>""" % (
                    html_id,
                    use_ampm and 'I' or 'H',
                    field.get_value('date_only') and 'false' or 'true',
                    html_id,
                    use_ampm and '12' or '24',
                    start_day,
                )
        if not field.get_value('date_only'):
            time_result = (field.render_sub_field('hour', hour, REQUEST) +
                           field.get_value('time_separator') +
                           field.render_sub_field('minute', minute, REQUEST))

            hour_id = field.sub_form.get_field('hour').generate_field_html_id(
                "subfield_" + field.id + "_hour")
            minute_id = field.sub_form.get_field(
                'minute').generate_field_html_id("subfield_" + field.id +
                                                 "_minute")
            ampm_id = field.sub_form.get_field('ampm').generate_field_html_id(
                "subfield_" + field.id + "_ampm")
            if use_ampm:
                time_result += '&nbsp;' + field.render_sub_field(
                    'ampm', ampm, REQUEST)
            calendar_popup += calendar_picker and render_element(
                'input',
                type='hidden',
                id=html_id + '_hiddeninput',
                onchange=
                'var pattern = /(\d{4})\/(\d{2})\/(\d{2}) (\d{2}):(\d{2}) (am|pm)/; if (pattern.exec(this.value)) { document.getElementById("'
                + year_id + '").value = RegExp.$1; document.getElementById("' +
                month_id + '").value = RegExp.$2; ' + select_day +
                ' document.getElementById("' + hour_id +
                '").value = RegExp.$4; document.getElementById("' + minute_id +
                '").value = RegExp.$5; ' +
                str(use_ampm and 'document.getElementById("' + ampm_id +
                    '").value = RegExp.$6;' or '') + ' }') or ''
            return date_result + '&nbsp;&nbsp;&nbsp;' + time_result + calendar_popup
        else:
            calendar_popup += calendar_picker and render_element(
                'input',
                type='hidden',
                id=html_id + '_hiddeninput',
                onchange=
                'var pattern = /(\d{4})\/(\d{2})\/(\d{2}) (\d{2}):(\d{2}) (am|pm)/; if (pattern.exec(this.value)) { document.getElementById("'
                + year_id + '").value = RegExp.$1; document.getElementById("' +
                month_id + '").value = RegExp.$2; ' + select_day + ' }') or ''
            return date_result + calendar_popup
Esempio n. 6
0
    def render(self, field, key, value, REQUEST):
        use_ampm = field.get_value('ampm_time_style')
        hide_day = field.get_value('hide_day')
        calendar_picker = field.get_value('calendar_picker')
        start_day = field.get_value('calendar_start')
        # FIXME: backwards compatibility hack:
        if not hasattr(field, 'sub_form'):
            from StandardFields import create_datetime_text_sub_form
            field.sub_form = create_datetime_text_sub_form()

        if value is None and field.get_value('default_now'):
            value = DateTime()

        # Allow subfields to get their values even when default_now is set.
        if REQUEST is not None and \
                   REQUEST.form.has_key(field.generate_subfield_key('year')):
            value = None

        if value is None:
            year = None
            month = None
            day = None
            hour = None
            minute = None
            ampm = None
        else:
            if not isinstance(value, DateTime):
                value = DateTime(value)
            year = "%04d" % value.year()
            month = "%02d" % value.month()
            day = "%02d" % value.day()
            if use_ampm:
                hour = "%02d" % value.h_12()
            else:
                hour = "%02d" % value.hour()
            minute = "%02d" % value.minute()
            ampm = value.ampm()

        input_order = field.get_value('input_order')
        if input_order == 'ymd':
            order = [('year', year),
                     ('month', month),
                     ('day', day)]
        elif input_order == 'dmy':
            order = [('day', day),
                     ('month', month),
                     ('year', year)]
        elif input_order == 'mdy':
            order = [('month', month),
                     ('day', day),
                     ('year', year)]
        result = []
        hidden_day_part = ""
        for sub_field_name, sub_field_value in order:
            if hide_day and (sub_field_name == 'day'):
                dayvalue = sub_field_value
                if dayvalue is None:
                    dayvalue = "01"
                sub_key = field.generate_subfield_key(sub_field_name)
                sub_field = field.sub_form.get_field(sub_field_name)
                hidden_day_part = sub_field.widget.\
                                  render_hidden(sub_field, sub_key,
                                                dayvalue, REQUEST)
            else:
                result.append(field.render_sub_field(sub_field_name,
                                                     sub_field_value, REQUEST))
        date_result = string.join(result, field.get_value('date_separator'))

        day_id = field.sub_form.get_field('day').generate_field_html_id("subfield_" + field.id + "_day")
        month_id = field.sub_form.get_field('month').generate_field_html_id("subfield_" + field.id + "_month")
        year_id = field.sub_form.get_field('year').generate_field_html_id("subfield_" + field.id + "_year")

        select_day = ''
        if hidden_day_part:
            date_result += hidden_day_part
        else:
            #get the proper html id
            select_day = 'document.getElementById("'+day_id+'").value = RegExp.$3;'
        calendar_popup = ''
        html_id = field.generate_field_html_id(key)
        if calendar_picker:
            calendar_popup = '&nbsp;' + render_element(
                'button',
                css_class='kupu-button kupu-link-reference calendar-button',
                style='padding: 0px 0px 0px 0px',
                id= html_id + '_calendar',
                title='set date',
                contents=' ') + """<script type="text/javascript">
setTimeout(function(){Calendar.setup({inputField : '%s_hiddeninput',
                ifFormat : '%%Y/%%m/%%d %%%s:%%M %%P',
                showsTime : '%s',
                button : '%s_calendar',
                weekNumbers: false,
                timeFormat: '%s',
                date: (new Date()).setHours(0,0,0,0),
                firstDay: '%s'})},100);</script>"""%(html_id,
                                                 use_ampm and 'I' or 'H',
                                                 field.get_value('date_only') and 'false' or 'true',
                                                 html_id,
                                                 use_ampm and '12' or '24',
                                                 start_day,
)
        if not field.get_value('date_only'):
            time_result = (field.render_sub_field('hour', hour, REQUEST) +
                           field.get_value('time_separator') +
                           field.render_sub_field('minute', minute, REQUEST))

            hour_id = field.sub_form.get_field('hour').generate_field_html_id("subfield_" + field.id + "_hour")
            minute_id = field.sub_form.get_field('minute').generate_field_html_id("subfield_" + field.id + "_minute")
            ampm_id = field.sub_form.get_field('ampm').generate_field_html_id("subfield_" + field.id + "_ampm")
            if use_ampm:
                time_result += '&nbsp;' + field.render_sub_field('ampm',
                                                            ampm, REQUEST)
            calendar_popup += calendar_picker and render_element(
                                'input',
                                type='hidden',
                                id=html_id + '_hiddeninput',
                                onchange='var pattern = /(\d{4})\/(\d{2})\/(\d{2}) (\d{2}):(\d{2}) (am|pm)/; if (pattern.exec(this.value)) { document.getElementById("' + year_id + '").value = RegExp.$1; document.getElementById("' + month_id + '").value = RegExp.$2; ' + select_day + ' document.getElementById("' + hour_id + '").value = RegExp.$4; document.getElementById("' + minute_id + '").value = RegExp.$5; ' + str(use_ampm and 'document.getElementById("' + ampm_id + '").value = RegExp.$6;' or '') + ' }') or ''
            return date_result + '&nbsp;&nbsp;&nbsp;' + time_result + calendar_popup
        else:
            calendar_popup += calendar_picker and render_element(
                                'input',
                                type='hidden',
                                id=html_id + '_hiddeninput',
                                onchange='var pattern = /(\d{4})\/(\d{2})\/(\d{2}) (\d{2}):(\d{2}) (am|pm)/; if (pattern.exec(this.value)) { document.getElementById("' + year_id + '").value = RegExp.$1; document.getElementById("' + month_id + '").value = RegExp.$2; ' + select_day + ' }') or ''
            return date_result + calendar_popup