diff --git a/bin/osv/orm.py b/bin/osv/orm.py index d0d783dc144..4836bf2916e 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -2294,7 +2294,7 @@ class orm(orm_template): Add missing table SELECT and JOIN clause to ``query`` for reaching the parent table (no duplicates) :param parent_model_name: name of the parent model for which the clauses should be added - :param query: query object on which the JOIN should be added + :param query: query object on which the JOIN should be added """ inherits_field = self._inherits[parent_model_name] parent_model = self.pool.get(parent_model_name) @@ -3936,7 +3936,7 @@ class orm(orm_template): query.tables.append(table) return True return False - + # apply main rules on the object rule_obj = self.pool.get('ir.rule') apply_rule(*rule_obj.domain_get(cr, uid, self._name, mode, context=context)) @@ -3954,7 +3954,7 @@ class orm(orm_template): Add possibly missing JOIN to ``query`` and generate the ORDER BY clause for m2o fields, either native m2o fields or function/related fields that are stored, including intermediate JOINs for inheritance if required. - + :return: the qualified field name to use in an ORDER BY clause to sort by ``order_field`` """ if order_field not in self._columns and order_field in self._inherit_fields: diff --git a/bin/osv/query.py b/bin/osv/query.py index 5ba74e49a1c..ab4f4143634 100644 --- a/bin/osv/query.py +++ b/bin/osv/query.py @@ -30,7 +30,7 @@ class Query(object): """ Dumb implementation of a Query object, using 3 string lists so far for backwards compatibility with the (table, where_clause, where_params) previously used. - + TODO: To be improved after v6.0 to rewrite part of the ORM and add support for: - auto-generated multiple table aliases - multiple joins to the same table with different conditions @@ -45,7 +45,7 @@ class Query(object): self.tables = tables or [] # holds the list of WHERE clause elements, to be joined with - # 'AND' when generating the final query + # 'AND' when generating the final query self.where_clause = where_clause or [] # holds the parameters for the formatting of `where_clause`, to be @@ -69,7 +69,7 @@ class Query(object): def join(self, connection, outer=False): """Adds the JOIN specified in ``connection``. - :param connection: a tuple ``(lhs, table, lhs_col, col)``. + :param connection: a tuple ``(lhs, table, lhs_col, col)``. The join corresponds to the SQL equivalent of:: ``(lhs.lhs_col = table.col)`` @@ -77,9 +77,9 @@ class Query(object): :param outer: True if a LEFT OUTER JOIN should be used, if possible (no promotion to OUTER JOIN is supported in case the JOIN was already present in the query, as for the moment - implicit INNER JOINs are only connected from NON-NULL - columns so it would not be correct (e.g. for - ``_inherits`` or when a domain criterion explicitly + implicit INNER JOINs are only connected from NON-NULL + columns so it would not be correct (e.g. for + ``_inherits`` or when a domain criterion explicitly adds filtering) """ (lhs, table, lhs_col, col) = connection @@ -93,7 +93,7 @@ class Query(object): # add JOIN self.tables.append(table) self.joins.setdefault(lhs, []).append((table, lhs_col, col, outer and 'LEFT JOIN' or 'JOIN')) - return self + return self def get_sql(self): """Returns (query_from, query_where, query_params)""" diff --git a/bin/run_tests.py b/bin/run_tests.py index 5af29fdb3c5..7c0ee2a2431 100644 --- a/bin/run_tests.py +++ b/bin/run_tests.py @@ -22,6 +22,6 @@ import unittest import test - + if __name__ == '__main__': unittest.TextTestRunner(verbosity=2).run(unittest.defaultTestLoader.loadTestsFromModule(test)) diff --git a/bin/test/test_osv.py b/bin/test/test_osv.py index 6e9f9c1e173..191ca792a2f 100644 --- a/bin/test/test_osv.py +++ b/bin/test/test_osv.py @@ -30,7 +30,7 @@ class QueryTestCase(unittest.TestCase): query.where_clause.append("product_product.template_id = product_template.id") query.join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join query.join(("product_product", "res_user", "user_id", "id"), outer=True) # outer join - self.assertEquals(query.get_sql()[0].strip(), + self.assertEquals(query.get_sql()[0].strip(), """"product_product" LEFT JOIN "res_user" ON ("product_product"."user_id" = "res_user"."id"),"product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") """.strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) @@ -40,7 +40,7 @@ class QueryTestCase(unittest.TestCase): query.where_clause.append("product_product.template_id = product_template.id") query.join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join query.join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join - self.assertEquals(query.get_sql()[0].strip(), + self.assertEquals(query.get_sql()[0].strip(), """"product_product","product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") LEFT JOIN "res_user" ON ("product_category"."user_id" = "res_user"."id")""".strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) @@ -51,8 +51,8 @@ class QueryTestCase(unittest.TestCase): query.join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join query.join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join query.tables.append('"account.account"') - query.where_clause.append("product_category.expense_account_id = account_account.id") # additional implicit join - self.assertEquals(query.get_sql()[0].strip(), + query.where_clause.append("product_category.expense_account_id = account_account.id") # additional implicit join + self.assertEquals(query.get_sql()[0].strip(), """"product_product","product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") LEFT JOIN "res_user" ON ("product_category"."user_id" = "res_user"."id"),"account.account" """.strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id AND product_category.expense_account_id = account_account.id""".strip())