merge branch master - 'limits' parameter for reports
This commit is contained in:
		
						commit
						ff9a2a8fd3
					
				
					 2 changed files with 11 additions and 4 deletions
				
			
		|  | @ -82,6 +82,7 @@ class Report(Template): | ||||||
|     queryCriteria = None |     queryCriteria = None | ||||||
|     outputFields = () |     outputFields = () | ||||||
|     sortCriteria = () |     sortCriteria = () | ||||||
|  |     limits = None | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     def __init__(self, name): |     def __init__(self, name): | ||||||
|  |  | ||||||
|  | @ -79,15 +79,17 @@ class GroupHeaderRow(BaseRow): | ||||||
| 
 | 
 | ||||||
| class ResultSet(object): | class ResultSet(object): | ||||||
| 
 | 
 | ||||||
|     def __init__(self, context, data, rowFactory=Row, headerRowFactory=GroupHeaderRow, |     def __init__(self, context, data, | ||||||
|                  sortCriteria=None, queryCriteria=BaseQueryCriteria()): |                  rowFactory=Row, headerRowFactory=GroupHeaderRow, | ||||||
|          |                  sortCriteria=None, queryCriteria=BaseQueryCriteria(), | ||||||
|  |                  limits=None): | ||||||
|         self.context = context  # the report or report instance |         self.context = context  # the report or report instance | ||||||
|         self.data = data |         self.data = data | ||||||
|         self.rowFactory = rowFactory |         self.rowFactory = rowFactory | ||||||
|         self.headerRowFactory = headerRowFactory |         self.headerRowFactory = headerRowFactory | ||||||
|         self.sortCriteria = sortCriteria |         self.sortCriteria = sortCriteria | ||||||
|         self.queryCriteria = queryCriteria |         self.queryCriteria = queryCriteria | ||||||
|  |         self.limits = limits | ||||||
|         self.totals = BaseRow(None, self) |         self.totals = BaseRow(None, self) | ||||||
| 
 | 
 | ||||||
|     def getHeaderRow(self, row, columns): |     def getHeaderRow(self, row, columns): | ||||||
|  | @ -106,7 +108,8 @@ class ResultSet(object): | ||||||
|         result = [self.rowFactory(item, self) for item in self.data] |         result = [self.rowFactory(item, self) for item in self.data] | ||||||
|         result = [row for row in result if self.queryCriteria.check(row)] |         result = [row for row in result if self.queryCriteria.check(row)] | ||||||
|         if self.sortCriteria: |         if self.sortCriteria: | ||||||
|             result.sort(key=lambda x: [f.getSortValue(x) for f in self.sortCriteria]) |             result.sort(key=lambda x:  | ||||||
|  |                         [f.getSortValue(x) for f in self.sortCriteria]) | ||||||
|         if self.groupColumns: |         if self.groupColumns: | ||||||
|             res = [] |             res = [] | ||||||
|             groupValues = [None for f in self.groupColumns] |             groupValues = [None for f in self.groupColumns] | ||||||
|  | @ -118,6 +121,9 @@ class ResultSet(object): | ||||||
|                         res.append(self.getHeaderRow(row, (f,) + f.outputWith)) |                         res.append(self.getHeaderRow(row, (f,) + f.outputWith)) | ||||||
|                 res.append(row) |                 res.append(row) | ||||||
|             result = res |             result = res | ||||||
|  |         if self.limits: | ||||||
|  |             start, stop = self.limits | ||||||
|  |             result = result[start:stop] | ||||||
|         for idx, row in enumerate(result): |         for idx, row in enumerate(result): | ||||||
|             row.sequenceNumber = idx + 1 |             row.sequenceNumber = idx + 1 | ||||||
|         return result |         return result | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue