fixes in data import tool and voucher import tool
This commit is contained in:
parent
c00ca6c476
commit
5d8ffaa2c7
3 changed files with 34 additions and 51 deletions
|
|
@ -23,10 +23,7 @@ wn.pages['data-import-tool'].onload = function(wrapper) {
|
|||
<p id="dit-output"></p>\
|
||||
');
|
||||
|
||||
$(wrapper).find('.layout-side-section').append('<h4>Help</h4><br>\
|
||||
<p><b>Date Format:</b></p>\
|
||||
<p>Dates must be in format "YYYY-MM-DD", for example, \
|
||||
31st Jan 2012 must be "2012-01-31"</p>\
|
||||
$(wrapper).find('.layout-side-section').append('<h4>Help</h4>\
|
||||
<p><b>Importing non-English data:</b></p>\
|
||||
<p>While uploading non English files ensure that the encoding is UTF-8.</p>\
|
||||
<p>Microsoft Excel Users:\
|
||||
|
|
@ -147,14 +144,6 @@ wn.pages['data-import-tool'].onload = function(wrapper) {
|
|||
// add ignore option
|
||||
$('<input type="checkbox" name="ignore_encoding_errors"><span> Ignore Encoding Errors</span><br><br>')
|
||||
.insertBefore('#dit-upload-area form input[type="submit"]')
|
||||
|
||||
|
||||
// add overwrite option
|
||||
$('<span>Date Format: </span><select name="date_format"></select><br><br>')
|
||||
.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"]')
|
||||
|
|
|
|||
|
|
@ -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 '<a href="#Form/%(doctype)s/%(name)s">%(name)s</a>' % 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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Loading…
Add table
Reference in a new issue