def process_tags(self, result): tags = [] tagsDict = {} # Build a dictionary of the tags for doc in result: # Get Anotar data from Solr data doc = JsonSimple(doc.get("jsonString")) # Get actual tag text tag = doc.getString(None, ["content", "literal"]) # Find out if they have locators locs = doc.getJsonSimpleList(["annotates", "locators"]).size() if locs == 0: # Basic tags, just aggregate counts if tag in tagsDict: # We've seen it before, just increment the counter existing = tagsDict[tag] count = existing.getInteger(0, ["tagCount"]) existing.getJsonObject().put("tagCount", str(count + 1)) else: # First time, store this object doc.getJsonObject().put("tagCount", str(1)) tagsDict[tag] = doc else: # Tags with a locator, special case for images etc. tags.append(doc.toString()) # Push all the 'basic' counts into the list to return for tag in tagsDict: tags.append(tagsDict[tag].toString()) return "[" + ",".join(tags) + "]"
def modify_json(self): # print "**** anotar.py : add_json() : adding json : " + json jsonSimple = JsonSimple(self.json) jsonObj = jsonSimple.getJsonObject() jsonObj.put("id", self.pid) rootUri = jsonSimple.getString(None, ["annotates", "rootUri"]) if rootUri is not None: baseUrl = "http://%s:%s/" % (self.vc("request").serverName, self.vc("serverPort")) myUri = baseUrl + rootUri + "#" + self.pid jsonObj.put("uri", myUri) jsonObj.put("schemaVersionUri", "http://www.purl.org/anotar/schema/0.1") self.json = jsonSimple.toString()
def __workflow(self): # Workflow data WORKFLOW_ID = "usq" wfChanged = False workflow_security = [] try: wfPayload = self.object.getPayload("workflow.metadata") wfMeta = self.utils.getJsonObject(wfPayload.open()) wfPayload.close() # Are we indexing because of a workflow progression? targetStep = wfMeta.getString(None, ["targetStep"]) if targetStep is not None and targetStep != wfMeta.getString(None, ["step"]): wfChanged = True # Step change wfMeta.getJsonObject().put("step", targetStep) wfMeta.getJsonObject().remove("targetStep") # This must be a re-index then else: targetStep = wfMeta.getString(None, ["step"]) # Security change stages = self.config.getJsonSimpleList(["stages"]) for stage in stages: if stage.getString(None, ["name"]) == targetStep: wfMeta.getJsonObject().put("label", stage.getString(None, ["label"])) self.item_security = stage.getStringList(["visibility"]) workflow_security = stage.getStringList(["security"]) if wfChanged == True: self.message_list = stage.getStringList(["message"]) # Form processing formData = wfMeta.getObject(["formData"]) if formData is not None: formData = JsonSimple(formData) else: formData = None coreFields = ["title", "creator", "contributor", "description", "format", "creationDate"] if formData is not None: # Core fields title = formData.getStringList(["title"]) if title: self.titleList = title creator = formData.getStringList(["creator"]) if creator: self.creatorList = creator contributor = formData.getStringList(["contributor"]) if contributor: self.contributorList = contributor description = formData.getStringList(["description"]) if description: self.descriptionList = description format = formData.getStringList(["format"]) if format: self.formatList = format creation = formData.getStringList(["creationDate"]) if creation: self.creationDate = creation # Course security - basic course = formData.getString(None, ["course_code"]) if course: self.item_security.add(course) # Course security - moodle moodle_courses = formData.getString(None, ["moodleSecurity"]) if moodle_courses: moodleList = moodle_courses.split(",") for course in moodleList: if course != "": self.item_security.add(course) # Course facets - Peoplesoft psMoodle_courses = formData.getString(None, ["psMoodle"]) if psMoodle_courses: psMoodleList = psMoodle_courses.split(",") for course in psMoodleList: if course != "": self.__indexCourse(course) # Non-core fields data = formData.getJsonObject() for field in data.keySet(): if field not in coreFields: data = formData.getStringList([field]) if field.startswith("dc_subject."): subjectField = "dc_subject" if self.customFields.has_key(subjectField): subjectList = self.customFields[subjectField] if subjectList: for subject in subjectList: data.add(subject) field = subjectField self.customFields[field] = data except StorageException, e: # No workflow payload, time to create wfChanged = True wfMeta = JsonSimple() wfMetaObj = wfMeta.getJsonObject() wfMetaObj.put("id", WORKFLOW_ID) wfMetaObj.put("step", "pending") wfMetaObj.put("pageTitle", "Uploaded Files - Management") stages = self.config.getJsonSimpleList(["stages"]) for stage in stages: if stage.getString(None, ["name"]) == "pending": wfMetaObj.put("label", stage.getString(None, ["label"])) self.item_security = stage.getStringList(["visibility"]) workflow_security = stage.getStringList(["security"]) self.message_list = stage.getStringList(["message"])