Parse text as datetime when it is a string
The on_paste method is calling value_from_text for each widget using the string from the clipboard. So textual value needs to be supported even for date and time widgets which uses a cell renderer that provides datetime value. Closes #12860
This commit is contained in:
@@ -9,7 +9,9 @@ from gi.repository import Gdk, GObject, Gtk
|
||||
|
||||
from .common import IconFactory
|
||||
|
||||
__all__ = ['Date', 'CellRendererDate', 'Time', 'CellRendererTime', 'DateTime']
|
||||
__all__ = [
|
||||
'Date', 'CellRendererDate', 'Time', 'CellRendererTime', 'DateTime',
|
||||
'date_parse']
|
||||
|
||||
_ = gettext.gettext
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@ from tryton.common.cellrenderertext import (
|
||||
CellRendererText, CellRendererTextCompletion)
|
||||
from tryton.common.cellrenderertoggle import CellRendererToggle
|
||||
from tryton.common.completion import get_completion, update_completion
|
||||
from tryton.common.datetime_ import CellRendererDate, CellRendererTime
|
||||
from tryton.common.datetime_ import (
|
||||
CellRendererDate, CellRendererTime, date_parse)
|
||||
from tryton.common.domain_parser import quote
|
||||
from tryton.common.selection import (
|
||||
PopdownMixin, SelectionMixin, selection_shortcuts)
|
||||
@@ -497,6 +498,17 @@ class Date(GenericText):
|
||||
else:
|
||||
return ''
|
||||
|
||||
def value_from_text(self, record, text, callback=None):
|
||||
if isinstance(text, str):
|
||||
field = record[self.attrs['name']]
|
||||
try:
|
||||
# Use a datetime instance and rely on field to convert to the
|
||||
# proper type
|
||||
text = date_parse(text, self.get_format(record, field))
|
||||
except (ValueError, OverflowError):
|
||||
text = None
|
||||
return super().value_from_text(record, text, callback=callback)
|
||||
|
||||
|
||||
class Time(Date):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user