remove portal name, and use the group name instead
bzr revid: rco@openerp.com-20110404113036-rqa2bv4c1pz2rt6r
This commit is contained in:
parent
cb2137c5da
commit
b1dfe50e3f
|
@ -21,13 +21,12 @@
|
|||
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
import random
|
||||
|
||||
class portal(osv.osv):
|
||||
_name = 'res.portal'
|
||||
_description = 'Portal'
|
||||
_rec_name = 'group_id'
|
||||
_columns = {
|
||||
'name': fields.char(string='Name', size=64, required=True),
|
||||
'group_id': fields.many2one('res.groups', required=True,
|
||||
string='Portal Group',
|
||||
help=_('This group defines the users associated to this portal')),
|
||||
|
@ -42,20 +41,17 @@ class portal(osv.osv):
|
|||
help=_('The menu action opens the submenus of this menu item')),
|
||||
}
|
||||
_sql_constraints = [
|
||||
('unique_name', 'UNIQUE(name)', _('Portals must have different names.'))
|
||||
('unique_group', 'UNIQUE(group_id)', _('Portals must have distinct groups.'))
|
||||
]
|
||||
|
||||
def copy(self, cr, uid, id, defaults, context=None):
|
||||
""" override copy(): pick a different name and menu_action_id """
|
||||
# find an unused name of the form "name [N]" for some random N
|
||||
old_name = self.browse(cr, uid, id, context).name
|
||||
new_name = copy_random(old_name)
|
||||
while self.search(cr, uid, [('name', '=', new_name)], limit=1, context=context):
|
||||
new_name = copy_random(old_name)
|
||||
|
||||
defaults['name'] = new_name
|
||||
defaults['menu_action_id'] = None
|
||||
return super(portal, self).copy(cr, uid, id, defaults, context)
|
||||
def copy(self, cr, uid, id, default={}, context=None):
|
||||
""" override copy(): group_id and menu_action_id must be different """
|
||||
# copy the former group_id
|
||||
groups_obj = self.pool.get('res.groups')
|
||||
group_id = self.browse(cr, uid, id, context).group_id.id
|
||||
default['group_id'] = groups_obj.copy(cr, uid, group_id, {}, context)
|
||||
default['menu_action_id'] = None
|
||||
return super(portal, self).copy(cr, uid, id, default, context)
|
||||
|
||||
def create(self, cr, uid, values, context=None):
|
||||
""" extend create() to assign the portal group and menu to users """
|
||||
|
@ -63,11 +59,12 @@ class portal(osv.osv):
|
|||
assert not values.get('menu_action_id')
|
||||
values['menu_action_id'] = self._create_menu_action(cr, uid, values, context)
|
||||
|
||||
# set menu action of users
|
||||
user_values = {'menu_id': values['menu_action_id']}
|
||||
# values['user_ids'] should match [(6, 0, IDs)]
|
||||
for id in get_many2many(values['user_ids']):
|
||||
values['user_ids'].append((1, id, user_values))
|
||||
if 'user_ids' in values:
|
||||
# set menu action of users
|
||||
user_values = {'menu_id': values['menu_action_id']}
|
||||
# values['user_ids'] should match [(6, 0, IDs)]
|
||||
for id in get_many2many(values['user_ids']):
|
||||
values['user_ids'].append((1, id, user_values))
|
||||
|
||||
return super(portal, self).create(cr, uid, values, context)
|
||||
|
||||
|
@ -94,9 +91,11 @@ class portal(osv.osv):
|
|||
|
||||
def _create_menu_action(self, cr, uid, values, context=None):
|
||||
# create a menu action that opens the menu items below parent_menu_id
|
||||
groups_obj = self.pool.get('res.groups')
|
||||
group_name = groups_obj.browse(cr, uid, values['group_id'], context).name
|
||||
actions_obj = self.pool.get('ir.actions.act_window')
|
||||
action_values = {
|
||||
'name': values['name'] + ' Menu',
|
||||
'name': group_name + ' Menu',
|
||||
'type': 'ir.actions.act_window',
|
||||
'usage': 'menu',
|
||||
'res_model': 'ir.ui.menu',
|
||||
|
@ -114,7 +113,7 @@ class portal(osv.osv):
|
|||
for p in self.browse(cr, uid, ids, context):
|
||||
# create a menuitem under 'portal.portal_menu'
|
||||
menu_values = {
|
||||
'name': p.name + ' Menu',
|
||||
'name': p.group_id.name + ' Menu',
|
||||
'parent_id': menu_root,
|
||||
'groups_id': [(6, 0, [p.group_id.id])],
|
||||
}
|
||||
|
@ -174,7 +173,3 @@ def get_many2many(arg):
|
|||
assert len(arg) == 1 and arg[0][0] == 6 # arg = [(6, _, IDs)]
|
||||
return arg[0][2]
|
||||
|
||||
def copy_random(name):
|
||||
""" return "name [N]" for some random integer N """
|
||||
return "%s [%s]" % (name, random.choice(xrange(1000000)))
|
||||
|
||||
|
|
|
@ -28,9 +28,8 @@ portal's users.
|
|||
<field name="priority" eval="16"/>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Portal Form">
|
||||
<field name="name"/>
|
||||
<field name="group_id" on_change="onchange_group(group_id)"/>
|
||||
<notebook colspan="4">
|
||||
<notebook>
|
||||
<page string="Users">
|
||||
<field name="user_ids" nolabel="1" colspan="4"
|
||||
context="{'menu_id': menu_action_id}"/>
|
||||
|
|
Loading…
Reference in New Issue