Merge branch 'bbmaster' of ssh://git.cy55.de/home/hplattner/git/cybertools into bbmaster

This commit is contained in:
Helmut Merz 2013-12-20 10:10:52 +01:00
commit e07bcefe0c
2 changed files with 17 additions and 16 deletions

View file

@ -138,28 +138,28 @@ class Report(Template):
def getPresentationFormats(self): def getPresentationFormats(self):
return [dict(renderer='default', title='Default')] return [dict(renderer='default', title='Default')]
def getGroupFields(self): def getGroupFields(self):
return [f for f in self.fields if 'group' in f.executionSteps] return [f for f in self.fields if 'group' in f.executionSteps]
def getTotalsFields(self): def getTotalsFields(self):
return [f for f in self.fields if 'totals' in f.executionSteps] return [f for f in self.fields if 'totals' in f.executionSteps]
def getSubTotalsFields(self): def getSubTotalsFields(self):
result = [] result = []
for gf in self.getGroupFields(): for gf in self.getGroupFields():
result.append([f for f in self.fields if gf.name in f.totals]) result.append([f for f in self.fields if gf.name in f.totals])
return result return result
def getSubTotalsGroupFields(self): def getSubTotalsGroupFields(self):
result = [] result = []
for f in self.fields: for f in self.fields:
result.extend(gf for gf in self.getGroupFields() if gf.name in f.totals) result.extend(gf for gf in self.getGroupFields() if gf.name in f.totals)
return result return result
def getOutputFieldsForField(self, field): def getOutputFieldsForField(self, field):
return [f for f in self.fields if f.name == field.output] return [f for f in self.fields if f.name == field.output]
class BaseQueryCriteria(Component): class BaseQueryCriteria(Component):

View file

@ -83,8 +83,8 @@ class GroupHeaderRow(BaseRow):
if f.name == col.name: if f.name == col.name:
fields[idx] = col fields[idx] = col
return fields return fields
class SubTotalsRow(BaseRow): class SubTotalsRow(BaseRow):
def getRawValue(self, attr): def getRawValue(self, attr):
@ -141,12 +141,12 @@ class ResultSet(object):
v = u'' v = u''
subTotalsRow.data[gf.totalsDescription.output] = u'SUMME: ' + v subTotalsRow.data[gf.totalsDescription.output] = u'SUMME: ' + v
return subTotalsRow return subTotalsRow
def getResult(self): def getResult(self):
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: result.sort(key=lambda x:
[f.getSortValue(x) for f in self.sortCriteria]) [f.getSortValue(x) for f in self.sortCriteria])
if self.groupColumns: if self.groupColumns:
res = [] res = []
@ -177,7 +177,8 @@ class ResultSet(object):
res.append(row) res.append(row)
for idx, sc in enumerate(self.subTotalsColumns): for idx, sc in enumerate(self.subTotalsColumns):
for idx2, f in enumerate(sc): for idx2, f in enumerate(sc):
subTotals[idx][idx2] += f.getValue(row) subTotals[idx][idx2] += f.getValue(row,
ignoreTotals=True)
lastRow = row lastRow = row
if lastRow is not None: if lastRow is not None:
subTotalsRows = [] subTotalsRows = []
@ -219,16 +220,16 @@ class ResultSet(object):
@Lazy @Lazy
def groupColumns(self): def groupColumns(self):
return self.context.getGroupFields() return self.context.getGroupFields()
@Lazy @Lazy
def subTotalsColumns(self): def subTotalsColumns(self):
return self.context.getSubTotalsFields() return self.context.getSubTotalsFields()
@Lazy @Lazy
def subTotalsGroupColumns(self): def subTotalsGroupColumns(self):
return self.context.getSubTotalsGroupFields() return self.context.getSubTotalsGroupFields()
def getOutputColumnsForField(self, f): def getOutputColumnsForField(self, f):
return self.context.getOutputFieldsForField(f) return self.context.getOutputFieldsForField(f)