CLIENT,KERNEL: new tag act_window for new relate implementation
bzr revid: ced-064cf82573e34cdc578f936431e4588c1829891c
This commit is contained in:
parent
0e23d3f1d3
commit
6df1c01919
|
@ -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),
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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) )
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue