Add ir.default and fix where_calc for null value

This commit is contained in:
Cédric Krier committed 2008-01-23 23:48:18 +01:00
1 parent d0801dc281
commit e61dd52d26
5 files changed
+133 -5

No files matched your search

+1
View File
@@ -10,3 +10,4 @@ from exports import *
from rule import *
from property import *
import module
from default import *
+1
View File
@@ -19,5 +19,6 @@
'module/module.xml',
'module/repository.xml',
'module/category.xml',
'default.xml',
],
}
+69
View File
@@ -0,0 +1,69 @@
"Default"
from trytond.osv import fields, OSV
class Default(OSV):
"Default"
_name = 'ir.default'
_description = __doc__
_rec_name = 'value'
_columns = {
'model': fields.Many2One('ir.model', 'Model', required=True,
ondelete='cascade'),
'field': fields.Many2One('ir.model.fields', 'Field', required=True,
ondelete='cascade'),
'value': fields.Text('Value'),
'clause': fields.Text('Clause'),
'user': fields.Many2One('res.user', 'User', ondelete='cascade'),
}
def get_default(self, cursor, user, model, clause, context=None):
res = {}
test_user = user
test_clause = clause
default_ids = []
while True:
default_ids += self.search(cursor, user, [
('model.model', '=', model),
('clause', '=', test_clause),
('user', '=', test_user),
], context=context)
if test_user:
test_user = False
continue
if test_clause:
test_clause = False
continue
break
for default in self.browse(cursor, user, default_ids, context=context):
if default.field.name not in res:
res[default.field.name] = default.value
return res
def set_default(self, cursor, user, model, field, clause, value,
user_default, context=None):
model_obj = self.pool.get('ir.model')
field_obj = self.pool.get('ir.model.fields')
model_id = model_obj.search(cursor, user, [
('model', '=', model),
], context=context)[0]
field_id = field_obj.search(cursor, user, [
('name', '=', field),
], context=context)[0]
default_ids = self.search(cursor, user, [
('model', '=', model_id),
('field', '=', field_id),
('clause', '=', clause),
('user', '=', user_default),
], context=context)
if default_ids:
self.unlink(cursor, user, default_ids, context=context)
self.create(cursor, user, {
'model': model_id,
'field': field_id,
'value': str(value),
'clause': clause,
'user': user_default,
}, context=context)
Default()
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0"?>
<tryton>
<data>
<record model="ir.ui.view" id="default_view_form">
<field name="model">ir.default</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
<form string="Default">
<field name="model" select="1"/>
<field name="field" select="1"/>
<field name="user" select="1"/>
<field name="value" colspan="4"/>
<field name="clause" colspan="4"/>
</form>
]]>
</field>
</record>
<record model="ir.ui.view" id="default_view_tree">
<field name="model">ir.default</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<![CDATA[
<tree string="Defaults">
<field name="model"/>
<field name="field"/>
<field name="user"/>
</tree>
]]>
</field>
</record>
<record model="ir.action.act_window" id="act_default_form">
<field name="name">Defaults</field>
<field name="res_model">ir.default</field>
<field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view"
id="act_default_form_view1">
<field name="sequence" eval="1"/>
<field name="view_id" ref="default_view_tree"/>
<field name="act_window_id" ref="act_default_form"/>
</record>
<record model="ir.action.act_window.view"
id="act_default_form_view2">
<field name="sequence" eval="2"/>
<field name="view_id" ref="default_view_form"/>
<field name="act_window_id" ref="act_default_form"/>
</record>
<menuitem parent_id="ir.menu_ir"
action="act_default_form" id="menu_default_form"/>
</data>
</tryton>
+10 -5
View File
@@ -1124,9 +1124,12 @@ class ORM(object):
# get the default values set by the user and override the default
# values defined in the object
ir_values_obj = self.pool.get('ir.values')
res = ir_values_obj.get(cursor, user, 'default', False, [self._name])
for value_id, field, field_value in res:
#ir_values_obj = self.pool.get('ir.values')
#res = ir_values_obj.get(cursor, user, 'default', False, [self._name])
ir_default_obj = self.pool.get('ir.default')
defaults = ir_default_obj.get_default(cursor, user,
self._name, False, context=context)
for field, field_value in defaults.items():
if field in fields_names:
fld_def = (field in self._columns) and self._columns[field] \
or self._inherit_fields[field][2]
@@ -2024,9 +2027,11 @@ class ORM(object):
table = arg[3]
if arg[1] != 'in':
if (arg[2] is False) and (arg[1] == '='):
qu1.append(arg[0] + ' is null')
qu1.append('(%s.%s IS NULL)' % \
(table._table, arg[0]))
elif (arg[2] is False) and (arg[1] == '<>' or arg[1] == '!='):
qu1.append(arg[0] + ' is not null')
qu1.append('(%s.%s IS NOT NULL)' % \
(table._table, arg[0]))
else:
if arg[0] == 'id':
if arg[1] == 'join':