diff --git a/MetaAnalytic.py b/MetaAnalytic.py index 901393ca6efe15590f44f0831ce1a532840279a3_TWV0YUFuYWx5dGljLnB5..7d24f8d4d5d0d058b69ccd42f7d5a1549ba8d51f_TWV0YUFuYWx5dGljLnB5 100644 --- a/MetaAnalytic.py +++ b/MetaAnalytic.py @@ -1,6 +1,6 @@ from openerp import SUPERUSER_ID from openerp import fields, api -from openerp.tools import config +from openerp.tools import config, frozendict from openerp.addons.oemetasl import OEMetaSL @@ -182,7 +182,7 @@ return res @AddMethod(superclass) - @api.cr_uid_context + @api.cr_uid_ids_context def unlink(self, cr, uid, ids, context=None): """When removing this object, remove all associated analytic codes referenced by this object. @@ -223,6 +223,44 @@ ) return res + @AddMethod(superclass) + @api.cr_uid_context + @api.returns(orm_name) + def create(self, cr, uid, vals, context=None): + """Performs analytic field validation""" + res = super(superclass, self).create( + cr, uid, vals, context=context + ) + # Throws in case of error + self._validate_analytic_fields(cr, uid, res, frozendict(analytic)) + + return res + + @AddMethod(superclass) + @api.cr_uid_ids_context + def write(self, cr, uid, ids, vals, context=None): + """Performs analytic field validation""" + res = super(superclass, self).write( + cr, uid, ids, vals, context=context + ) + # Throws in case of error + self._validate_analytic_fields(cr, uid, ids, frozendict(analytic)) + + return res + + @AddMethod(superclass) + @api.cr_uid_ids_context + def _validate_analytic_fields(self, cr, uid, ids, analytic, + context=None): + """Validation function to validate analytic fields. + The base implementation doesn't actually do anything. + :param analytic: frozendict, analytic field parameters, such as + they would appear in the '_analytic' in the expanded + form, ie. as a prefix => model_name mapping. + :raises: Validation error when applicable. + """ + pass + return (superclass,) @classmethod