Remove ir.default

This commit is contained in:
Cédric Krier
2011-03-30 14:13:35 +02:00
parent b9a74cfbe7
commit 2fad5e05de
7 changed files with 1 additions and 278 deletions
+1
View File
@@ -1,3 +1,4 @@
* Remove ir.default
* Add type, last user and last modification on ir.attachment
* Rename datas into data on ir.attachment
* Add new configuration option to prevent database listing
-1
View File
@@ -12,7 +12,6 @@ from translation import *
from export import *
from rule import *
import module
from default import *
from cache import *
from date import *
from trigger import *
-1
View File
@@ -45,7 +45,6 @@ Fournit les concepts et l'administration des modèles, actions, séquences, loca
'rule.xml',
'property.xml',
'module/module.xml',
'default.xml',
'trigger.xml',
],
'translation': [
-147
View File
@@ -1,147 +0,0 @@
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
from decimal import Decimal
import datetime
import time
from trytond.model import ModelView, ModelSQL, fields
from trytond.tools import safe_eval
from trytond.pyson import Eval
from trytond.transaction import Transaction
from trytond.cache import Cache
class Default(ModelSQL, ModelView):
"Default"
_name = 'ir.default'
_description = __doc__
_rec_name = 'value'
model = fields.Many2One('ir.model', 'Model', required=True,
ondelete='CASCADE')
field = fields.Many2One('ir.model.field', 'Field', required=True,
ondelete='CASCADE', domain=[('model', '=', Eval('model'))])
value = fields.Text('Value')
clause = fields.Text('Clause')
user = fields.Many2One('res.user', 'User', ondelete='CASCADE')
def __init__(self):
super(Default, self).__init__()
self._rpc.update({
'get_default': False,
'set_default': True,
'reset_default': True,
})
@Cache('ir_default.get_default')
def get_default(self, model, clause):
res = {}
test_user = Transaction().user
test_clause = clause
default_ids = []
while True:
default_ids += self.search([
('model.model', '=', model),
('clause', '=', test_clause),
('user', '=', test_user),
])
if test_user:
test_user = False
continue
if test_clause:
test_clause = False
continue
break
for default in self.browse(default_ids):
if default.field.name not in res:
if default.field.ttype in ('reference', 'char', 'sha', 'text',
'time', 'selection'):
res[default.field.name] = default.value
elif default.field.ttype in ('integer', 'biginteger'):
res[default.field.name] = int(default.value)
elif default.field.ttype == 'float':
res[default.field.name] = float(default.value)
elif default.field.ttype == 'numeric':
res[default.field.name] = Decimal(default.value)
elif default.field.ttype == 'date':
res[default.field.name] = datetime.date(*time.strptime(
default.value, '%Y-%m-%d')[:3])
elif default.field.ttype == 'datetime':
res[default.field.name] = datetime.datetime(*time.strptime(
default.value, '%Y-%m-%d %H:%M:%S')[:6])
else:
res[default.field.name] = safe_eval(default.value)
return res
def set_default(self, model, field, clause, value, user_default):
ir_model_obj = self.pool.get('ir.model')
ir_field_obj = self.pool.get('ir.model.field')
model_obj = self.pool.get(model)
if field not in model_obj._columns:
model = self.pool.get(model_obj._inherit_fields[field][0])._name
model_id = ir_model_obj.search([
('model', '=', model),
])[0]
field_id = ir_field_obj.search([
('name', '=', field),
('model', '=', model_id),
])[0]
default_ids = self.search([
('model', '=', model_id),
('field', '=', field_id),
('clause', '=', clause),
('user', '=', user_default),
])
if default_ids:
self.delete(default_ids)
self.create({
'model': model_id,
'field': field_id,
'value': str(value),
'clause': clause,
'user': user_default,
})
def reset_default(self, model, field, clause, value, user_default):
ir_model_obj = self.pool.get('ir.model')
ir_field_obj = self.pool.get('ir.model.field')
model_obj = self.pool.get(model)
if field not in model_obj._columns:
model = self.pool.get(model_obj._inherit_fields[field][0])._name
model_id = ir_model_obj.search([
('model', '=', model),
])[0]
field_id = ir_field_obj.search([
('name', '=', field),
('model', '=', model_id),
])[0]
default_ids = self.search([
('model', '=', model_id),
('field', '=', field_id),
('clause', '=', clause),
('user', '=', user_default),
])
if default_ids:
self.delete(default_ids)
def create(self, vals):
res = super(Default, self).create(vals)
# Restart the cache for get_default method
self.get_default.reset()
return res
def write(self, ids, vals):
res = super(Default, self).write(ids, vals)
# Restart the cache for get_default method
self.get_default.reset()
return res
def delete(self, ids):
res = super(Default, self).delete(ids)
# Restart the cache for get_default method
self.get_default.reset()
return res
Default()
-61
View File
@@ -1,61 +0,0 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<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" col="6">
<label name="model"/>
<field name="model"/>
<label name="field"/>
<field name="field"/>
<label name="user"/>
<field name="user"/>
<group col="2" colspan="6" expand="1" id="value_clause">
<separator name="value"/>
<separator name="clause"/>
<field name="value"/>
<field name="clause"/>
</group>
</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" select="1"/>
<field name="field" select="1"/>
<field name="user" select="1"/>
</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" ref="default_view_tree"/>
<field name="act_window" 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" ref="default_view_form"/>
<field name="act_window" ref="act_default_form"/>
</record>
<menuitem parent="ir.menu_models"
action="act_default_form" id="menu_default_form"/>
</data>
</tryton>
-65
View File
@@ -384,7 +384,6 @@ class Model(WarningErrorMixin):
and default value as value
'''
property_obj = self.pool.get('ir.property')
ir_default_obj = self.pool.get('ir.default')
value = {}
# get the default values defined in the object
@@ -408,70 +407,6 @@ class Model(WarningErrorMixin):
value[field_name + '.rec_name'] = obj.browse(
value[field_name]).rec_name
# get the default values set by the user and override the default
# values defined in the object
for name in (self._inherits.keys() + [self._name]):
defaults = ir_default_obj.get_default(name, False)
for field_name, field_value in defaults.items():
if field_name in fields_names:
if field_name in self._columns:
field = self._columns[field_name]
else:
field = self._inherit_fields[field_name][2]
if field._type in ('many2one', 'one2one'):
if not isinstance(field_value, (int, long)):
continue
obj = self.pool.get(field.model_name)
if not hasattr(obj, 'search') \
or not obj.search([
('id', '=', field_value),
]):
continue
if with_rec_name and 'rec_name' in obj._columns:
value[field_name + '.rec_name'] = obj.browse(
field_value).rec_name
if field._type in ('many2many'):
if not isinstance(field_value, list):
continue
obj = field.get_target(self.pool)
field_value2 = []
for i in range(len(field_value)):
if not hasattr(obj, 'search') \
or not obj.search([
('id', '=', field_value[i]),
]):
continue
field_value2.append(field_value[i])
field_value = field_value2
if field._type in ('one2many'):
if not isinstance(field_value, list):
continue
obj = self.pool.get(field.model_name)
field_value2 = []
for i in range(len(field_value or [])):
field_value2.append({})
for field2 in field_value[i].keys():
if (field2 in obj._columns
and obj._columns[field2]._type
in ('many2one',)):
obj2 = self.pool.get(
obj._columns[field2].model_name)
if not hasattr(obj2, 'search'):
continue
if not obj2.search([
('id', '=', field_value[i][field2]),
]):
continue
if (with_rec_name
and 'rec_name' in obj2._columns):
field_value[i][field2 + '.rec_name'] = (
obj2.browse(
field_value[i][field2],
).rec_name)
# TODO add test for many2many and one2many
field_value2[i][field2] = field_value[i][field2]
field_value = field_value2
value[field_name] = field_value
value = self._default_on_change(value)
if not with_rec_name:
for field in value.keys():
-3
View File
@@ -558,9 +558,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.menu" id="ir.menu_module_install_upgrade">
<field name="groups" eval="[('add', ref('res.group_admin'))]"/>
</record>
<record model="ir.ui.menu" id="ir.menu_default_form">
<field name="groups" eval="[('add', ref('res.group_admin'))]"/>
</record>
<record model="ir.ui.menu" id="ir.menu_trigger_form">
<field name="groups" eval="[('add', ref('res.group_admin'))]"/>
</record>