diff --git a/core/page/data_import_tool/data_import_tool.js b/core/page/data_import_tool/data_import_tool.js index c7701abf40..4058dd6e95 100644 --- a/core/page/data_import_tool/data_import_tool.js +++ b/core/page/data_import_tool/data_import_tool.js @@ -23,10 +23,7 @@ wn.pages['data-import-tool'].onload = function(wrapper) {
\ '); - $(wrapper).find('.layout-side-section').append('Date Format:
\ -Dates must be in format "YYYY-MM-DD", for example, \ - 31st Jan 2012 must be "2012-01-31"
\ + $(wrapper).find('.layout-side-section').append('Importing non-English data:
\While uploading non English files ensure that the encoding is UTF-8.
\Microsoft Excel Users:\
@@ -147,14 +144,6 @@ wn.pages['data-import-tool'].onload = function(wrapper) {
// add ignore option
$(' Ignore Encoding Errors
')
.insertBefore('#dit-upload-area form input[type="submit"]')
-
-
- // add overwrite option
- $('Date Format:
')
- .insertBefore('#dit-upload-area form input[type="submit"]')
-
- $('#dit-upload-area select').add_options(['dd/mm/yyyy', 'mm/dd/yyyy', 'yyyy-mm-dd'])
-
// rename button
$('#dit-upload-area form input[type="submit"]')
diff --git a/core/page/data_import_tool/data_import_tool.py b/core/page/data_import_tool/data_import_tool.py
index 46cc49a46b..c6d53d9489 100644
--- a/core/page/data_import_tool/data_import_tool.py
+++ b/core/page/data_import_tool/data_import_tool.py
@@ -202,7 +202,7 @@ def get_parent_details(rows):
def check_record(d, parenttype):
"""check for mandatory, select options, dates. these should ideally be in doclist"""
- from webnotes.utils.dateutils import user_to_str
+ from webnotes.utils.dateutils import parse_date
if parenttype and not d.get('parent'):
raise Exception, "parent is required."
@@ -226,7 +226,7 @@ def check_record(d, parenttype):
", ".join(filter(None, docfield.options.split("\n"))))
if val and docfield.fieldtype=='Date':
- d[key] = parse_date(val, webnotes.form_dict['date_format'])
+ d[key] = parse_date(val)
def getlink(doctype, name):
return '%(name)s' % locals()
@@ -237,33 +237,6 @@ def delete_child_rows(rows, doctype):
for p in list(set([r[1] for r in rows[8:]])):
webnotes.conn.sql("""delete from `tab%s` where parent=%s""" % (doctype, '%s'), p)
-def parse_date(val, format):
- from webnotes.utils.dateutils import user_to_str
-
- parsed_val = None
- check_formats = [
- format, # the one mentioned in the form
- None, # users default date format
- "yyyy-mm-dd", # system date format
- "dd-mmm-yyyy", # numbers app format
- "mm/dd/yyyy", # excel app format
- ]
-
- for f in check_formats:
- try:
- parsed_val = user_to_str(val, f, verbose=0)
- if parsed_val:
- webnotes.errprint([f, parsed_val])
- break
- except ValueError, e:
- pass
-
- if not parsed_val:
- webnotes.msgprint("Cannot identify date")
- raise Exception
-
- return parsed_val
-
def import_doc(d, doctype, overwrite, row_idx):
"""import main (non child) document"""
import webnotes
diff --git a/webnotes/utils/dateutils.py b/webnotes/utils/dateutils.py
index 67a3f51c45..e897640f53 100644
--- a/webnotes/utils/dateutils.py
+++ b/webnotes/utils/dateutils.py
@@ -28,14 +28,16 @@ import datetime
user_date_format = None
dateformats = {
'yyyy-mm-dd': '%Y-%m-%d',
- 'dd/mm/yyyy': '%d/%m/%Y',
'mm/dd/yyyy': '%m/%d/%Y',
- 'dd-mm-yyyy': '%d-%m-%Y',
+ 'mm-dd-yyyy': '%m-%d-%Y',
+ "mm/dd/yy": "%m/%d/%y",
'dd-mmm-yyyy': '%d-%b-%Y', # numbers app format
- 'yyyy-mm-dd': '%Y-%m-%d',
+ 'dd/mm/yyyy': '%d/%m/%Y',
+ 'dd-mm-yyyy': '%d-%m-%Y',
+ "dd/mm/yy": "%d/%m/%y",
}
-def user_to_str(date, date_format=None, verbose=1):
+def user_to_str(date, date_format=None):
if not date: return date
if not date_format:
@@ -45,14 +47,33 @@ def user_to_str(date, date_format=None, verbose=1):
return datetime.datetime.strptime(date,
dateformats[date_format]).strftime('%Y-%m-%d')
except ValueError, e:
- if verbose:
- webnotes.msgprint("Date %s must be in format %s" % (date, date_format),
- raise_exception=True)
- else:
- raise e
+ raise ValueError, "Date %s must be in format %s" % (date, date_format)
+
+def parse_date(date):
+ """tries to parse given date to system's format i.e. yyyy-mm-dd. returns a string"""
+ parsed_date = None
+
+ # why the sorting? checking should be done in a predictable order
+ check_formats = [None] + sorted(dateformats.keys(),
+ reverse=not get_user_date_format().startswith("dd"))
+
+ for f in check_formats:
+ try:
+ parsed_date = user_to_str(date, f)
+ if parsed_date:
+ break
+ except ValueError, e:
+ pass
+
+ if not parsed_date:
+ raise Exception, """Cannot understand date - '%s'.
+ Try formatting it like your default format - '%s'""" % \
+ (date, get_user_date_format())
+
+ return parsed_date
def get_user_date_format():
if not user_date_format:
global user_date_format
user_date_format = webnotes.conn.get_value("Control Panel", None, "date_format")
- return user_date_format
+ return user_date_format
\ No newline at end of file