def convert_datetime(): try: return untimezoned_date(datetime.datetime(*time.strptime(value, date_format() + ' ' + HM_FORMAT)[:6])) except ValueError: try: return untimezoned_date(datetime.datetime(*time.strptime(value, date_format())[:6])) except ValueError: return except TypeError: return
def test_format_datetime(): field = { 'type': 'datetime', 'format': '"%H:%M:%S"', } for value, result in ( (datetime.date(2002, 12, 4), '12/04/2002'), (untimezoned_date(datetime.datetime(2002, 12, 4)), '12/04/2002'), (untimezoned_date(datetime.datetime(2002, 12, 4, 12, 30)), '"12/04/2002 12:30:00"'), (False, ''), (None, ''), ): assert format_value(field, value) == result
def test_convert_datetime(): field = { 'type': 'datetime', 'format': '"%H:%M:%S"', } for value, result in ( ('12/04/2002', datetime.datetime(2002, 12, 4)), ('12/04/2002 12:30:00', untimezoned_date(datetime.datetime(2002, 12, 4, 12, 30))), ('02/03/04', datetime.datetime(2004, 2, 3)), ('02/03/04 05:06:07', untimezoned_date(datetime.datetime(2004, 2, 3, 5, 6, 7))), ('test', None), (None, None), ): assert convert_value(field, value) == result
def test_format_datetime(self): "Test format datetime" field = { 'type': 'datetime', 'format': '"%H:%M:%S"', } for value, result in ( (dt.date(2002, 12, 4), dt.date(2002, 12, 4).strftime('%x')), (untimezoned_date(dt.datetime(2002, 12, 4)), dt.date(2002, 12, 4).strftime('%x')), (untimezoned_date(dt.datetime(2002, 12, 4, 12, 30)), dt.datetime(2002, 12, 4, 12, 30).strftime('"%x %H:%M:%S"')), (False, ''), (None, ''), ): self.assertEqual( format_value(field, value), result, msg="format_value(%r, %r)" % (field, value))
def convert_datetime(): if not value: return format_ = context.get('date_format', '%x') + ' %X' try: dt = date_parse(value, format_) return untimezoned_date(dt) except ValueError: return
def parse(self): text = self.entry.get_text() value = None if text: try: value = untimezoned_date(date_parse(text, self._format)) except ValueError: pass self._value = value
def test_convert_datetime(self): "Test convert datetime" field = { 'type': 'datetime', 'format': '"%H:%M:%S"', } for value, result in ( ('12/04/2002', untimezoned_date(dt.datetime(2002, 12, 4))), ('12/04/2002 12:30:00', untimezoned_date( dt.datetime(2002, 12, 4, 12, 30))), ('02/03/04', untimezoned_date(dt.datetime(2004, 2, 3))), ('02/03/04 05:06:07', untimezoned_date( dt.datetime(2004, 2, 3, 5, 6, 7))), ('test', None), (None, None), ): self.assertEqual( convert_value(field, value), result, msg="convert_value(%r, %r)" % (field, value))
def convert_datetime(): if not value: return format_ = (date_format(context.get('date_format')) + ' ' + time_format(field)) try: dt = date_parse(value, format_) return untimezoned_date(dt) except ValueError: return
def set_client(self, record, value, force_change=False): if not isinstance(value, datetime.datetime): try: value = datetime.datetime(*time.strptime(value, date_format() + ' ' + self.time_format(record))[:6]) value = common.untimezoned_date(value) except ValueError: value = self._default super(DateTimeField, self).set_client(record, value, force_change=force_change)
def cal_open(self, widget): parent = get_toplevel_window() win = gtk.Dialog(_('Date Time Selection'), parent, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK)) win.set_has_separator(True) win.set_icon(TRYTON_ICON) win.vbox.set_spacing(2) hbox = gtk.HBox(spacing=2) hbox.pack_start(gtk.Label(_('Hour:')), expand=False, fill=False) widget_hour = gtk.SpinButton(gtk.Adjustment(0, 0, 23, 1, 5), 1, 0) hbox.pack_start(widget_hour, expand=True, fill=True) hbox.pack_start(gtk.Label(_('Minute:')), expand=False, fill=False) widget_minute = gtk.SpinButton( gtk.Adjustment(0, 0, 59, 1, 10), 1, 0) hbox.pack_start(widget_minute, expand=True, fill=True) win.vbox.pack_start(hbox, expand=False, fill=True) cal = gtk.Calendar() cal.set_display_options(gtk.CALENDAR_SHOW_HEADING | \ gtk.CALENDAR_SHOW_DAY_NAMES | \ gtk.CALENDAR_SHOW_WEEK_NUMBERS | \ gtk.CALENDAR_WEEK_START_MONDAY) cal.connect('day-selected-double-click', lambda *x: win.response(gtk.RESPONSE_OK)) win.vbox.pack_start(cal, expand=True, fill=True) win.show_all() self.set_value(self.record, self.field) val = self.field.get(self.record) if val: val = timezoned_date(val) widget_hour.set_value(val.hour) widget_minute.set_value(val.minute) cal.select_month(val.month - 1, val.year) cal.select_day(val.day) else: widget_hour.set_value(time.localtime()[3]) widget_minute.set_value(time.localtime()[4]) response = win.run() if response == gtk.RESPONSE_OK: hour = int(widget_hour.get_value()) minute = int(widget_minute.get_value()) year = int(cal.get_date()[0]) month = int(cal.get_date()[1]) + 1 day = int(cal.get_date()[2]) date = untimezoned_date(datetime.datetime(year, month, day, hour, minute)) self.field.set_client(self.record, date) self.display(self.record, self.field) self._focus_out() parent.present() win.destroy()
def convert_datetime(): if not value: return format_ = context.get('date_format', '%X') + ' %x' try: dt = date_parse(value, format_) if dt.time() == datetime.time.min: return dt return untimezoned_date(dt) except ValueError: return
def test_convert_datetime(): field = { 'type': 'datetime', 'format': '"%H:%M:%S"', } for value, result in ( ('12/04/2002', datetime.datetime(2002, 12, 4)), ('12/04/2002 12:30:00', untimezoned_date( datetime.datetime(2002, 12, 4, 12, 30))), ('test', None), (None, None), ): assert convert_value(field, value) == result
def set_client(self, record, value, force_change=False): if isinstance(value, basestring): try: value = datetime.datetime(*time.strptime( value, date_format() + ' ' + self.time_format(record))[:6]) except ValueError: value = self._default if value: value = common.untimezoned_date(value) super(DateTimeField, self).set_client(record, value, force_change=force_change)
def test_format_datetime(): field = { 'type': 'datetime', 'format': '"%H:%M:%S"', } for value, result in ( (datetime.date(2002, 12, 4), '12/04/02'), (datetime.datetime(2002, 12, 4), '12/04/02'), (untimezoned_date(datetime.datetime(2002, 12, 4, 12, 30)), '"12/04/02 12:30:00"'), (False, ''), (None, ''), ): assert format_value(field, value) == result
def convert_datetime(): try: return untimezoned_date( datetime.datetime( *time.strptime(value, date_format() + ' ' + time_format(field))[:6])) except ValueError: try: return datetime.datetime( *time.strptime(value, date_format())[:6]) except ValueError: return except TypeError: return
def set_client(self, record, value, force_change=False): if isinstance(value, datetime.time): current_value = self.get_client(record) if current_value: value = datetime.datetime.combine(current_value.date(), value) else: value = None elif value and not isinstance(value, datetime.datetime): current_value = self.get_client(record) if current_value: time = current_value.time() else: time = datetime.time() value = datetime.datetime.combine(value, time) if value: value = common.untimezoned_date(value) super(DateTimeField, self).set_client(record, value, force_change=force_change)
def set_client(self, record, value, force_change=False): if isinstance(value, datetime.time): current_value = self.get_client(record) if current_value: value = datetime.datetime.combine( current_value.date(), value) else: value = None elif value and not isinstance(value, datetime.datetime): current_value = self.get_client(record) if current_value: time = current_value.time() else: time = datetime.time() value = datetime.datetime.combine(value, time) if value: value = common.untimezoned_date(value) super(DateTimeField, self).set_client(record, value, force_change=force_change)
def get_value(self): return untimezoned_date(self.widget.props.value)