diff --git a/CHANGELOG b/CHANGELOG index 77db37a660..d7ac057beb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 diff --git a/trytond/ir/__init__.py b/trytond/ir/__init__.py index ee6e216edd..efd3b51f9c 100644 --- a/trytond/ir/__init__.py +++ b/trytond/ir/__init__.py @@ -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 * diff --git a/trytond/ir/__tryton__.py b/trytond/ir/__tryton__.py index 48413ba1ae..cb6c5b1d1c 100644 --- a/trytond/ir/__tryton__.py +++ b/trytond/ir/__tryton__.py @@ -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': [ diff --git a/trytond/ir/default.py b/trytond/ir/default.py deleted file mode 100644 index 1a0fe0ec3a..0000000000 --- a/trytond/ir/default.py +++ /dev/null @@ -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() diff --git a/trytond/ir/default.xml b/trytond/ir/default.xml deleted file mode 100644 index b4f7abcada..0000000000 --- a/trytond/ir/default.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - ir.default - form - - - - - ir.default - tree - - - - - - - ]]> - - - - Defaults - ir.default - form - - - - - - - - - - - - - - diff --git a/trytond/model/model.py b/trytond/model/model.py index d63a8eee2a..2d6b7c3dc0 100644 --- a/trytond/model/model.py +++ b/trytond/model/model.py @@ -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(): diff --git a/trytond/res/ir.xml b/trytond/res/ir.xml index 59bfc54b9d..6db4d4c05c 100644 --- a/trytond/res/ir.xml +++ b/trytond/res/ir.xml @@ -558,9 +558,6 @@ this repository contains the full copyright notices and license terms. --> - - -