tcms.core.db module¶

class
tcms.core.db.
GroupByResult
(data=None, total_name=None)[source]¶ Bases:
object
Group By result
This object can be used as a normal dict object with less support of stock dictionary methods. Consumers can do
 get a subtotal associated with a name
 get a subtotal’s percentage
 know whether it’s empty. Empty means no data from database of the GROUP BY query
 how many subtotals there
The main purpose of GroupByResult is to get specific subtotal(s) and the percentage of each of them. Rules to get such values
 each subtotal is associated with a name. If name you give does not exist, 0 is returned, otherwise proper value is returned.
 percentage of each subtotal has a special name with format of subtotal name plus ‘_percent’.
Examples:
Suppose, a GroupByResult object named gbr is {‘A’: 100, ‘B’: 200}
To get subtotal of A, gbr.A
To get percentage of B, gbr.B_percent

empty
¶

leaf_values_count
(value_in_row=False, refresh=False)[source]¶ Calculate the total number of leaf values under this level
After the first time this method gets call, the result will be cached as meta data of this level node. So, any number of subsequent invocations of this method will return result by reading self._meta directly without repeating calculation. Unless, pass True to argument refresh.
 @param value_in_row: whether leaf value should be treated as a row, in
 such way, leaf value will be displayed in one row.
@type value_in_row: bool @param refresh: whether force to recalculate @type refresh: bool @return: the total number of leaf values under this level @rtype: int

total
¶ Get the total value of this GROUP BY result
Total value comes from two situations. One is that there is no total value computed in database side by issuing GROUP BY with ROLLUP. In this case, total value will be calculated from all subtotal values. Inversely, the total value will be returned directly.