26
27
##############################################################################
28
29
from osv import fields, osv
31
32
class portal_portal(osv.osv):
32
_name = "portal.portal"
33
_description = "Portal"
35
'name': fields.char('Portal Name',size=64,required=True),
36
'group_id': fields.many2one('res.groups', 'Associated Group',required=True),
37
'menu_id': fields.many2one('ir.ui.menu','Main Menu', required=True),
38
'menu_action_id': fields.many2one('ir.actions.act_window', 'User Menu Action', readonly=True,
39
help='''Default main menu for the users of the portal. This field is auto-completed at creation. '''),
40
'home_action_id': fields.many2one('ir.actions.act_window', 'User Home Action', help='Complete this field to provide a Home menu different from the Main menu.'),
41
'company_id': fields.many2one('res.company', 'Company', required=True),
44
def create_action_menu(self,cr,uid,action_id,action_name,context):
46
Create default menu for the users of the portal.
48
menu_action_id = self.pool.get('ir.actions.act_window').create(cr,uid, {
49
'name': action_name+ ' main menu',
51
'type':'ir.actions.act_window',
52
'res_model': "ir.ui.menu",
53
'domain': "[('parent_id','=',"+str(action_id)+")]",
55
'view_id': self.pool.get('ir.model.data')._get_id(cr, uid, 'base', 'view_menu')
60
def create(self, cr, user, vals, context={}):
61
if not vals.get('menu_action_id') :
62
vals['menu_action_id']= self.create_action_menu(cr,user,vals['menu_id'], vals['name'],context)
63
return super(portal_portal, self).create(cr, user, vals, context)
65
def create_menu(self, cr, uid,portal_id, portal_model_id, menu_name, action_id,parent_menu_id=None,view_ids=None,view_type=False,context=None):
67
Create a menuitem for the given portal and model whith the given name and action.
70
assert portal_id and portal_model_id and menu_name and action_id, "Create_menu does not accept null values"
80
portal= self.pool.get('portal.portal').browse(cr,uid,portal_id)
81
model= self.pool.get('portal.model').browse(cr,uid,portal_model_id)
82
action= self.pool.get('ir.actions.act_window').browse(cr,uid,action_id)
84
menu_id=self.pool.get('ir.ui.menu').create(cr, uid, {
86
'parent_id': parent_menu_id or portal.menu_id.id,
91
for view in model.view_ids:
92
available_view[view.type]= view.id
96
for view in self.pool.get('ir.actions.act_window').browse(cr,uid,action_id).views:
99
'view_id': available_view.get(view[1], view[0]),
100
'view_mode': view[1],
104
(unused1, unused2, cur_first_view) = vids[0]
106
if view_ids['form'] != False:
107
if view_ids['tree'] != False:
110
'view_id': view_ids[v[0]],
115
'view_id': view_ids[v[1]],
119
if view_type & (cur_first_view['view_mode']=='tree'):
126
'view_id': view_ids['form'],
132
'view_id': view_ids['form'],
136
if view_ids['tree'] != False:
137
if view_type & (cur_first_view['view_mode']=='tree'):
144
'view_id': view_ids['tree'],
150
'view_id': view_ids['tree'],
154
if view_type & (cur_first_view['view_mode']=='tree'):
159
## Duplicate the action and give the fetched views to the new one:
160
action_id = action.copy(cr,uid, action.id,{
166
## Create the values:
167
value_id = self.pool.get('ir.values').create(cr, uid, {
168
'name': 'AutoGenerated by portal module',
169
'key2': 'tree_but_open',
170
'model': 'ir.ui.menu',
172
'value': 'ir.actions.act_window,%d'%action_id,
175
## add the rule_group to the user
176
if model.rule_group_id:
177
portal.group_id.write(cr,uid,[portal.group_id.id],{'rule_groups': [(4,model.rule_group_id.id)]})
33
_name = "portal.portal"
34
_description = "Portal"
36
'name': fields.char('Portal Name',size=64,required=True),
37
'group_id': fields.many2one('res.groups', 'Associated Group',required=True),
38
'menu_id': fields.many2one('ir.ui.menu','Main Menu', required=True),
39
'menu_action_id': fields.many2one('ir.actions.act_window', 'User Menu Action', readonly=True,
40
help='''Default main menu for the users of the portal. This field is auto-completed at creation. '''),
41
'home_action_id': fields.many2one('ir.actions.act_window', 'User Home Action', help='Complete this field to provide a Home menu different from the Main menu.'),
42
'company_id': fields.many2one('res.company', 'Company', required=True),
45
def create_action_menu(self,cr,uid,action_id,action_name,context):
47
Create default menu for the users of the portal.
49
menu_action_id = self.pool.get('ir.actions.act_window').create(cr,uid, {
50
'name': action_name+ ' main menu',
52
'type':'ir.actions.act_window',
53
'res_model': "ir.ui.menu",
54
'domain': "[('parent_id','=',"+str(action_id)+")]",
56
'view_id': self.pool.get('ir.model.data')._get_id(cr, uid, 'base', 'view_menu')
61
def create(self, cr, user, vals, context={}):
62
if not vals.get('menu_action_id') :
63
vals['menu_action_id']= self.create_action_menu(cr,user,vals['menu_id'], vals['name'],context)
64
return super(portal_portal, self).create(cr, user, vals, context)
66
def create_menu(self, cr, uid,portal_id, portal_model_id, menu_name, action_id,parent_menu_id=None,view_ids=None,view_type=False,context=None):
68
Create a menuitem for the given portal and model whith the given name and action.
71
assert portal_id and portal_model_id and menu_name and action_id, "Create_menu does not accept null values"
81
portal= self.pool.get('portal.portal').browse(cr,uid,portal_id)
82
model= self.pool.get('portal.model').browse(cr,uid,portal_model_id)
83
action_obj= self.pool.get('ir.actions.act_window')
84
action= action_obj.browse(cr,uid,action_id)
86
menu_id=self.pool.get('ir.ui.menu').create(cr, uid, {
88
'parent_id': parent_menu_id or portal.menu_id.id,
93
for view in model.view_ids:
94
available_view[view.type]= view.id
98
for view in action_obj.browse(cr,uid,action_id,context=context).views:
101
'view_id': available_view.get(view[1], view[0]),
102
'view_mode': view[1],
106
(unused1, unused2, cur_first_view) = vids[0]
108
if view_ids['form'] != False:
109
if view_ids['tree'] != False:
112
'view_id': view_ids[v[0]],
117
'view_id': view_ids[v[1]],
121
if view_type & (cur_first_view['view_mode']=='tree'):
128
'view_id': view_ids['form'],
134
'view_id': view_ids['form'],
138
if view_ids['tree'] != False:
139
if view_type & (cur_first_view['view_mode']=='tree'):
146
'view_id': view_ids['tree'],
152
'view_id': view_ids['tree'],
156
if view_type & (cur_first_view['view_mode']=='tree'):
161
## Duplicate the action and give the fetched views to the new one:
162
action_id = action_obj.copy(cr,uid, action.id,{
168
## Create the values:
169
value_id = self.pool.get('ir.values').create(cr, uid, {
170
'name': 'AutoGenerated by portal module',
171
'key2': 'tree_but_open',
172
'model': 'ir.ui.menu',
174
'value': 'ir.actions.act_window,%d'%action_id,
177
## add the rule_group to the user
178
if model.rule_group_id:
179
portal.group_id.write(cr,uid,[portal.group_id.id],{'rule_groups': [(4,model.rule_group_id.id)]})
183
185
class portal_model(osv.osv):
184
_name = "portal.model"
185
_description = "Portal Model"
187
'name': fields.char('Name',size=64,),
188
'model_id': fields.many2one('ir.model','Model',required=True),
189
'view_ids': fields.many2many('ir.ui.view','portal_model_view_rel','model_id','view_id','Views'),
190
'rule_group_id': fields.many2one('ir.rule.group','Rule group'),
186
_name = "portal.model"
187
_description = "Portal Model"
189
'name': fields.char('Name',size=64,),
190
'model_id': fields.many2one('ir.model','Model',required=True),
191
'view_ids': fields.many2many('ir.ui.view','portal_model_view_rel','model_id','view_id','Views'),
192
'rule_group_id': fields.many2one('ir.rule.group','Rule group'),
194
196
class ir_actions_act_report_xml(osv.osv):
195
_inherit="ir.actions.report.xml"
197
"portal_visible": fields.boolean('Visible in Portal')
200
'portal_visible': lambda *a: True,
197
_inherit="ir.actions.report.xml"
199
"portal_visible": fields.boolean('Visible in Portal')
202
'portal_visible': lambda *a: True,
202
204
ir_actions_act_report_xml()
204
206
class ir_actions_act_report_custom(osv.osv):
205
_inherit="ir.actions.report.custom"
207
"portal_visible": fields.boolean('Visible in Portal')
210
'portal_visible': lambda *a: True,
207
_inherit="ir.actions.report.custom"
209
"portal_visible": fields.boolean('Visible in Portal')
212
'portal_visible': lambda *a: True,
212
214
ir_actions_act_report_custom()
214
216
class ir_actions_act_wizard(osv.osv):
215
_inherit="ir.actions.wizard"
217
"portal_visible": fields.boolean('Visible in Portal')
220
'portal_visible': lambda *a: True,
217
_inherit="ir.actions.wizard"
219
"portal_visible": fields.boolean('Visible in Portal')
222
'portal_visible': lambda *a: True,
222
224
ir_actions_act_wizard()
224
226
class ir_actions_act_window(osv.osv):
225
_inherit="ir.actions.act_window"
227
"portal_visible": fields.boolean('Visible in Portal')
230
'portal_visible': lambda *a: True,
227
_inherit="ir.actions.act_window"
229
"portal_visible": fields.boolean('Visible in Portal')
232
'portal_visible': lambda *a: True,
232
234
ir_actions_act_window()
236
class portal_config_install_modules_wizard(osv.osv_memory):
237
_name='portal.config.install_modules_wizard'
239
'portal_sale':fields.boolean('Portal for Sale Module'),
240
'portal_service':fields.boolean('Portal for Service Module'),
241
'portal_account':fields.boolean('Portal for Account Module'),
242
'portal_analytic':fields.boolean('Portal for Analytic Account Module'),
244
def action_cancel(self,cr,uid,ids,conect=None):
248
'res_model': 'ir.module.module.configuration.wizard',
249
'type': 'ir.actions.act_window',
252
def action_install(self, cr, uid, ids, context=None):
253
result=self.read(cr,uid,ids)
254
mod_obj = self.pool.get('ir.module.module')
257
if r<>'id' and res[r]:
258
ids = mod_obj.search(cr, uid, [('name', '=', r)])
259
mod_obj.action_install(cr, uid, ids, context=context)
261
db, pool = pooler.restart_pool(cr.dbname,force_demo=True, update_module=True)
265
'res_model': 'ir.module.module.configuration.wizard',
266
'type': 'ir.actions.act_window',
269
portal_config_install_modules_wizard()
271
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: