CLIENT,KERNEL: new tag act_window for new relate implementation

bzr revid: ced-064cf82573e34cdc578f936431e4588c1829891c
This commit is contained in:
ced 2007-05-24 05:26:36 +00:00
parent 0e23d3f1d3
commit 6df1c01919
6 changed files with 38 additions and 14 deletions

View File

@ -120,6 +120,7 @@ class act_window(osv.osv):
'domain': fields.char('Domain Value', size=250),
'context': fields.char('Context Value', size=250),
'res_model': fields.char('Model', size=64),
'src_model': fields.char('Source model', size=64),
'view_type': fields.selection((('tree','Tree'),('form','Form')),string='Type of view'),
'view_mode': fields.char('Mode of view', size=250),
'usage': fields.char('Action Usage', size=32),

View File

@ -14,7 +14,6 @@
</field>
</record>
<record model="ir.actions.act_window" id="res_partner_canal-act">
<field name="name">res.partner.canal.form</field>
<field name="res_model">res.partner.canal</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
@ -34,7 +33,6 @@
</field>
</record>
<record model="ir.actions.act_window" id="res_partner_event_type-act">
<field name="name">res.partner.event.type.form</field>
<field name="res_model">res.partner.event.type</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
@ -65,7 +63,6 @@
</field>
</record>
<record model="ir.actions.act_window" id="res_partner_som-act">
<field name="name">res.partner.som.form</field>
<field name="res_model">res.partner.som</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>

View File

@ -351,7 +351,7 @@ class res_partner_address(osv.osv):
_columns = {
'partner_id': fields.many2one('res.partner', 'Partner', required=True, ondelete='cascade', select=True),
'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type'),
'function': fields.many2one('res.partner.function', 'Function', relate=True),
'function': fields.many2one('res.partner.function', 'Function'),
'title': fields.selection(_contact_title_get, 'Title', size=32),
'name': fields.char('Contact Name', size=64),
'street': fields.char('Street', size=128),

View File

@ -86,6 +86,9 @@ class _column(object):
for a in args:
if args[a]:
setattr(self, a, args[a])
if self.relate:
warnings.warn("The relate attribute doesn't work anymore, use act_window tag instead", DeprecationWarning)
def set(self, cr, obj, id, name, value, user=None, context={}):
cr.execute('update '+obj._table+' set '+name+'='+self._symbol_set[0]+' where id=%d', (self._symbol_set[1](value),id) )

View File

@ -1309,20 +1309,14 @@ class orm(object):
if toolbar:
resprint = self.pool.get('ir.values').get(cr, user, 'action', 'client_print_multi', [(self._name, False)], False, context)
resaction = self.pool.get('ir.values').get(cr, user, 'action', 'client_action_multi', [(self._name, False)], False, context)
resrelate = self.pool.get('ir.values').get(cr, user, 'action', 'client_action_relate', [(self._name, False)], False, context)
resprint = map(lambda x:x[2], resprint)
resaction = map(lambda x:x[2], resaction)
resaction = filter(lambda x: not x.get('multi',False), resaction)
for x in resprint+resaction:
resrelate = map(lambda x:x[2], resrelate)
for x in resprint+resaction+resrelate:
x['string'] = x['name']
ids = self.pool.get('ir.model.fields').search(cr, user, [('relation','=',self._name),('relate','=',1)])
resrelate = self.pool.get('ir.model.fields').read(cr, user, ids, ['name','model_id'], context)
models = self.pool.get('ir.model').read(cr, user, map(lambda x: x['model_id'][0], resrelate), ['name'], context)
dmodels = {}
for m in models:
dmodels[m['id']] = m['name']
for x in resrelate:
x['string'] = dmodels[x['model_id'][0]]
result['toolbar'] = {
'print': resprint,
'action': resaction,

View File

@ -178,6 +178,34 @@ class xml_import(object):
self.pool.get('ir.model.data').ir_set(cr, self.uid, 'action', keyword, string, [model], value, replace=replace, isobject=True)
return False
def _tag_act_window(self, cr, rec, data_node=None):
name = rec.hasAttribute('name') and rec.getAttribute('name').encode('utf-8')
xml_id = rec.getAttribute('id').encode('utf8')
type = rec.hasAttribute('type') and rec.getAttribute('type').encode('utf-8') or 'ir.actions.act_window'
view_id = False
if rec.hasAttribute('view'):
view_id = self.id_get(cr, 'ir.actions.act_window', rec.getAttribute('view').encode('utf-8'))
domain = rec.hasAttribute('domain') and rec.getAttribute('domain').encode('utf-8')
context = rec.hasAttribute('context') and rec.getAttribute('context').encode('utf-8') or '{}'
res_model = rec.getAttribute('res_model').encode('utf-8')
src_model = rec.hasAttribute('src_model') and rec.getAttribute('src_model').encode('utf-8')
view_type = rec.hasAttribute('view_type') and rec.getAttribute('view_type').encode('utf-8') or 'form'
view_mode = rec.hasAttribute('view_mode') and rec.getAttribute('view_mode').encode('utf-8') or 'tree,form'
usage = rec.hasAttribute('usage') and rec.getAttribute('usage').encode('utf-8')
res = {'name': name, 'type': type, 'view_id': view_id, 'domain': domain, 'context': context, 'res_model': res_model, 'src_model': src_model, 'view_type': view_type, 'view_mode': view_mode, 'usage': usage }
id = self.pool.get('ir.model.data')._update(cr, self.uid, 'ir.actions.act_window', self.module, res, xml_id, mode=self.mode)
self.idref[xml_id] = id
if src_model:
keyword = 'client_action_relate'
keys = [('action', keyword), ('res_model', res_model)]
value = 'ir.actions.act_window,'+str(id)
replace = rec.hasAttribute('replace') and rec.getAttribute('replace')
self.pool.get('ir.model.data').ir_set(cr, self.uid, 'action', keyword, xml_id, [src_model], value, replace=replace, isobject=True)
return False
def _tag_ir_set(self, cr, rec, data_node=None):
if not self.mode=='init':
return False
@ -386,6 +414,7 @@ class xml_import(object):
'ir_set': self._tag_ir_set,
'function': self._tag_function,
'workflow': self._tag_workflow,
'act_window': self._tag_act_window,
}
#