fixes in data import tool and voucher import tool

This commit is contained in:
Anand Doshi 2012-10-04 13:26:04 +05:30
parent c00ca6c476
commit 5d8ffaa2c7
3 changed files with 34 additions and 51 deletions

View file

@ -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"]')

View file

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

View file

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