formatting
This commit is contained in:
parent
82f9d3a792
commit
8f12741d76
14 changed files with 411 additions and 344 deletions
|
@ -4,7 +4,7 @@
|
|||
# full copyright notices and license terms.
|
||||
|
||||
from io import StringIO
|
||||
from datetime import datetime, date
|
||||
from datetime import datetime, date
|
||||
from decimal import Decimal
|
||||
import csv
|
||||
from trytond.pool import Pool
|
||||
|
@ -36,15 +36,15 @@ class ImportWizardStart(ModelView):
|
|||
'Import CSV-File'
|
||||
__name__ = 'investment.imp_wiz.start'
|
||||
|
||||
asset = fields.Many2One(string='Asset', readonly=True,
|
||||
model_name='investment.asset')
|
||||
asset = fields.Many2One(
|
||||
string='Asset', readonly=True, model_name='investment.asset')
|
||||
file_ = fields.Binary(string="CSV-File", required=True)
|
||||
dec_divider = fields.Selection(string='Decimal divider',
|
||||
required=True, selection=sel_dec_divider)
|
||||
date_fmt = fields.Selection(string='Date format',
|
||||
required=True, selection=sel_date_fmt)
|
||||
field_delimiter = fields.Selection(string='Field delimiter',
|
||||
required=True, selection=sel_field_delimiter)
|
||||
dec_divider = fields.Selection(
|
||||
string='Decimal divider', required=True, selection=sel_dec_divider)
|
||||
date_fmt = fields.Selection(
|
||||
string='Date format', required=True, selection=sel_date_fmt)
|
||||
field_delimiter = fields.Selection(
|
||||
string='Field delimiter', required=True, selection=sel_field_delimiter)
|
||||
|
||||
# end ImportWizardStart
|
||||
|
||||
|
@ -54,11 +54,14 @@ class ImportWizard(Wizard):
|
|||
__name__ = 'investment.imp_wiz'
|
||||
|
||||
start_state = 'start'
|
||||
start = StateView(model_name='investment.imp_wiz.start', \
|
||||
view='investment.imp_wiz_start_form', \
|
||||
start = StateView(
|
||||
model_name='investment.imp_wiz.start',
|
||||
view='investment.imp_wiz_start_form',
|
||||
buttons=[
|
||||
Button(string='Cancel', state='end', icon='tryton-cancel'),
|
||||
Button(string='Import File', state='importf', icon='tryton-import', default=True),
|
||||
Button(
|
||||
string='Import File', state='importf',
|
||||
icon='tryton-import', default=True),
|
||||
])
|
||||
importf = StateTransition()
|
||||
|
||||
|
@ -84,9 +87,9 @@ class ImportWizard(Wizard):
|
|||
if self.start.file_ is not None:
|
||||
(lines, max_date, min_date) = ImportWiz.read_csv_file(
|
||||
self.start.file_.decode('utf8'),
|
||||
dec_divider = self.start.dec_divider,
|
||||
date_fmt = self.start.date_fmt,
|
||||
delimiter = self.start.field_delimiter)
|
||||
dec_divider=self.start.dec_divider,
|
||||
date_fmt=self.start.date_fmt,
|
||||
delimiter=self.start.field_delimiter)
|
||||
|
||||
if len(lines) > 0:
|
||||
ImportWiz.upload_rates(
|
||||
|
@ -140,33 +143,35 @@ class ImportWizard(Wizard):
|
|||
max_rate = None
|
||||
|
||||
with StringIO(file_content) as fhdl:
|
||||
csv_lines = csv.DictReader(fhdl,
|
||||
fieldnames = ['date', 'rate'],
|
||||
dialect='excel',
|
||||
delimiter=delimiter)
|
||||
csv_lines = csv.DictReader(
|
||||
fhdl,
|
||||
fieldnames=['date', 'rate'],
|
||||
dialect='excel',
|
||||
delimiter=delimiter)
|
||||
|
||||
for line in csv_lines:
|
||||
# skip first line
|
||||
if line.get('date', '') == 'date':
|
||||
continue
|
||||
|
||||
try :
|
||||
date_val = datetime.strptime(line.get('date', None).strip(), date_fmt).date()
|
||||
except :
|
||||
try:
|
||||
date_val = datetime.strptime(
|
||||
line.get('date', None).strip(), date_fmt).date()
|
||||
except Exception:
|
||||
raise UserError(gettext(
|
||||
'investment.msg_import_err_date',
|
||||
datefmt = date_fmt,
|
||||
colnr = '1',
|
||||
datefmt=date_fmt,
|
||||
colnr='1',
|
||||
))
|
||||
try :
|
||||
rate_val = line.get('rate', None).replace(del_chars[0], '').strip()
|
||||
try:
|
||||
rate_val = line.get('rate', None).replace(
|
||||
del_chars[0], '').strip()
|
||||
rate_val = Decimal(rate_val.replace(dec_divider, '.'))
|
||||
except :
|
||||
except Exception:
|
||||
raise UserError(gettext(
|
||||
'investment.msg_import_err_date',
|
||||
datefmt = 'dd%sdd' % dec_divider,
|
||||
colnr = '2',
|
||||
))
|
||||
datefmt='dd%sdd' % dec_divider,
|
||||
colnr='2'))
|
||||
|
||||
if isinstance(date_val, date) and isinstance(rate_val, Decimal):
|
||||
result.append({'date': date_val, 'rate': rate_val})
|
||||
|
@ -174,34 +179,32 @@ class ImportWizard(Wizard):
|
|||
# date range
|
||||
if max_date is None:
|
||||
max_date = date_val
|
||||
else :
|
||||
else:
|
||||
if max_date < date_val:
|
||||
max_date = date_val
|
||||
|
||||
if min_date is None:
|
||||
min_date = date_val
|
||||
else :
|
||||
else:
|
||||
if min_date > date_val:
|
||||
min_date = date_val
|
||||
|
||||
# rate range
|
||||
if max_rate is None:
|
||||
max_rate = rate_val
|
||||
else :
|
||||
else:
|
||||
if max_rate < rate_val:
|
||||
max_rate = rate_val
|
||||
|
||||
if min_rate is None:
|
||||
min_rate = rate_val
|
||||
else :
|
||||
else:
|
||||
if min_rate > rate_val:
|
||||
min_rate = rate_val
|
||||
else :
|
||||
else:
|
||||
raise UserError(gettext(
|
||||
'investment.msg_err_unknown_content',
|
||||
linetxt = line,
|
||||
))
|
||||
linetxt=line))
|
||||
return (result, max_date, min_date)
|
||||
|
||||
# end ImportWizard
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue