From c478673367405024ee43a90f47b1d58a12421c2e Mon Sep 17 00:00:00 2001 From: Shariq Ansari <30859809+shariquerik@users.noreply.github.com> Date: Mon, 1 Aug 2022 14:50:40 +0530 Subject: [PATCH] fix: allow to import time field (#17677) --- frappe/core/doctype/data_import/importer.py | 20 ++++++++++++++------ frappe/utils/data.py | 5 +++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/frappe/core/doctype/data_import/importer.py b/frappe/core/doctype/data_import/importer.py index 9e741ab590..25136db74b 100644 --- a/frappe/core/doctype/data_import/importer.py +++ b/frappe/core/doctype/data_import/importer.py @@ -6,7 +6,7 @@ import json import os import re import timeit -from datetime import date, datetime +from datetime import date, datetime, time import frappe from frappe import _ @@ -937,11 +937,13 @@ class Column: """ def guess_date_format(d): - if isinstance(d, (datetime, date)): + if isinstance(d, (datetime, date, time)): if self.df.fieldtype == "Date": return "%Y-%m-%d" if self.df.fieldtype == "Datetime": return "%Y-%m-%d %H:%M:%S" + if self.df.fieldtype == "Time": + return "%H:%M:%S" if isinstance(d, str): return frappe.utils.guess_date_format(d) @@ -994,16 +996,22 @@ class Column: } ) elif self.df.fieldtype in ("Date", "Time", "Datetime"): - # guess date format + # guess date/time format self.date_format = self.guess_date_format_for_column() if not self.date_format: - self.date_format = "%Y-%m-%d" + if self.df.fieldtype == "Time": + self.date_format = "%H:%M:%S" + format = "HH:mm:ss" + else: + self.date_format = "%Y-%m-%d" + format = "yyyy-mm-dd" + self.warnings.append( { "col": self.column_number, "message": _( - "Date format could not be determined from the values in this column. Defaulting to yyyy-mm-dd." - ), + "{0} format could not be determined from the values in this column. Defaulting to {1}." + ).format(self.df.fieldtype, format), "type": "info", } ) diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 262cc3fc7d..bdef60b930 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -2024,6 +2024,11 @@ def guess_date_format(date_string: str) -> str: if date_format: return date_format + # check if time format can be guessed + time_format = _get_time_format(date_string) + if time_format: + return time_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: