Merge pull request #10960 from netchampfaris/dib-fixes-2020-07-09

This commit is contained in:
Faris Ansari 2020-07-09 15:10:45 +05:30 committed by GitHub
commit 32106ccda2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 31 deletions

View file

@ -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()

View file

@ -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()