Merge pull request #10960 from netchampfaris/dib-fixes-2020-07-09
This commit is contained in:
commit
32106ccda2
2 changed files with 42 additions and 31 deletions
|
|
@ -59,6 +59,7 @@ class Importer:
|
|||
frappe.flags.in_import = True
|
||||
frappe.flags.mute_emails = self.data_import.mute_emails
|
||||
|
||||
self.data_import.db_set("status", "Pending")
|
||||
self.data_import.db_set("template_warnings", "")
|
||||
|
||||
def import_data(self):
|
||||
|
|
@ -618,7 +619,7 @@ class Row:
|
|||
def validate_value(self, value, col):
|
||||
df = col.df
|
||||
if df.fieldtype == "Select":
|
||||
select_options = df.get_select_options()
|
||||
select_options = [d for d in (df.options or '').split('\n') if d]
|
||||
if select_options and value not in select_options:
|
||||
options_string = ", ".join([frappe.bold(d) for d in select_options])
|
||||
msg = _("Value must be one of {0}").format(options_string)
|
||||
|
|
@ -970,6 +971,13 @@ class Column:
|
|||
elif self.df.fieldtype in ("Date", "Time", "Datetime"):
|
||||
# guess date format
|
||||
self.date_format = self.guess_date_format_for_column()
|
||||
if not self.date_format:
|
||||
self.date_format = '%Y-%m-%d'
|
||||
self.warnings.append({
|
||||
'col': self.column_number,
|
||||
'message': _("Date format could not determined from the values in this column. Defaulting to yyyy-mm-dd."),
|
||||
'type': 'info'
|
||||
})
|
||||
|
||||
def as_dict(self):
|
||||
d = frappe._dict()
|
||||
|
|
|
|||
|
|
@ -1258,6 +1258,8 @@ def guess_date_format(date_string):
|
|||
r"%d.%m.%y",
|
||||
r"%m.%d.%y",
|
||||
r"%y.%m.%d",
|
||||
r"%d %b %Y",
|
||||
r"%d %B %Y",
|
||||
]
|
||||
|
||||
TIME_FORMATS = [
|
||||
|
|
@ -1269,41 +1271,42 @@ def guess_date_format(date_string):
|
|||
r"%I:%M %p",
|
||||
]
|
||||
|
||||
date_string = date_string.strip()
|
||||
def _get_date_format(date_str):
|
||||
for f in DATE_FORMATS:
|
||||
try:
|
||||
# if date is parsed without any exception
|
||||
# capture the date format
|
||||
datetime.datetime.strptime(date_str, f)
|
||||
return f
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
_date = None
|
||||
_time = None
|
||||
|
||||
if " " in date_string:
|
||||
_date, _time = date_string.split(" ", 1)
|
||||
else:
|
||||
_date = date_string
|
||||
|
||||
date_format = None
|
||||
time_format = None
|
||||
|
||||
for f in DATE_FORMATS:
|
||||
try:
|
||||
# if date is parsed without any exception
|
||||
# capture the date format
|
||||
datetime.datetime.strptime(_date, f)
|
||||
date_format = f
|
||||
break
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
if _time:
|
||||
def _get_time_format(time_str):
|
||||
for f in TIME_FORMATS:
|
||||
try:
|
||||
# if time is parsed without any exception
|
||||
# capture the time format
|
||||
datetime.datetime.strptime(_time, f)
|
||||
time_format = f
|
||||
break
|
||||
datetime.datetime.strptime(time_str, f)
|
||||
return f
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
full_format = date_format
|
||||
if time_format:
|
||||
full_format += " " + time_format
|
||||
return full_format
|
||||
date_format = None
|
||||
time_format = None
|
||||
date_string = date_string.strip()
|
||||
|
||||
# check if date format can be guessed
|
||||
date_format = _get_date_format(date_string)
|
||||
if date_format:
|
||||
return date_format
|
||||
|
||||
# date_string doesnt look like date, it can have a time part too
|
||||
# split the date string into date and time parts
|
||||
if " " in date_string:
|
||||
date_str, time_str = date_string.split(" ", 1)
|
||||
|
||||
date_format = _get_date_format(date_str) or ''
|
||||
time_format = _get_time_format(time_str) or ''
|
||||
|
||||
if date_format and time_format:
|
||||
return (date_format + ' ' + time_format).strip()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue