def activate(self, context): storage = context["Services"].getStorage() storedObj = storage.getObject(context["metadata"].getFirst("storage_id")) self.oid = storedObj.getId() assessment = Assessment() assessment.activate(context) self.status = assessment.queryStatus(self.oid)
def checkRequests(self, checklist_filter=['1'], role_filter='reviewer', exclusive=True, startPage=1): """ A customised query for arms at arms-review Get a list of requests filtered by provisioning_checklist For assessor, it is user based and queries against committee-responses.metadata """ workflowStep = "arms-review" if self.packageType: req = SearchRequest(self.packageType) else: req = SearchRequest("packageType:arms") req.addParam("fq", 'workflow_step:' + workflowStep) for item in ['1','2','3','4']: if item in checklist_filter: req.addParam("fq", '-provisioning_checklist.' + item + ':null' + ' AND provisioning_checklist.' + item + ':[* TO *]') else: if exclusive: # ensure that brand new submissions (not yet saved by reviewer) are also returned req.addParam("fq", 'provisioning_checklist.' + item + ':null' + ' OR (*:* -provisioning_checklist.' + item + ':[* TO *])') req.setParam("sort", "date_object_modified desc, f_dc_title asc") req.setParam("fl",self.returnFields) out = ByteArrayOutputStream() self.indexer.search(req, out) solrResults = SolrResult(ByteArrayInputStream(out.toByteArray())) if solrResults: results = solrResults.getResults() if results: packageResults = results results = self.mergeEvents(packageResults, ["arms_draft","arms_redraft","arms_review","arms_approved","arms_rejected"]) returnArray = JSONArray() if role_filter.startswith('assessor'): if role_filter == 'assessor': query_status = ['new', 'draft'] elif role_filter == 'assessor-assessed': query_status = ['submitted'] x = Assessment() x.activate(self.velocityContext) i = 0 rows = self.recordsPerPage start = (startPage - 1) * self.recordsPerPage for r in results: status = x.queryStatus(r.get("id")) if status in query_status: if i >= start and i - start < rows: if status == 'submitted': assessment_submitted_date = x.queryMyAttr('date') if assessment_submitted_date: r.getJsonObject().put('date', assessment_submitted_date) returnArray.add(r) i = i + 1 else: returnArray = results self._setPaging(returnArray.size()) return returnArray else: return ArrayList()
def getFilteredAssessments(self, packageType, stageName, filterType, startPage=1): """ A customised query to use filter to get certain assessment with desired status """ ## reference /redbox-rdsi-arms/src/main/config/home/lib/jython/util/Assessment.py for methods filters = {'assessment-draft': ['new','draft'], 'assessment-submitted':['submitted']} statusFilter = filters[filterType] req = SearchRequest("packageType:" + packageType) req.addParam("fq", 'workflow_step:' + stageName) req.setParam("sort", "date_object_modified desc, f_dc_title asc") req.setParam("fl",self.returnFields) out = ByteArrayOutputStream() self.indexer.search(req, out) solrResults = SolrResult(ByteArrayInputStream(out.toByteArray())) if solrResults: results = solrResults.getResults() returnArray = JSONArray() x = Assessment() x.activate(self.velocityContext) i = 0 rows = self.recordsPerPage start = (startPage - 1) * self.recordsPerPage for r in results: status = x.queryStatus(r.get("id")) if status in statusFilter: if i >= start and i - start < rows: assessment_submitted_date = x.queryAttr(r.get("id"), 'date') if assessment_submitted_date: r.getJsonObject().put('date', assessment_submitted_date) returnArray.add(r) i = i + 1 self._setPaging(returnArray.size()) return returnArray else: return ArrayList()