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
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)
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)
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
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 += ' ' + 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 + ' ' + 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
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 += ' ' + 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 + ' ' + 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