|
@ -23,8 +23,7 @@ |
|
|
|
|
|
|
|
|
import itertools |
|
|
import itertools |
|
|
import tempfile |
|
|
import tempfile |
|
|
import StringIO |
|
|
|
|
|
import cStringIO |
|
|
|
|
|
|
|
|
from cStringIO import StringIO |
|
|
import base64 |
|
|
import base64 |
|
|
|
|
|
|
|
|
import csv |
|
|
import csv |
|
@ -43,7 +42,7 @@ class AccountUnicodeWriter(object): |
|
|
|
|
|
|
|
|
def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): |
|
|
def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): |
|
|
# Redirect output to a queue |
|
|
# Redirect output to a queue |
|
|
self.queue = cStringIO.StringIO() |
|
|
|
|
|
|
|
|
self.queue = StringIO() |
|
|
# created a writer with Excel formating settings |
|
|
# created a writer with Excel formating settings |
|
|
self.writer = csv.writer(self.queue, dialect=dialect, **kwds) |
|
|
self.writer = csv.writer(self.queue, dialect=dialect, **kwds) |
|
|
self.stream = f |
|
|
self.stream = f |
|
@ -93,8 +92,6 @@ class AccountCSVExport(orm.TransientModel): |
|
|
'journal_id', |
|
|
'journal_id', |
|
|
'Journals', |
|
|
'Journals', |
|
|
help='If empty, use all journals, only used for journal entries'), |
|
|
help='If empty, use all journals, only used for journal entries'), |
|
|
'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscalyear', |
|
|
|
|
|
required=True), |
|
|
|
|
|
'export_filename': fields.char('Export CSV Filename', size=128), |
|
|
'export_filename': fields.char('Export CSV Filename', size=128), |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -105,7 +102,8 @@ class AccountCSVExport(orm.TransientModel): |
|
|
|
|
|
|
|
|
def _get_fiscalyear_default(self, cr, uid, context=None): |
|
|
def _get_fiscalyear_default(self, cr, uid, context=None): |
|
|
fiscalyear_obj = self.pool['account.fiscalyear'] |
|
|
fiscalyear_obj = self.pool['account.fiscalyear'] |
|
|
context['company_id'] = self._get_company_default(cr, uid, context) |
|
|
|
|
|
|
|
|
context = dict(context, |
|
|
|
|
|
company_id=self._get_company_default(cr, uid, context)) |
|
|
return fiscalyear_obj.find(cr, uid, dt=None, exception=True, |
|
|
return fiscalyear_obj.find(cr, uid, dt=None, exception=True, |
|
|
context=context) |
|
|
context=context) |
|
|
|
|
|
|
|
@ -116,7 +114,7 @@ class AccountCSVExport(orm.TransientModel): |
|
|
def action_manual_export_account(self, cr, uid, ids, context=None): |
|
|
def action_manual_export_account(self, cr, uid, ids, context=None): |
|
|
this = self.browse(cr, uid, ids)[0] |
|
|
this = self.browse(cr, uid, ids)[0] |
|
|
rows = self.get_data(cr, uid, ids, "account", context) |
|
|
rows = self.get_data(cr, uid, ids, "account", context) |
|
|
file_data = StringIO.StringIO() |
|
|
|
|
|
|
|
|
file_data = StringIO() |
|
|
try: |
|
|
try: |
|
|
writer = AccountUnicodeWriter(file_data) |
|
|
writer = AccountUnicodeWriter(file_data) |
|
|
writer.writerows(rows) |
|
|
writer.writerows(rows) |
|
@ -176,7 +174,7 @@ class AccountCSVExport(orm.TransientModel): |
|
|
def action_manual_export_analytic(self, cr, uid, ids, context=None): |
|
|
def action_manual_export_analytic(self, cr, uid, ids, context=None): |
|
|
this = self.browse(cr, uid, ids)[0] |
|
|
this = self.browse(cr, uid, ids)[0] |
|
|
rows = self.get_data(cr, uid, ids, "analytic", context) |
|
|
rows = self.get_data(cr, uid, ids, "analytic", context) |
|
|
file_data = StringIO.StringIO() |
|
|
|
|
|
|
|
|
file_data = StringIO() |
|
|
try: |
|
|
try: |
|
|
writer = AccountUnicodeWriter(file_data) |
|
|
writer = AccountUnicodeWriter(file_data) |
|
|
writer.writerows(rows) |
|
|
writer.writerows(rows) |
|
@ -243,7 +241,7 @@ class AccountCSVExport(orm.TransientModel): |
|
|
""" |
|
|
""" |
|
|
Here we use TemporaryFile to avoid full filling the OpenERP worker |
|
|
Here we use TemporaryFile to avoid full filling the OpenERP worker |
|
|
Memory |
|
|
Memory |
|
|
We also write the data to the wizard with SQL query as write seams |
|
|
|
|
|
|
|
|
We also write the data to the wizard with SQL query as write seems |
|
|
to use too much memory as well. |
|
|
to use too much memory as well. |
|
|
|
|
|
|
|
|
Those improvements permitted to improve the export from a 100k line to |
|
|
Those improvements permitted to improve the export from a 100k line to |