processing of 'limits' parameter, esp. when provided as form parameter
This commit is contained in:
parent
2e8618b375
commit
49d2401bb4
2 changed files with 30 additions and 2 deletions
|
@ -75,9 +75,32 @@ class ResultsView(NodeView):
|
|||
@Lazy
|
||||
def params(self):
|
||||
params = dict(self.request.form)
|
||||
params.pop('report_execute', None)
|
||||
params = self.parseParams(params)
|
||||
return params
|
||||
|
||||
def parseParams(self, params):
|
||||
params.pop('report_execute', None)
|
||||
if 'limits' in params:
|
||||
params['limits'] = self.parseLimitsParam(params['limits'])
|
||||
return params
|
||||
|
||||
def parseLimitsParam(self, value):
|
||||
if not value:
|
||||
return None
|
||||
if isinstance(value, basestring):
|
||||
limits = value.split(',')
|
||||
else:
|
||||
limits = value
|
||||
if len(limits) < 2:
|
||||
limits.append(None)
|
||||
result = []
|
||||
for p in limits[:2]:
|
||||
if not p:
|
||||
result.append(None)
|
||||
else:
|
||||
result.append(int(p))
|
||||
return result
|
||||
|
||||
@Lazy
|
||||
def report(self):
|
||||
return adapted(self.virtualTargetObject)
|
||||
|
|
|
@ -94,15 +94,20 @@ class ReportInstance(BaseReport):
|
|||
crit = self.queryCriteria
|
||||
if crit is None:
|
||||
return []
|
||||
limits = self.limits
|
||||
if dynaParams is not None:
|
||||
for k, v in dynaParams.items():
|
||||
if k == 'limits':
|
||||
limits = v
|
||||
break
|
||||
if k in crit.parts.keys():
|
||||
crit.parts[k].comparisonValue = v
|
||||
parts = Jeep(crit.parts)
|
||||
result = list(self.selectObjects(parts)) # may modify parts
|
||||
qc = CompoundQueryCriteria(parts)
|
||||
return ResultSet(self, result, rowFactory=self.rowFactory,
|
||||
sortCriteria=self.getSortCriteria(), queryCriteria=qc)
|
||||
sortCriteria=self.getSortCriteria(), queryCriteria=qc,
|
||||
limits=limits)
|
||||
|
||||
def selectObjects(self, parts):
|
||||
# to be implemented by subclass
|
||||
|
|
Loading…
Add table
Reference in a new issue