diff --git a/composer/report/base.py b/composer/report/base.py index 717d0db..227e023 100644 --- a/composer/report/base.py +++ b/composer/report/base.py @@ -82,6 +82,7 @@ class Report(Template): queryCriteria = None outputFields = () sortCriteria = () + limits = None def __init__(self, name): diff --git a/composer/report/result.py b/composer/report/result.py index 5d5bcbc..b29e8e9 100644 --- a/composer/report/result.py +++ b/composer/report/result.py @@ -51,21 +51,22 @@ class Row(BaseRow): return getattr(obj.context, attr) def getGroupFields(self): - return [self.getRawValue(f.name) for f in + return [self.getRawValue(f.name) for f in self.parent.context.fields if 'group' in f.executionSteps] + @Lazy def displayedColumns(self): return self.parent.context.getActiveOutputFields() - + def useRowProperty(self, attr): return getattr(self, attr) - + class GroupHeaderRow(BaseRow): def getRawValue(self, attr): return self.data.get(attr, u'') - + @Lazy def displayedColumns(self): fields = self.parent.context.getActiveOutputFields() @@ -78,15 +79,17 @@ class GroupHeaderRow(BaseRow): class ResultSet(object): - def __init__(self, context, data, rowFactory=Row, headerRowFactory=GroupHeaderRow, - sortCriteria=None, queryCriteria=BaseQueryCriteria()): - + def __init__(self, context, data, + rowFactory=Row, headerRowFactory=GroupHeaderRow, + sortCriteria=None, queryCriteria=BaseQueryCriteria(), + limits=None): self.context = context # the report or report instance self.data = data self.rowFactory = rowFactory self.headerRowFactory = headerRowFactory self.sortCriteria = sortCriteria self.queryCriteria = queryCriteria + self.limits = limits self.totals = BaseRow(None, self) def getHeaderRow(self, row, columns): @@ -105,7 +108,8 @@ class ResultSet(object): result = [self.rowFactory(item, self) for item in self.data] result = [row for row in result if self.queryCriteria.check(row)] 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: res = [] groupValues = [None for f in self.groupColumns] @@ -117,6 +121,9 @@ class ResultSet(object): res.append(self.getHeaderRow(row, (f,) + f.outputWith)) res.append(row) result = res + if self.limits: + start, stop = self.limits + result = result[start:stop] for idx, row in enumerate(result): row.sequenceNumber = idx + 1 return result diff --git a/composer/schema/browser/schema_macros.pt b/composer/schema/browser/schema_macros.pt index b66dfaa..fa1b836 100755 --- a/composer/schema/browser/schema_macros.pt +++ b/composer/schema/browser/schema_macros.pt @@ -60,7 +60,7 @@ - ... * @@ -90,7 +90,7 @@ tal:define="width field/width|nothing" tal:attributes="name name; id name; style python: - ('width: %s;;' % (width and str(width)+'px' or '600px')) + + ('width: %s;;' % (width and str(width)+'px' or '555px')) + 'height: 1.5em;;'; value data/?name|string:; xxrequired field/required_js;" /> @@ -119,7 +119,7 @@ tal:define="width field/width|nothing" tal:attributes="name name; style python: - 'width: %s' % (width and str(width)+'px' or '600px'); + 'width: %s' % (width and str(width)+'px' or '555px'); value data/?name|string:" /> @@ -131,7 +131,7 @@ tal:attributes="name name; rows python: height or 3; style python: - 'width: %s' % (width and str(width)+'px' or '600px');" + 'width: %s' % (width and str(width)+'px' or '545px');" tal:content="data/?name|string:"> @@ -178,7 +178,7 @@ tal:attributes="name name; rows python: height or 3; style python: - 'width: %s' % (width and str(width)+'px' or '600px');" + 'width: %s' % (width and str(width)+'px' or '555px');" tal:content="data/?name|string:" /> diff --git a/tracking/track.pt b/tracking/track.pt index 89831a0..c2ed389 100644 --- a/tracking/track.pt +++ b/tracking/track.pt @@ -19,7 +19,7 @@ + tal:content="view/userTitle|string:???" /> Timestamp: