importiert kategorien

This commit is contained in:
Frederik Jaeckel 2022-08-29 11:05:59 +02:00
parent 6a6d9bc5d7
commit e2025a1711
7 changed files with 170 additions and 1 deletions

View file

@ -6,13 +6,14 @@
from trytond.pool import Pool
from .category import Category
from .qiftool import QifTool
from .qif_import_wiz import ImportQifWizard, ImportQifWizardStart
from .qif_import_wiz import ImportQifWizard, ImportQifWizardStart, ImportQifWizardInfo
def register():
Pool.register(
QifTool,
Category,
ImportQifWizardStart,
ImportQifWizardInfo,
module='cashbook_dataexchange', type_='model')
Pool.register(
ImportQifWizard,

View file

@ -3,6 +3,14 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
##############
# ir.message #
##############
msgctxt "model:ir.message,text:msg_wiz_categories_found"
msgid "The following categories are now imported:\n%(categories)s"
msgstr "Die folgenden Kategorien werden nun importiert:\n%(categories)s"
#############
# ir.action #
#############
@ -10,6 +18,10 @@ msgctxt "model:ir.action,name:act_import_qif_wizard"
msgid "Import QIF-File"
msgstr "QIF-Datei importieren"
msgctxt "model:ir.action,name:msg_wiz_no_categories"
msgid "No categories were found in the file."
msgstr "In der Datei wurden keine Kategorien gefunden."
#####################################
# cashbook_dataexchange.qif_imp_wiz #
@ -26,6 +38,14 @@ msgctxt "wizard_button:cashbook_dataexchange.qif_imp_wiz,start,readf:"
msgid "Read File"
msgstr "Datei lesen"
msgctxt "wizard_button:cashbook_dataexchange.qif_imp_wiz,showinfo,end:"
msgid "Cancel"
msgstr "Abbruch"
msgctxt "wizard_button:cashbook_dataexchange.qif_imp_wiz,showinfo,importf:"
msgid "Import Categories"
msgstr "Kategorien importieren"
###########################################
# cashbook_dataexchange.qif_imp_wiz.start #
@ -45,3 +65,23 @@ msgstr "QIF-Datei"
msgctxt "help:cashbook_dataexchange.qif_imp_wiz.start,file_:"
msgid "Quicken Interchange Format"
msgstr "Quicken Interchange Format"
##########################################
# cashbook_dataexchange.qif_imp_wiz.info #
##########################################
msgctxt "model:cashbook_dataexchange.qif_imp_wiz.info,name:"
msgid "Import QIF-File"
msgstr "QIF-Datei importieren"
msgctxt "view:cashbook_dataexchange.qif_imp_wiz.info:"
msgid "Information"
msgstr "Information"
msgctxt "field:cashbook_dataexchange.qif_imp_wiz.start,company:"
msgid "Company"
msgstr "Unternehmen"
msgctxt "field:cashbook_dataexchange.qif_imp_wiz.start,info:"
msgid "Information"
msgstr "Information"

17
message.xml Normal file
View file

@ -0,0 +1,17 @@
<?xml version="1.0"?>
<!-- This file is part of the cashbook-module from m-ds for Tryton.
The COPYRIGHT file at the top level of this repository contains the
full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.message" id="msg_wiz_categories_found">
<field name="text">The following categories are now imported:\n%(categories)s</field>
</record>
<record model="ir.message" id="msg_wiz_no_categories">
<field name="text">No categories were found in the file.</field>
</record>
</data>
</tryton>

View file

@ -8,6 +8,7 @@ from trytond.pool import Pool
from trytond.model import ModelView, fields
from trytond.wizard import Wizard, StateTransition, StateView, Button
from trytond.transaction import Transaction
from trytond.i18n import gettext
class ImportQifWizardStart(ModelView):
@ -27,6 +28,18 @@ class ImportQifWizardStart(ModelView):
# end ImportQifWizardStart
class ImportQifWizardInfo(ModelView):
'Import QIF-File'
__name__ = 'cashbook_dataexchange.qif_imp_wiz.info'
company = fields.Many2One(model_name='company.company',
string="Company", required=True,
states={'invisible': True})
info = fields.Text(string='Information', readonly=True)
# end ImportQifWizardInfo
class ImportQifWizard(Wizard):
'Import QIF-File'
__name__ = 'cashbook_dataexchange.qif_imp_wiz'
@ -38,6 +51,85 @@ class ImportQifWizard(Wizard):
Button(string='Cancel', state='end', icon='tryton-cancel'),
Button(string='Read File', state='readf', icon='tryton-forward', default=True),
])
showinfo = StateView(model_name='cashbook_dataexchange.qif_imp_wiz.info', \
view='cashbook_dataexchange.qif_imp_wiz_info_form', \
buttons=[
Button(string='Cancel', state='end', icon='tryton-cancel'),
Button(string='Import Categories', state='importf', icon='tryton-import', default=True),
])
readf = StateTransition()
importf = StateTransition()
def default_showinfo(self, fields):
""" show import-info
"""
values = {
'company': self.start.company.id,
'info': getattr(self.showinfo, 'info', None),
}
return values
def transition_readf(self):
""" read file, show number of objects
"""
pool = Pool()
QitTool = pool.get('cashbook_dataexchange.qiftool')
model = Transaction().context.get('active_model', '')
file_content = None
if isinstance(self.start.file_, bytes):
file_content = self.start.file_.decode('utf8')
if model == 'cashbook.category':
def get_catlist(catlist, parent_name=None):
""" generate list of categories
"""
names = []
for name1 in catlist.keys():
name_lst = []
if parent_name:
name_lst.append(parent_name)
name_lst.append(name1)
current_name = '/'.join(name_lst)
names.append(current_name)
names.extend(get_catlist(catlist[name1]['childs'], current_name))
return names
# read file content, extract categories
qif_content = QitTool.split_by_type(file_content)
if 'Cat' in qif_content.keys():
categories = QitTool.qif_read_categories(qif_content['Cat'])
self.showinfo.info = gettext(
'cashbook_dataexchange.msg_wiz_categories_found',
categories = '\n'.join(
[' '] +
['%s (in)' % x for x in get_catlist(categories['in'], None)]+
[' '] +
['%s (out)' % x for x in get_catlist(categories['out'], None)]
)
)
else :
self.showinfo.info = gettext('cashbook_dataexchange.msg_wiz_no_categories')
return 'showinfo'
def transition_importf(self):
""" read file, show number of objects
"""
pool = Pool()
Category = pool.get('cashbook.category')
model = Transaction().context.get('active_model', '')
file_content = None
if isinstance(self.start.file_, bytes):
file_content = self.start.file_.decode('utf8')
if model == 'cashbook.category':
if file_content:
records = Category.create_from_qif(file_content)
return 'end'
# end ImportQifWizard

View file

@ -10,6 +10,11 @@ full copyright notices and license terms. -->
<field name="type">form</field>
<field name="name">wiz_qifimport_start_form</field>
</record>
<record model="ir.ui.view" id="qif_imp_wiz_info_form">
<field name="model">cashbook_dataexchange.qif_imp_wiz.info</field>
<field name="type">form</field>
<field name="name">wiz_qifimport_info_form</field>
</record>
<!-- import qif file wizard -->
<record model="ir.action.wizard" id="act_import_qif_wizard">

View file

@ -3,4 +3,5 @@ version=6.0.1
depends:
cashbook
xml:
message.xml
qif_import_wiz.xml

View file

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<!-- This file is part of the cashbook-module from m-ds for Tryton.
The COPYRIGHT file at the top level of this repository contains the
full copyright notices and license terms. -->
<form col="2">
<label name="company"/>
<field name="company"/>
<group col="1" name="info" colspan="2" string="Information" yexpand="1">
<field name="info"/>
</group>
</form>