db(...).select().group_by_value(db.table.field), thanks Yair

This commit is contained in:
Massimo Di Pierro
2012-02-22 11:32:30 -06:00
parent 620c61b51a
commit cd20ee3875
3 changed files with 60 additions and 42 deletions
+1 -1
View File
@@ -1 +1 @@
Version 1.99.4 (2012-02-21 16:25:39) stable Version 1.99.4 (2012-02-22 11:32:05) stable
+2 -2
View File
@@ -120,9 +120,9 @@
</li><li>Thadeus Burgess (validators) </li><li>Thadeus Burgess (validators)
</li><li>Tim Michelsen (Sphinx documentation) </li><li>Tim Michelsen (Sphinx documentation)
</li><li>Timothy Farrell (python 2.6 compliance, windows support) </li><li>Timothy Farrell (python 2.6 compliance, windows support)
</li><li>Yair Eshel (internationalizaiton) </li><li>Yair Eshel (internationalizaiton, DAL improvement)
</li><li>Yannis Aribaud (CAS compliance) </li><li>Yannis Aribaud (CAS compliance)
</li><li>Yarko Tymciurak (design, Sphinx documentation) </li><li>Yarko Tymciurak (design)
</li><li>Younghyun Jo (internationalization) </li><li>Younghyun Jo (internationalization)
</li><li>Vidul Nikolaev Petrov (captcha) </li><li>Vidul Nikolaev Petrov (captcha)
</li><li>Vinicius Assef </li><li>Vinicius Assef
+18
View File
@@ -7624,6 +7624,23 @@ class Rows(object):
""" """
return Rows(self.db,sorted(self,key=f,reverse=reverse),self.colnames) return Rows(self.db,sorted(self,key=f,reverse=reverse),self.colnames)
def group_by_value(self, field):
"""
regroups the rows, by one of the fields
"""
if not self.records:
return {}
key = str(field)
grouped_row_group = dict()
for row in self:
value = row[key]
if not value in grouped_row_group:
grouped_row_group[value] = [row]
else:
grouped_row_group[value].append(row)
return grouped_row_group
def as_list(self, def as_list(self,
compact=True, compact=True,
storage_to_dict=True, storage_to_dict=True,
@@ -8000,3 +8017,4 @@ if __name__ == '__main__':
import doctest import doctest
doctest.testmod() doctest.testmod()