# This one works better than the official one, and has a nice reset button. # feel free to comment :-)
class SplitDateTimeResetField(MultiValueField): widget = SplitDateTimeResetWidget def __init__(self, required=True, widget=None, label=None, initial=None): fields = (DateField(), TimeField()) super(SplitDateTimeResetField, self).__init__(fields, required, widget, label, initial) def compress(self, data_list): print "Compressing: " + `data_list` if data_list[0] and data_list[1]: return datetime.datetime.combine(*data_list) return None _now_button = """<input type="button" value="Set to now" onClick=" %(target_name)s_0.value = '%(date)s'; %(target_name)s_1.value = '%(hour)02d:%(minute)02d'; " /> """ class SplitDateTimeResetWidget(MultiWidget): def __init__(self, attrs=None): attrs = attrs or {} a0 = attrs.copy(); a0['size'] = 11 a1 = attrs.copy(); a1['size'] = 6 widgets = (TextInput(attrs=a0), TextInput(attrs=a1)) super(SplitDateTimeResetWidget, self).__init__(widgets, attrs) def decompress(self, value): if value: return [value.date(), value.time()] else: return [None, None] def render(self, name, value, attrs=None): if not isinstance(value, list): value = self.decompress(value) output = [] if not value: value = [None, None] if isinstance(value[1], datetime.time): value[1] = '%02d:%02d' % (value[1].hour, value[1].minute) for i, widget in enumerate(self.widgets): output.append(self.widgets[i].render(name + '_%d' % (i), value[i], attrs)) now = datetime.datetime.now() output.append(_now_button % { 'target_name': name, 'date': now.date(), 'hour': now.hour, 'minute': now.minute } ) return self.format_output(output) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---