Improvement for addind new fields
bzr revid: fp@tinyerp.com-9bfe51a2a1a880c5f099cb66803ab9a7cfd05ebe
This commit is contained in:
parent
37a4fe5955
commit
5f714028c7
|
@ -26,7 +26,11 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
print '1'
|
||||||
import ir
|
import ir
|
||||||
|
print '2'
|
||||||
import module
|
import module
|
||||||
|
print '3'
|
||||||
import res
|
import res
|
||||||
|
print '4'
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,7 @@ CREATE TABLE ir_model_fields (
|
||||||
model_id int references ir_model on delete cascade,
|
model_id int references ir_model on delete cascade,
|
||||||
name varchar(64) DEFAULT ''::varchar NOT NULL,
|
name varchar(64) DEFAULT ''::varchar NOT NULL,
|
||||||
relation varchar(64),
|
relation varchar(64),
|
||||||
|
select_level varchar(4),
|
||||||
field_description varchar(256),
|
field_description varchar(256),
|
||||||
ttype varchar(64),
|
ttype varchar(64),
|
||||||
group_name varchar(64),
|
group_name varchar(64),
|
||||||
|
|
|
@ -721,7 +721,7 @@
|
||||||
|
|
||||||
<field name="size" select="1"/>
|
<field name="size" select="1"/>
|
||||||
<field name="on_delete" select="1"/>
|
<field name="on_delete" select="1"/>
|
||||||
<field name="select" select="2"/>
|
<field name="select_level" select="2"/>
|
||||||
<field name="translate"/>
|
<field name="translate"/>
|
||||||
<field name="selection"/>
|
<field name="selection"/>
|
||||||
<field name="domain"/>
|
<field name="domain"/>
|
||||||
|
@ -766,7 +766,7 @@
|
||||||
|
|
||||||
<field name="size" select="1"/>
|
<field name="size" select="1"/>
|
||||||
<field name="on_delete" select="1"/>
|
<field name="on_delete" select="1"/>
|
||||||
<field name="select" select="2"/>
|
<field name="select_level" select="2"/>
|
||||||
<field name="translate"/>
|
<field name="translate"/>
|
||||||
<field name="selection"/>
|
<field name="selection"/>
|
||||||
<field name="domain"/>
|
<field name="domain"/>
|
||||||
|
|
|
@ -52,6 +52,8 @@ class ir_model(osv.osv):
|
||||||
}
|
}
|
||||||
ir_model()
|
ir_model()
|
||||||
|
|
||||||
|
print 'MODEL'
|
||||||
|
|
||||||
class ir_model_fields(osv.osv):
|
class ir_model_fields(osv.osv):
|
||||||
_name = 'ir.model.fields'
|
_name = 'ir.model.fields'
|
||||||
_columns = {
|
_columns = {
|
||||||
|
@ -66,7 +68,7 @@ class ir_model_fields(osv.osv):
|
||||||
'selection': fields.char('Field Selection',size=128),
|
'selection': fields.char('Field Selection',size=128),
|
||||||
'required': fields.boolean('Required'),
|
'required': fields.boolean('Required'),
|
||||||
'readonly': fields.boolean('Readonly'),
|
'readonly': fields.boolean('Readonly'),
|
||||||
'select': fields.selection([('0','Not Searchable'),('1','Always Searchable'),('2','Advanced Search')],'Searchable', required=True),
|
'select_level': fields.selection([('0','Not Searchable'),('1','Always Searchable'),('2','Advanced Search')],'Searchable', required=True),
|
||||||
'translate': fields.boolean('Translate'),
|
'translate': fields.boolean('Translate'),
|
||||||
'size': fields.integer('Size'),
|
'size': fields.integer('Size'),
|
||||||
'state': fields.selection([('manual','Custom Field'),('base','Base Field')],'Manualy Created'),
|
'state': fields.selection([('manual','Custom Field'),('base','Base Field')],'Manualy Created'),
|
||||||
|
@ -83,15 +85,15 @@ class ir_model_fields(osv.osv):
|
||||||
'selection': lambda *a: "[]",
|
'selection': lambda *a: "[]",
|
||||||
'domain': lambda *a: "[]",
|
'domain': lambda *a: "[]",
|
||||||
'name': lambda *a: 'x_',
|
'name': lambda *a: 'x_',
|
||||||
'state': lambda self,cr,uid,ctx={}: ctx.get('manual',False) and 'manual' or 'base',
|
'state': lambda self,cr,uid,ctx={}: (ctx and ctx.get('manual',False)) and 'manual' or 'base',
|
||||||
'on_delete': lambda *a: 'no',
|
'on_delete': lambda *a: 'no',
|
||||||
'select': lambda *a: '0',
|
'select_level': lambda *a: '0',
|
||||||
'size': lambda *a: 64,
|
'size': lambda *a: 64,
|
||||||
'field_description': lambda *a: '',
|
'field_description': lambda *a: 'No',
|
||||||
}
|
}
|
||||||
_order = "id"
|
_order = "id"
|
||||||
def unlink(self, cr, user, ids, context=None):
|
def unlink(self, cr, user, ids, context=None):
|
||||||
for field in self.browse(cr, uid, ids, context):
|
for field in self.browse(cr, user, ids, context):
|
||||||
if field.state <> 'manual':
|
if field.state <> 'manual':
|
||||||
raise except_orm('Error', "You can not remove the field '%s' !" %(field.name,))
|
raise except_orm('Error', "You can not remove the field '%s' !" %(field.name,))
|
||||||
#
|
#
|
||||||
|
@ -203,6 +205,7 @@ class ir_model_access(osv.osv):
|
||||||
return res
|
return res
|
||||||
ir_model_access()
|
ir_model_access()
|
||||||
|
|
||||||
|
print 'MODEL ACCESS'
|
||||||
class ir_model_data(osv.osv):
|
class ir_model_data(osv.osv):
|
||||||
_name = 'ir.model.data'
|
_name = 'ir.model.data'
|
||||||
_columns = {
|
_columns = {
|
||||||
|
|
|
@ -296,14 +296,13 @@ class orm(object):
|
||||||
# reference model in order to have a description of its fonctionnality in custom_report
|
# reference model in order to have a description of its fonctionnality in custom_report
|
||||||
cr.execute("INSERT INTO ir_model (model, name, info) VALUES (%s, %s, %s)", (self._name, self._description, self.__doc__))
|
cr.execute("INSERT INTO ir_model (model, name, info) VALUES (%s, %s, %s)", (self._name, self._description, self.__doc__))
|
||||||
cr.commit()
|
cr.commit()
|
||||||
|
|
||||||
for k in self._columns:
|
for k in self._columns:
|
||||||
f = self._columns[k]
|
f = self._columns[k]
|
||||||
cr.execute("select id, relate from ir_model_fields where model=%s and name=%s", (self._name,k))
|
cr.execute("select id, relate from ir_model_fields where model=%s and name=%s", (self._name,k))
|
||||||
if not cr.rowcount:
|
if not cr.rowcount:
|
||||||
cr.execute("select id from ir_model where model='%s'" % self._name)
|
cr.execute("select id from ir_model where model='%s'" % self._name)
|
||||||
model_id = cr.fetchone()[0]
|
model_id = cr.fetchone()[0]
|
||||||
cr.execute("INSERT INTO ir_model_fields (model_id, model, name, field_description, ttype, relate,relation,group_name,view_load,state) VALUES (%d,%s,%s,%s,%s,%s,%s,%s,%s,%s)", (model_id, self._name, k, f.string.replace("'", " "), f._type, (f.relate and 'True') or 'False', f._obj or 'NULL', f.group_name or '', (f.view_load and 'True') or 'False', 'base'))
|
cr.execute("INSERT INTO ir_model_fields (model_id, model, name, field_description, ttype, relate,relation,group_name,view_load,state,select_level) VALUES (%d,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", (model_id, self._name, k, f.string.replace("'", " "), f._type, (f.relate and 'True') or 'False', f._obj or 'NULL', f.group_name or '', (f.view_load and 'True') or 'False', 'base', str(f.select or 0)))
|
||||||
else:
|
else:
|
||||||
id, relate = cr.fetchone()
|
id, relate = cr.fetchone()
|
||||||
if relate != f.relate:
|
if relate != f.relate:
|
||||||
|
@ -552,13 +551,12 @@ class orm(object):
|
||||||
'size': field['size'],
|
'size': field['size'],
|
||||||
'ondelete': field['on_delete'],
|
'ondelete': field['on_delete'],
|
||||||
'translate': (field['translate']),
|
'translate': (field['translate']),
|
||||||
'select': int(field['select'])
|
'select': int(field['select_level'])
|
||||||
}
|
}
|
||||||
if field['relation']:
|
if field['relation']:
|
||||||
attrs['relation'] = field['relation']
|
attrs['relation'] = field['relation']
|
||||||
self._columns[field['name']] = getattr(fields, field['ttype'])(**attrs)
|
self._columns[field['name']] = getattr(fields, field['ttype'])(**attrs)
|
||||||
|
|
||||||
# if self.__class__.__name__ != 'fake_class':
|
|
||||||
self._inherits_reload()
|
self._inherits_reload()
|
||||||
if not self._sequence:
|
if not self._sequence:
|
||||||
self._sequence = self._table+'_id_seq'
|
self._sequence = self._table+'_id_seq'
|
||||||
|
|
Loading…
Reference in New Issue