[IMP] base_report_creator
bzr revid: hmo@tinyerp.com-20100708062609-o4g2rsn46w3jfj0x
This commit is contained in:
committed by
Harry (OpenERP)
parent
72d4edc4c4
commit
ae36086b0f
@@ -38,7 +38,6 @@ the "Dashboard" menu.
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'wizard/report_menu_create_view.xml',
|
||||
'wizard/report_open_view.xml',
|
||||
'base_report_creator_wizard.xml',
|
||||
'base_report_creator_view.xml'
|
||||
],
|
||||
|
||||
@@ -98,7 +98,7 @@ class report_creator(osv.osv):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
data = context and context.get('report_id', False) or False
|
||||
data = context and context.get('report_id', False) or False
|
||||
if (not context) or 'report_id' not in context:
|
||||
return super(report_creator, self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
|
||||
report = self.browse(cr, user, data)
|
||||
@@ -114,7 +114,7 @@ class report_creator(osv.osv):
|
||||
else:
|
||||
fields['column_count'] = {'readonly': True, 'type': 'integer', 'string': 'Count', 'size': 64, 'name': 'column_count'}
|
||||
|
||||
arch = '<?xml version="1.0" encoding="utf-8"?>\n'
|
||||
arch = '<?xml version="1.0"?>'
|
||||
if view_type == 'graph':
|
||||
orientation_eval = {'horz':'horizontal','vert' :'vertical'}
|
||||
orientation = eval(report.view_graph_orientation,orientation_eval)
|
||||
@@ -163,14 +163,14 @@ class report_creator(osv.osv):
|
||||
arch += '''>'''
|
||||
arch += ''.join(temp_list)
|
||||
else:
|
||||
arch += '<%s string="%s">\n' % (view_type, report.name)
|
||||
arch += '<%s string="%s">' % (view_type, report.name)
|
||||
i = 0
|
||||
for f in report.field_ids:
|
||||
if f.field_id.model:
|
||||
arch += '<field name="%s" select="1"/>' % ('field' + str(i),)
|
||||
arch += '<field name="%s"/>' % ('field' + str(i),)
|
||||
i += 1
|
||||
else:
|
||||
arch += '<field name="%s" select="1"/>' % ('column_count',)
|
||||
arch += '<field name="%s"/>' % ('column_count',)
|
||||
arch += '</%s>' % (view_type,)
|
||||
result = {
|
||||
'arch': arch,
|
||||
@@ -181,7 +181,6 @@ class report_creator(osv.osv):
|
||||
'action': [],
|
||||
'relate': []
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
def read(self, cr, user, ids, fields = None, context = None, load = '_classic_read'):
|
||||
@@ -406,55 +405,85 @@ class report_creator(osv.osv):
|
||||
return result
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Report Name', size=64, required=True),
|
||||
'name': fields.char('Report Name', size=64, required=True),
|
||||
'type': fields.selection([('list', 'Rows And Columns Report'), ], 'Report Type', required=True), #('sum','Summation Report')
|
||||
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the report without removing it."),
|
||||
'view_type1': fields.selection([('form', 'Form'),
|
||||
('tree', 'Tree'),
|
||||
('graph', 'Graph'),
|
||||
('calendar', 'Calendar')], 'First View', required=True),
|
||||
'view_type2': fields.selection([('', '/'),
|
||||
('form', 'Form'),
|
||||
('tree', 'Tree'),
|
||||
('graph', 'Graph'),
|
||||
('calendar', 'Calendar')], 'Second View'),
|
||||
'view_type3': fields.selection([('', '/'),
|
||||
('form', 'Form'),
|
||||
('tree', 'Tree'),
|
||||
('graph', 'Graph'),
|
||||
('calendar', 'Calendar')], 'Third View'),
|
||||
'view_graph_type': fields.selection([('pie', 'Pie Chart'),
|
||||
('bar', 'Bar Chart')], 'Graph Type', required=True),
|
||||
'view_graph_orientation': fields.selection([('horz', 'Horizontal'),
|
||||
('vert', 'Vertical')], 'Graph Orientation', required=True),
|
||||
'model_ids': fields.many2many('ir.model', 'base_report_creator_report_model_rel', 'report_id', 'model_id', 'Reported Objects'),
|
||||
'field_ids': fields.one2many('base_report_creator.report.fields', 'report_id', 'Fields to Display'),
|
||||
'filter_ids': fields.one2many('base_report_creator.report.filter', 'report_id', 'Filters'),
|
||||
'state': fields.selection([
|
||||
('draft', 'Draft'),
|
||||
('valid', 'Valid')],
|
||||
'State', required=True,
|
||||
help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed custom report. \
|
||||
\n* The \'Valid\' state is used when user validates the custom report.'),
|
||||
'sql_query': fields.function(_sql_query_get, method=True, type="text", string='SQL Query', store=True),
|
||||
'group_ids': fields.many2many('res.groups', 'base_report_creator_group_rel', 'report_id', 'group_id', 'Authorized Groups'),
|
||||
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the report without removing it."),
|
||||
'view_type1': fields.selection([('form', 'Form'),
|
||||
('tree', 'Tree'),
|
||||
('graph', 'Graph'),
|
||||
('calendar', 'Calendar')], 'First View', required=True),
|
||||
'view_type2': fields.selection([('', '/'),
|
||||
('form', 'Form'),
|
||||
('tree', 'Tree'),
|
||||
('graph', 'Graph'),
|
||||
('calendar', 'Calendar')], 'Second View'),
|
||||
'view_type3': fields.selection([('', '/'),
|
||||
('form', 'Form'),
|
||||
('tree', 'Tree'),
|
||||
('graph', 'Graph'),
|
||||
('calendar', 'Calendar')], 'Third View'),
|
||||
'view_graph_type': fields.selection([('pie', 'Pie Chart'),
|
||||
('bar', 'Bar Chart')], 'Graph Type', required=True),
|
||||
'view_graph_orientation': fields.selection([('horz', 'Horizontal'),
|
||||
('vert', 'Vertical')], 'Graph Orientation', required=True),
|
||||
'model_ids': fields.many2many('ir.model', 'base_report_creator_report_model_rel', 'report_id', 'model_id', 'Reported Objects'),
|
||||
'field_ids': fields.one2many('base_report_creator.report.fields', 'report_id', 'Fields to Display'),
|
||||
'filter_ids': fields.one2many('base_report_creator.report.filter', 'report_id', 'Filters'),
|
||||
'sql_query': fields.function(_sql_query_get, method=True, type="text", string='SQL Query', store=True),
|
||||
'group_ids': fields.many2many('res.groups', 'base_report_creator_group_rel', 'report_id', 'group_id', 'Authorized Groups'),
|
||||
'menu_id': fields.many2one('ir.ui.menu', "Menu", readonly=True),
|
||||
}
|
||||
_defaults = {
|
||||
'type': lambda *args: 'list',
|
||||
'state': lambda *args: 'draft',
|
||||
'active': lambda *args: True,
|
||||
'view_type1': lambda *args: 'tree',
|
||||
'view_type2': lambda *args: 'graph',
|
||||
'view_graph_type': lambda *args: 'bar',
|
||||
'view_graph_orientation': lambda *args: 'horz',
|
||||
'type': lambda *args: 'list',
|
||||
'active': lambda *args: True,
|
||||
'view_type1': lambda *args: 'tree',
|
||||
'view_type2': lambda *args: 'graph',
|
||||
'view_graph_type': lambda *args: 'bar',
|
||||
'view_graph_orientation': lambda *args: 'horz',
|
||||
}
|
||||
|
||||
def open_report(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
This Function opens base creator report view
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of report open's IDs
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return : Dictionary value for base creator report form
|
||||
"""
|
||||
if not context:
|
||||
context = {}
|
||||
|
||||
rep = self.browse(cr, uid, ids, context=context)
|
||||
if not rep:
|
||||
return False
|
||||
|
||||
rep = rep[0]
|
||||
view_mode = rep.view_type1
|
||||
if rep.view_type2:
|
||||
view_mode += ',' + rep.view_type2
|
||||
if rep.view_type3:
|
||||
view_mode += ',' + rep.view_type3
|
||||
value = {
|
||||
'name': rep.name,
|
||||
'view_type': 'form',
|
||||
'view_mode': view_mode,
|
||||
'res_model': 'base_report_creator.report',
|
||||
'type': 'ir.actions.act_window',
|
||||
'context': "{'report_id':%d}" % (rep.id,),
|
||||
'nodestroy': True,
|
||||
}
|
||||
|
||||
return value
|
||||
|
||||
def _function_field(self, cr, uid, ids):
|
||||
"""
|
||||
constraints function which specify that
|
||||
constraints function which specify that
|
||||
not display field which are not stored in Database.
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Report creator's id.
|
||||
@param ids: List of Report creator's id.
|
||||
@return: True if display field which are stored in database.
|
||||
or false if display field which are not store in dtabase.
|
||||
"""
|
||||
@@ -514,10 +543,11 @@ class report_creator(osv.osv):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
_constraints = [
|
||||
(_function_field, 'You can not display field which are not stored in Database.', ['field_ids']),
|
||||
(_aggregation_error, 'You can apply aggregate function to the non calculated field.', ['field_ids']),
|
||||
(_calander_view_error, "You must have to give calendar view's color,start date and delay.", ['field_ids']),
|
||||
(_function_field, 'You can not display field which are not stored in Database.', ['field_ids']),
|
||||
(_aggregation_error, 'You can apply aggregate function to the non calculated field.', ['field_ids']),
|
||||
(_calander_view_error, "You must have to give calendar view's color,start date and delay.", ['field_ids']),
|
||||
]
|
||||
report_creator()
|
||||
|
||||
@@ -531,25 +561,25 @@ class report_creator_field(osv.osv):
|
||||
_rec_name = 'field_id'
|
||||
_order = "sequence,id"
|
||||
_columns = {
|
||||
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of fields."),
|
||||
'field_id': fields.many2one('ir.model.fields', 'Field'),
|
||||
'report_id': fields.many2one('base_report_creator.report', 'Report', on_delete='cascade'),
|
||||
'group_method': fields.selection([('group', 'Grouped'),
|
||||
('sum', 'Sum'),
|
||||
('min', 'Minimum'),
|
||||
('count', 'Count'),
|
||||
('max', 'Maximum'),
|
||||
('avg', 'Average')], 'Grouping Method', required=True),
|
||||
'graph_mode': fields.selection([('', '/'),
|
||||
('x', 'X Axis'),
|
||||
('y', 'Y Axis')], 'Graph Mode'),
|
||||
'calendar_mode': fields.selection([('', '/'),
|
||||
('date_start', 'Starting Date'),
|
||||
('date_end', 'Ending Date'), ('date_delay', 'Delay'), ('date_stop', 'End Date'), ('color', 'Unique Colors')], 'Calendar Mode'),
|
||||
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of fields."),
|
||||
'field_id': fields.many2one('ir.model.fields', 'Field'),
|
||||
'report_id': fields.many2one('base_report_creator.report', 'Report', on_delete='cascade'),
|
||||
'group_method': fields.selection([('group', 'Grouped'),
|
||||
('sum', 'Sum'),
|
||||
('min', 'Minimum'),
|
||||
('count', 'Count'),
|
||||
('max', 'Maximum'),
|
||||
('avg', 'Average')], 'Grouping Method', required=True),
|
||||
'graph_mode': fields.selection([('', '/'),
|
||||
('x', 'X Axis'),
|
||||
('y', 'Y Axis')], 'Graph Mode'),
|
||||
'calendar_mode': fields.selection([('', '/'),
|
||||
('date_start', 'Starting Date'),
|
||||
('date_end', 'Ending Date'), ('date_delay', 'Delay'), ('date_stop', 'End Date'), ('color', 'Unique Colors')], 'Calendar Mode'),
|
||||
}
|
||||
_defaults = {
|
||||
'group_method': lambda *args: 'group',
|
||||
'graph_mode': lambda *args: '',
|
||||
'group_method': lambda *args: 'group',
|
||||
'graph_mode': lambda *args: '',
|
||||
}
|
||||
report_creator_field()
|
||||
|
||||
@@ -561,14 +591,14 @@ class report_creator_filter(osv.osv):
|
||||
_name = "base_report_creator.report.filter"
|
||||
_description = "Report Filters"
|
||||
_columns = {
|
||||
'name': fields.char('Filter Name', size=64, required=True),
|
||||
'expression': fields.text('Value', required=True, help='Provide an expression for the field based on which you want to filter the records.\n e.g. res_partner.id=3'),
|
||||
'report_id': fields.many2one('base_report_creator.report', 'Report', on_delete='cascade'),
|
||||
'condition': fields.selection([('and', 'AND'),
|
||||
'name': fields.char('Filter Name', size=64, required=True),
|
||||
'expression': fields.text('Value', required=True, help='Provide an expression for the field based on which you want to filter the records.\n e.g. res_partner.id=3'),
|
||||
'report_id': fields.many2one('base_report_creator.report', 'Report', on_delete='cascade'),
|
||||
'condition': fields.selection([('and', 'AND'),
|
||||
('or', 'OR')], 'Condition')
|
||||
}
|
||||
_defaults = {
|
||||
'condition': lambda *args: 'and',
|
||||
'condition': lambda *args: 'and',
|
||||
}
|
||||
report_creator_filter()
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
<field eval=""tree"" name="view_type1"/>
|
||||
<field eval=""list"" name="type"/>
|
||||
<field eval=""horz"" name="view_graph_orientation"/>
|
||||
<field eval=""valid"" name="state"/>
|
||||
</record>
|
||||
<record id="base_report_creator_report_fields_0" model="base_report_creator.report.fields">
|
||||
<field name="report_id" ref="base_report_creator_report_salesanalysis0"/>
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
<tree string="Report Creator">
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -42,12 +41,21 @@
|
||||
<notebook colspan="4">
|
||||
<page string="General Configuration">
|
||||
<field name="model_ids" colspan="4"
|
||||
context="{'model_ids':model_ids}" />
|
||||
<separator string="State" colspan="4"/>
|
||||
<field name="state"/>
|
||||
<button string="Create Menu"
|
||||
name="%(action_report_menu_create)d" type="action"
|
||||
colspan="2" icon="gtk-justify-fill" />
|
||||
context="{'model_ids':model_ids}" nolabel="1" />
|
||||
<separator string="" colspan="4"/>
|
||||
<group colspan="4" col="4">
|
||||
<group colspan="2">
|
||||
<field name="menu_id"/>
|
||||
</group>
|
||||
<group colspan="2">
|
||||
<button string="Create Menu"
|
||||
name="%(action_report_menu_create)d" type="action"
|
||||
icon="gtk-justify-fill" attrs="{'invisible':[('menu_id','!=',False)]}"/>
|
||||
<button string="Open Report"
|
||||
name="open_report" type="object"
|
||||
icon="gtk-open" />
|
||||
</group>
|
||||
</group>
|
||||
</page><page string="View parameters">
|
||||
<separator string="Used View" colspan="4"/>
|
||||
<field name="view_type1"/>
|
||||
@@ -112,6 +120,22 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_report_filter" model="ir.ui.view">
|
||||
<field name="name">Report Name</field>
|
||||
<field name="model">base_report_creator.report</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Report">
|
||||
<field name="name"></field>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Report Name" icon="terp-personal" domain="[]"
|
||||
context="{'group_by':'name'}" />
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Action for Report creator form -->
|
||||
|
||||
<record model="ir.actions.act_window" id="base_report_creator_action">
|
||||
@@ -119,6 +143,7 @@
|
||||
<field name="res_model">base_report_creator.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="view_report_filter"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
@@ -152,11 +177,5 @@
|
||||
id="menu_base_report_creator_action"
|
||||
action="base_report_creator_action_tree"/>
|
||||
|
||||
<act_window id="action_report_open"
|
||||
key2="client_action_multi" name="Open Report"
|
||||
res_model="report.open" src_model="base_report_creator.report"
|
||||
view_mode="form" target="new" view_type="form" />
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -3,6 +3,5 @@
|
||||
<data>
|
||||
<wizard id="wizard_set_filter_fields" string="Set Filter Fields"
|
||||
name="base_report_creator.report_filter.fields" />
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -21,6 +21,5 @@
|
||||
|
||||
import wiz_set_filter_fields
|
||||
import report_menu_create
|
||||
import report_open
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
import wizard
|
||||
import netsvc
|
||||
import time
|
||||
import pooler
|
||||
from osv import osv
|
||||
from tools.translate import _
|
||||
|
||||
|
||||
|
||||
class report_creator_open(wizard.interface):
|
||||
def _open_report(self, cr, uid, data, context):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
if context.get('report_id',False):
|
||||
raise wizard.except_wizard(_('UserError'),_('No Wizards available for this object!'))
|
||||
rep = pool.get('base_report_creator.report').browse(cr, uid, data['id'], context)
|
||||
view_mode = rep.view_type1
|
||||
if rep.view_type2:
|
||||
view_mode += ','+rep.view_type2
|
||||
if rep.view_type3:
|
||||
view_mode += ','+rep.view_type3
|
||||
value = {
|
||||
'name': rep.name,
|
||||
'view_type': 'form',
|
||||
'view_mode': view_mode,
|
||||
'res_model': 'base_report_creator.report',
|
||||
'context': {'report_id': data['id']},
|
||||
'view_id': False,
|
||||
'type': 'ir.actions.act_window'
|
||||
}
|
||||
return value
|
||||
|
||||
states = {
|
||||
'init' : {
|
||||
'actions' : [],
|
||||
'result' : {'type':'action', 'action':_open_report, 'state':'end'}
|
||||
}
|
||||
}
|
||||
report_creator_open('base_report_creator.report.open')
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -43,31 +43,41 @@ class report_menu_create(osv.osv_memory):
|
||||
if not context:
|
||||
context = {}
|
||||
context_id = context and context.get('active_id', False) or False
|
||||
obj_menu = self.pool.get('ir.ui.menu')
|
||||
data_obj = self.pool.get('ir.model.data')
|
||||
obj_board = self.pool.get('base_report_creator.report')
|
||||
if context_id:
|
||||
board = self.pool.get('base_report_creator.report').browse(cr, uid, context_id)
|
||||
data = self.browse(cr, uid, ids, context=context)
|
||||
if not data:
|
||||
return {}
|
||||
data = data[0]
|
||||
|
||||
board = obj_board.browse(cr, uid, context_id)
|
||||
view = board.view_type1
|
||||
if board.view_type2:
|
||||
view += ',' + board.view_type2
|
||||
if board.view_type3:
|
||||
view += ',' + board.view_type3
|
||||
|
||||
result = data_obj._get_id(cr, uid, 'base_report_creator', 'view_report_filter')
|
||||
res = data_obj.read(cr, uid, result, ['res_id'])
|
||||
action_id = self.pool.get('ir.actions.act_window').create(cr, uid, {
|
||||
'name': board.name,
|
||||
'view_type':'form',
|
||||
'view_mode':view,
|
||||
'context': "{'report_id':%d}" % (board.id,),
|
||||
'res_model': 'base_report_creator.report'
|
||||
})
|
||||
obj_menu = self.pool.get('ir.ui.menu')
|
||||
#start Loop
|
||||
for data in self.read(cr, uid, ids):
|
||||
obj_menu.create(cr, uid, {
|
||||
'name': data.get('menu_name'),
|
||||
'parent_id': data.get('menu_parent_id'),
|
||||
'res_model': 'base_report_creator.report',
|
||||
'search_view_id': res['res_id']
|
||||
})
|
||||
|
||||
menu_id = obj_menu.create(cr, uid, {
|
||||
'name': data.menu_name,
|
||||
'parent_id': data.menu_parent_id.id,
|
||||
'icon': 'STOCK_SELECT_COLOR',
|
||||
'action': 'ir.actions.act_window, ' + str(action_id)
|
||||
}, context=context)
|
||||
return {}
|
||||
#End Loop
|
||||
obj_board.write(cr, uid, context_id, {'menu_id': menu_id})
|
||||
return {}
|
||||
report_menu_create()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
|
||||
class report_open(osv.osv_memory):
|
||||
"""
|
||||
Open report
|
||||
"""
|
||||
_name = "report.open"
|
||||
_description = __doc__
|
||||
|
||||
def open_report(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
This Function opens base creator report view
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of report open's IDs
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return : Dictionary value for base creator report form
|
||||
"""
|
||||
|
||||
if not context:
|
||||
context = {}
|
||||
|
||||
context_id = context and context.get('active_id', False) or False
|
||||
|
||||
if context.get('report_id', False):
|
||||
raise osv.except_osv(_('UserError'), _('No Wizards available for this object!'))
|
||||
|
||||
rep = self.pool.get('base_report_creator.report').browse(cr, uid, context_id, context)
|
||||
view_mode = rep.view_type1
|
||||
|
||||
if rep.view_type2:
|
||||
view_mode += ',' + rep.view_type2
|
||||
if rep.view_type3:
|
||||
view_mode += ',' + rep.view_type3
|
||||
value = {
|
||||
'name': rep.name,
|
||||
'view_type': 'form',
|
||||
'view_mode': view_mode,
|
||||
'res_model': 'base_report_creator.report',
|
||||
'context': {'report_id': context_id},
|
||||
'view_id': False,
|
||||
'type': 'ir.actions.act_window'
|
||||
}
|
||||
|
||||
return value
|
||||
|
||||
report_open()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
@@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!-- Report Open wizard -->
|
||||
|
||||
<record id="view_report_open" model="ir.ui.view">
|
||||
<field name="name">report.open.form</field>
|
||||
<field name="model">report.open</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Report open">
|
||||
<separator string="" colspan="4" />
|
||||
<group colspan="4" col="6">
|
||||
<button icon="gtk-cancel" special="cancel"
|
||||
string="Cancel" />
|
||||
<button icon="gtk-open" string="Open Report"
|
||||
name="open_report" type="object" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_report_open" model="ir.actions.act_window">
|
||||
<field name="name">Open Report</field>
|
||||
<field name="res_model">report.open</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="view_report_open"/>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
Reference in New Issue
Block a user