[ADD] ir_model: add boolean field store on model ir.model.fields
Make the field reflect the field property `store` in registry.
This commit is contained in:
@@ -45,6 +45,7 @@ CREATE TABLE ir_model_fields (
|
||||
relation_table varchar,
|
||||
column1 varchar,
|
||||
column2 varchar,
|
||||
store boolean,
|
||||
primary key(id)
|
||||
);
|
||||
|
||||
|
||||
@@ -252,6 +252,7 @@ class ir_model_fields(osv.osv):
|
||||
'depends': fields.char("Dependencies", help="Dependencies of compute method; "
|
||||
"a list of comma-separated field names, like\n\n"
|
||||
" name, partner_id.name"),
|
||||
'store': fields.boolean('Stored', help="Whether the value is stored in the database."),
|
||||
}
|
||||
_rec_name='field_description'
|
||||
_defaults = {
|
||||
@@ -262,6 +263,7 @@ class ir_model_fields(osv.osv):
|
||||
'on_delete': 'set null',
|
||||
'field_description': '',
|
||||
'selectable': 1,
|
||||
'store': True,
|
||||
}
|
||||
_order = "name"
|
||||
|
||||
|
||||
@@ -59,49 +59,52 @@
|
||||
<field name="ttype"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="base" string="Base Properties">
|
||||
<group>
|
||||
<field name="translate"
|
||||
attrs="{'readonly': [('ttype','not in',['char','text'])],
|
||||
'invisible': [('ttype','not in',['char','text'])]}"/>
|
||||
<field name="selection"
|
||||
attrs="{'required': [('ttype','in',['selection','reference'])],
|
||||
'readonly': [('ttype','not in',['selection','reference'])],
|
||||
'invisible': [('ttype','not in',['selection','reference'])]}"/>
|
||||
<field name="size"
|
||||
attrs="{'readonly': [('ttype','not in',['char','reference'])],
|
||||
'invisible': [('ttype','not in',['char','reference'])]}"/>
|
||||
<field name="relation"
|
||||
attrs="{'required': [('ttype','in',['many2one','one2many','many2many'])],
|
||||
'readonly': [('ttype','not in',['many2one','one2many','many2many'])],
|
||||
'invisible': [('ttype','not in',['many2one','one2many','many2many'])]}"/>
|
||||
<field name="on_delete"
|
||||
attrs="{'readonly': [('ttype','!=','many2one')],
|
||||
'invisible': [('ttype','!=','many2one')]}"/>
|
||||
<field name="relation_field"
|
||||
attrs="{'required': [('ttype','=','one2many')],
|
||||
'readonly': [('ttype','!=','one2many')],
|
||||
'invisible': [('ttype','!=','one2many')]}"/>
|
||||
<field name="relation_table"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="column1"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="column2"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="domain"
|
||||
attrs="{'readonly': [('ttype','not in',['many2one','one2many','many2many'])],
|
||||
'invisible': [('ttype','not in',['many2one','one2many','many2many'])]}"/>
|
||||
<field name="required"/>
|
||||
<field name="readonly"/>
|
||||
<field name="index"/>
|
||||
<field name="copy"/>
|
||||
<page name="base" string="Properties">
|
||||
<group string="Base Properties">
|
||||
<group>
|
||||
<field name="required"/>
|
||||
<field name="readonly"/>
|
||||
<field name="store"/>
|
||||
<field name="index"/>
|
||||
<field name="copy"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="translate"
|
||||
attrs="{'readonly': [('ttype','not in',['char','text'])],
|
||||
'invisible': [('ttype','not in',['char','text'])]}"/>
|
||||
<field name="selection"
|
||||
attrs="{'required': [('ttype','in',['selection','reference'])],
|
||||
'readonly': [('ttype','not in',['selection','reference'])],
|
||||
'invisible': [('ttype','not in',['selection','reference'])]}"/>
|
||||
<field name="size"
|
||||
attrs="{'readonly': [('ttype','not in',['char','reference'])],
|
||||
'invisible': [('ttype','not in',['char','reference'])]}"/>
|
||||
<field name="relation"
|
||||
attrs="{'required': [('ttype','in',['many2one','one2many','many2many'])],
|
||||
'readonly': [('ttype','not in',['many2one','one2many','many2many'])],
|
||||
'invisible': [('ttype','not in',['many2one','one2many','many2many'])]}"/>
|
||||
<field name="on_delete"
|
||||
attrs="{'readonly': [('ttype','!=','many2one')],
|
||||
'invisible': [('ttype','!=','many2one')]}"/>
|
||||
<field name="relation_field"
|
||||
attrs="{'required': [('ttype','=','one2many')],
|
||||
'readonly': [('ttype','!=','one2many')],
|
||||
'invisible': [('ttype','!=','one2many')]}"/>
|
||||
<field name="relation_table"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="column1"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="column2"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="domain"
|
||||
attrs="{'readonly': [('ttype','not in',['many2one','one2many','many2many'])],
|
||||
'invisible': [('ttype','not in',['many2one','one2many','many2many'])]}"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page name="advanced" string="Advanced Properties">
|
||||
<group>
|
||||
<group string="Advanced Properties">
|
||||
<field name="serialization_field_id"
|
||||
domain="[('ttype','=','serialized'), ('model_id', '=', model_id)]"
|
||||
attrs="{'readonly': [('state','=','base')]}"/>
|
||||
@@ -222,49 +225,52 @@
|
||||
<field name="ttype"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="base" string="Base Properties">
|
||||
<group>
|
||||
<field name="translate"
|
||||
attrs="{'readonly': [('ttype','not in',['char','text'])],
|
||||
'invisible': [('ttype','not in',['char','text'])]}"/>
|
||||
<field name="selection"
|
||||
attrs="{'required': [('ttype','in',['selection','reference'])],
|
||||
'readonly': [('ttype','not in',['selection','reference'])],
|
||||
'invisible': [('ttype','not in',['selection','reference'])]}"/>
|
||||
<field name="size"
|
||||
attrs="{'readonly': [('ttype','not in',['char','reference'])],
|
||||
'invisible': [('ttype','not in',['char','reference'])]}"/>
|
||||
<field name="relation"
|
||||
attrs="{'required': [('ttype','in',['many2one','one2many','many2many'])],
|
||||
'readonly': [('ttype','not in',['many2one','one2many','many2many'])],
|
||||
'invisible': [('ttype','not in',['many2one','one2many','many2many'])]}"/>
|
||||
<field name="on_delete"
|
||||
attrs="{'readonly': [('ttype','!=','many2one')],
|
||||
'invisible': [('ttype','!=','many2one')]}"/>
|
||||
<field name="relation_field"
|
||||
attrs="{'required': [('ttype','=','one2many')],
|
||||
'readonly': [('ttype','!=','one2many')],
|
||||
'invisible': [('ttype','!=','one2many')]}"/>
|
||||
<field name="relation_table"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="column1"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="column2"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="domain"
|
||||
attrs="{'readonly': [('ttype','not in',['many2one','one2many','many2many'])],
|
||||
'invisible': [('ttype','not in',['many2one','one2many','many2many'])]}"/>
|
||||
<field name="required"/>
|
||||
<field name="readonly"/>
|
||||
<field name="index"/>
|
||||
<field name="copy"/>
|
||||
<page name="base" string="Properties">
|
||||
<group string="Base Properties">
|
||||
<group>
|
||||
<field name="required"/>
|
||||
<field name="readonly"/>
|
||||
<field name="store"/>
|
||||
<field name="index"/>
|
||||
<field name="copy"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="translate"
|
||||
attrs="{'readonly': [('ttype','not in',['char','text'])],
|
||||
'invisible': [('ttype','not in',['char','text'])]}"/>
|
||||
<field name="selection"
|
||||
attrs="{'required': [('ttype','in',['selection','reference'])],
|
||||
'readonly': [('ttype','not in',['selection','reference'])],
|
||||
'invisible': [('ttype','not in',['selection','reference'])]}"/>
|
||||
<field name="size"
|
||||
attrs="{'readonly': [('ttype','not in',['char','reference'])],
|
||||
'invisible': [('ttype','not in',['char','reference'])]}"/>
|
||||
<field name="relation"
|
||||
attrs="{'required': [('ttype','in',['many2one','one2many','many2many'])],
|
||||
'readonly': [('ttype','not in',['many2one','one2many','many2many'])],
|
||||
'invisible': [('ttype','not in',['many2one','one2many','many2many'])]}"/>
|
||||
<field name="on_delete"
|
||||
attrs="{'readonly': [('ttype','!=','many2one')],
|
||||
'invisible': [('ttype','!=','many2one')]}"/>
|
||||
<field name="relation_field"
|
||||
attrs="{'required': [('ttype','=','one2many')],
|
||||
'readonly': [('ttype','!=','one2many')],
|
||||
'invisible': [('ttype','!=','one2many')]}"/>
|
||||
<field name="relation_table"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="column1"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="column2"
|
||||
attrs="{'readonly': ['|', ('ttype','!=','many2many'), ('state','!=','manual')],
|
||||
'invisible': ['|', ('ttype','!=','many2many'), ('state','!=','manual')]}"/>
|
||||
<field name="domain"
|
||||
attrs="{'readonly': [('ttype','not in',['many2one','one2many','many2many'])],
|
||||
'invisible': [('ttype','not in',['many2one','one2many','many2many'])]}"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page name="advanced" string="Advanced Properties">
|
||||
<group>
|
||||
<group string="Advanced Properties">
|
||||
<field name="serialization_field_id"
|
||||
domain="[('ttype','=','serialized'), ('model_id', '=', model_id)]"
|
||||
attrs="{'readonly': [('state','=','base')]}"/>
|
||||
|
||||
@@ -412,6 +412,7 @@ class BaseModel(object):
|
||||
'ttype': f.type,
|
||||
'relation': f.comodel_name or None,
|
||||
'index': bool(f.index),
|
||||
'store': bool(f.store),
|
||||
'copy': bool(f.copy),
|
||||
'related': f.related and ".".join(f.related),
|
||||
'readonly': bool(f.readonly),
|
||||
@@ -696,6 +697,7 @@ class BaseModel(object):
|
||||
'related': field['related'],
|
||||
'required': bool(field['required']),
|
||||
'readonly': bool(field['readonly']),
|
||||
'store': bool(field['store']),
|
||||
}
|
||||
# FIXME: ignore field['serialization_field_id']
|
||||
if field['ttype'] in ('char', 'text', 'html'):
|
||||
|
||||
Reference in New Issue
Block a user