formatting

This commit is contained in:
Frederik Jaeckel 2023-06-07 18:44:53 +02:00
parent 82f9d3a792
commit 8f12741d76
14 changed files with 411 additions and 344 deletions

View file

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