From 3f9ddfa0955a7353e23de9ed070ad6dad3496a76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 25 Mar 2012 15:38:44 +0200 Subject: [PATCH] Remove special uom search clause review294001 --- CHANGELOG | 1 + product.py | 17 +++++++++++++++++ uom.py | 56 ------------------------------------------------------ 3 files changed, 18 insertions(+), 56 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index fe7c7ee3a4..a1a5efe923 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Remove special uom search clause * New product types: Goods, Assets and Service * Category is no more required on product diff --git a/product.py b/product.py index 9e6a158118..923a5d3b95 100644 --- a/product.py +++ b/product.py @@ -47,6 +47,10 @@ class Template(ModelSQL, ModelView): depends=DEPENDS)) default_uom = fields.Many2One('product.uom', 'Default UOM', required=True, states=STATES, depends=DEPENDS) + default_uom_category = fields.Function( + fields.Many2One('product.uom.category', 'Default UOM Category', + on_change_with=['default_uom']), + 'get_default_uom_category') active = fields.Boolean('Active', select=True) products = fields.One2Many('product.product', 'template', 'Products', states=STATES, depends=DEPENDS) @@ -76,6 +80,19 @@ class Template(ModelSQL, ModelView): def default_cost_price_method(self): return 'fixed' + def on_change_with_default_uom_category(self, values): + pool = Pool() + uom_obj = pool.get('product.uom') + if values.get('default_uom'): + uom = uom_obj.browse(values['default_uom']) + return uom.category.id + + def get_default_uom_category(self, ids, name): + categories = {} + for template in self.browse(ids): + categories[template.id] = template.default_uom.category.id + return categories + def get_price_uom(self, ids, name): product_uom_obj = Pool().get('product.uom') res = {} diff --git a/uom.py b/uom.py index a2bc01ee81..e8317ae5fa 100644 --- a/uom.py +++ b/uom.py @@ -2,10 +2,8 @@ #this repository contains the full copyright notices and license terms. from decimal import Decimal from trytond.model import ModelView, ModelSQL, fields -from trytond.model.modelstorage import OPERATORS from trytond.pyson import Eval from trytond.transaction import Transaction -from trytond.pool import Pool STATES = { 'readonly': ~Eval('active', True), @@ -94,26 +92,6 @@ class Uom(ModelSQL, ModelView): def default_digits(self): return 2 - def default_category(self): - product_obj = Pool().get('product.product') - context = Transaction().context - if 'category' in context: - if isinstance(context['category'], (tuple, list)) \ - and len(context['category']) > 1 \ - and context['category'][1] in ('uom.category', - 'product.default_uom.category'): - if context['category'][1] == 'uom.category': - if not context['category'][0]: - return False - uom = self.browse(context['category'][0]) - return uom.category.id - else: - if not context['category'][0]: - return False - product = product_obj.browse(context['category'][0]) - return product.default_uom.category.id - return False - def on_change_factor(self, value): if value.get('factor', 0.0) == 0.0: return {'rate': 0.0} @@ -248,38 +226,4 @@ class Uom(ModelSQL, ModelView): return new_price - def search(self, args, offset=0, limit=None, order=None, - count=False, query_string=False): - product_obj = Pool().get('product.product') - args = args[:] - def process_args(args): - i = 0 - while i < len(args): - #add test for xmlrpc that doesn't handle tuple - if (isinstance(args[i], tuple) \ - or (isinstance(args[i], list) and len(args[i]) > 2 \ - and args[i][1] in OPERATORS)) \ - and args[i][0] == 'category' \ - and isinstance(args[i][2], (list, tuple)) \ - and len(args[i][2]) == 2 \ - and args[i][2][1] in ('product.default_uom.category', - 'uom.category'): - if not args[i][2][0]: - args[i] = ('id', '!=', '0') - else: - if args[i][2][1] == 'product.default_uom.category': - product = product_obj.browse(args[i][2][0]) - category_id = product.default_uom.category.id - else: - uom = self.browse(args[i][2][0]) - category_id = uom.category.id - args[i] = (args[i][0], args[i][1], category_id) - elif isinstance(args[i], list): - process_args(args[i]) - i += 1 - process_args(args) - return super(Uom, self).search(args, offset=offset, limit=limit, - order=order, count=count, - query_string=query_string) - Uom()