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
|
@Lazy
|
||||||
def params(self):
|
def params(self):
|
||||||
params = dict(self.request.form)
|
params = dict(self.request.form)
|
||||||
params.pop('report_execute', None)
|
params = self.parseParams(params)
|
||||||
return 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
|
@Lazy
|
||||||
def report(self):
|
def report(self):
|
||||||
return adapted(self.virtualTargetObject)
|
return adapted(self.virtualTargetObject)
|
||||||
|
|
|
@ -94,15 +94,20 @@ class ReportInstance(BaseReport):
|
||||||
crit = self.queryCriteria
|
crit = self.queryCriteria
|
||||||
if crit is None:
|
if crit is None:
|
||||||
return []
|
return []
|
||||||
|
limits = self.limits
|
||||||
if dynaParams is not None:
|
if dynaParams is not None:
|
||||||
for k, v in dynaParams.items():
|
for k, v in dynaParams.items():
|
||||||
|
if k == 'limits':
|
||||||
|
limits = v
|
||||||
|
break
|
||||||
if k in crit.parts.keys():
|
if k in crit.parts.keys():
|
||||||
crit.parts[k].comparisonValue = v
|
crit.parts[k].comparisonValue = v
|
||||||
parts = Jeep(crit.parts)
|
parts = Jeep(crit.parts)
|
||||||
result = list(self.selectObjects(parts)) # may modify parts
|
result = list(self.selectObjects(parts)) # may modify parts
|
||||||
qc = CompoundQueryCriteria(parts)
|
qc = CompoundQueryCriteria(parts)
|
||||||
return ResultSet(self, result, rowFactory=self.rowFactory,
|
return ResultSet(self, result, rowFactory=self.rowFactory,
|
||||||
sortCriteria=self.getSortCriteria(), queryCriteria=qc)
|
sortCriteria=self.getSortCriteria(), queryCriteria=qc,
|
||||||
|
limits=limits)
|
||||||
|
|
||||||
def selectObjects(self, parts):
|
def selectObjects(self, parts):
|
||||||
# to be implemented by subclass
|
# to be implemented by subclass
|
||||||
|
|
Loading…
Add table
Reference in a new issue