diff --git a/base_report_assembler/assembled_report.py b/base_report_assembler/assembled_report.py index f2fe0ca4..d59c95c8 100644 --- a/base_report_assembler/assembled_report.py +++ b/base_report_assembler/assembled_report.py @@ -20,15 +20,17 @@ ############################################################################## from openerp.osv import orm, fields + class AssembledReport(orm.Model): _name = 'assembled.report' _order = 'sequence' _columns = { - 'report_id': fields.many2one('ir.actions.report.xml', 'Report', + 'report_id': fields.many2one( + 'ir.actions.report.xml', 'Report', domain="[('model', '=', model)," - "('report_type', '!=', 'assemblage')]", required=True), + "('report_type', '!=', 'assemblage')]", required=True), 'model': fields.char('Object model'), 'sequence': fields.integer('Sequence', required=True), 'company_id': fields.many2one('res.company', 'Company', required=True), @@ -36,5 +38,5 @@ class AssembledReport(orm.Model): _defaults = { 'sequence': 1, - 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'assembled.report', context=c) + 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'assembled.report', context=c) } diff --git a/base_report_assembler/ir_report.py b/base_report_assembler/ir_report.py index ab2e7c96..494d5485 100644 --- a/base_report_assembler/ir_report.py +++ b/base_report_assembler/ir_report.py @@ -18,12 +18,12 @@ # along with this program. If not, see . # ############################################################################## - from openerp.osv import orm from openerp import netsvc from openerp.report.report_sxw import rml_parse from report_assembler import PDFReportAssembler + def register_report(name, model, parser=rml_parse): """Register the report into the services""" name = 'report.%s' % name @@ -46,7 +46,7 @@ class ReportAssembleXML(orm.Model): def __init__(self, pool, cr): super(ReportAssembleXML, self).__init__(pool, cr) - def register_all(self,cursor): + def register_all(self, cursor): value = super(ReportAssembleXML, self).register_all(cursor) cursor.execute("SELECT * FROM ir_act_report_xml WHERE report_type = 'assemblage'") records = cursor.dictfetchall() @@ -69,42 +69,40 @@ class ReportAssembleXML(orm.Model): # report will fail so it's ok. res = super(ReportAssembleXML, self).unlink( - cursor, - user, - ids, - context - ) + cursor, + user, + ids, + context) return res def create(self, cursor, user, vals, context=None): "Create report and register it" res = super(ReportAssembleXML, self).create(cursor, user, vals, context) - if vals.get('report_type','') == 'assemblage': + if vals.get('report_type', '') == 'assemblage': # I really look forward to virtual functions :S register_report( - vals['report_name'], - vals['model'], - ) + vals['report_name'], + vals['model']) return res def write(self, cr, uid, ids, vals, context=None): "Edit report and manage its registration" if isinstance(ids, (int, long)): - ids = [ids,] + ids = [ids] for rep in self.browse(cr, uid, ids, context=context): if rep.report_type != 'assemblage': continue - if vals.get('report_name', False) and \ - vals['report_name'] != rep.report_name: + if (vals.get('report_name', False) + and vals['report_name'] != rep.report_name): report_name = vals['report_name'] else: report_name = rep.report_name register_report( - report_name, - vals.get('model', rep.model), - False - ) + report_name, + vals.get('model', rep.model), + False + ) res = super(ReportAssembleXML, self).write(cr, uid, ids, vals, context) return res diff --git a/base_report_assembler/report_assembler.py b/base_report_assembler/report_assembler.py index cfd953c7..cab264ad 100644 --- a/base_report_assembler/report_assembler.py +++ b/base_report_assembler/report_assembler.py @@ -25,10 +25,11 @@ from StringIO import StringIO from openerp.netsvc import ExportService from openerp.report import report_sxw -from openerp import pooler, sql_db +from openerp import pooler _POLLING_DELAY = 0.25 + def assemble_pdf(pdf_list): """ Assemble a list of pdf @@ -53,6 +54,7 @@ def assemble_pdf(pdf_list): output.write(s) return s.getvalue() + class PDFReportAssembler(report_sxw.report_sxw): """ PDFReportAssembler allows to put 2 invoice reports in one single pdf""" @@ -61,7 +63,6 @@ class PDFReportAssembler(report_sxw.report_sxw): Return a list of pdf encoded in base64 """ pool = pooler.get_pool(cr.dbname) - db = sql_db.db_connect(cr.dbname) report_obj = pool.get('ir.actions.report.xml') spool = ExportService._services['report'] @@ -70,7 +71,8 @@ class PDFReportAssembler(report_sxw.report_sxw): report_list = report_obj.browse(cr, uid, report_ids, context=context) for report in report_list: - report_key = spool.exp_report(cr.dbname, uid, report.report_name, ids, datas=data, context=context) + report_key = spool.exp_report(cr.dbname, uid, report.report_name, + ids, datas=data, context=context) while 1: res = spool.exp_report_get(cr.dbname, uid, report_key) if res.get('state'): @@ -116,7 +118,7 @@ class PDFReportAssembler(report_sxw.report_sxw): report_xml.report_sxw = None else: return super(PDFReportAssembler, self).create(cr, uid, ids, data, context) - if report_xml.report_type != 'assemblage' : + if report_xml.report_type != 'assemblage': return super(PDFReportAssembler, self).create(cr, uid, ids, data, context) result = self.create_source_pdf(cr, uid, ids, data, report_xml, context) if not result: