[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:
Raphael Collet
2015-11-27 16:52:23 +01:00
parent 2e66149c53
commit 3f059d5edf
4 changed files with 95 additions and 84 deletions
+1
View File
@@ -45,6 +45,7 @@ CREATE TABLE ir_model_fields (
relation_table varchar,
column1 varchar,
column2 varchar,
store boolean,
primary key(id)
);
+2
View File
@@ -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"
+90 -84
View File
@@ -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')]}"/>
+2
View File
@@ -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'):