# HG changeset patch # User dwinter # Date 1367243896 -7200 # Node ID 9dbb9354abbe6fa5af5432a10c0a06c4f2f38e58 # Parent c6478f155400655ac001675027081c5be217ecb2 getPublications erweitert nach Typ ausserdem erh?lt man jetzt auch einzelne Publicationen nach escidoc:id diff -r c6478f155400 -r 9dbb9354abbe zopePubmanConnector.py --- a/zopePubmanConnector.py Sat Apr 27 10:05:39 2013 +0200 +++ b/zopePubmanConnector.py Mon Apr 29 15:58:16 2013 +0200 @@ -58,33 +58,142 @@ return pt() - def getPublications(self,personID): + def getPublications(self,personID,limit=None,publicationType=None): """get all publications der personID""" h = httplib2.Http() - self.connectorString+="cqlQuery=escidoc.any-identifier=%22"+personID+"%22&" - self.connectorString+="exportFormat=APA&outputFormat=snippet&language=all&sortKeys=escidoc.any-dates&sortOrder=descending" + + if publicationType is None: + cn = self.connectorString+"cqlQuery=escidoc.any-identifier=%22"+personID+"%22&" + else: + cn = self.connectorString+"cqlQuery=escidoc.any-identifier=%22"+personID+"%22" + cn +="%20and%20escidoc.publication.type=%22"+publicationType+"%22&" + + cn +="exportFormat=APA&outputFormat=snippet&language=all&sortKeys=escidoc.any-dates&sortOrder=descending" + if limit: + cn+="&maximumRecords=%s"%limit - logging.debug(self.connectorString) - resp, content = h.request(self.connectorString) + logging.debug(cn) + resp, content = h.request(cn) + + logging.debug(content) + ET.register_namespace("dcterms", "http://purl.org/dc/terms/") root = ET.fromstring(content) + #value + @return map mit escidocId -> XML-formatted snippeds + """ + + fieldToEscidoc={"title":"escidoc.any-title", + "author":"escidoc.publication.any.publication-creator-names", + "any":"escidoc.any-metadata"} + + + cn = self.connectorString+"cqlQuery=%s&" + cn +="exportFormat=APA&outputFormat=snippet&language=all&sortKeys=escidoc.any-dates&sortOrder=descending" + + + + querys = [] + for field in values.keys(): + + searchField = fieldToEscidoc.get(field,None) + if searchField is None: + logging.debug("search, don't know field: %s"%field) + continue + + + value = values[field] + + if value == '': + continue + logging.debug("%s=%s"%(field,value)) + if not exact: + value=value+"*" + + + querys.append("%s=%%22%s%%22"%(searchField,value)) + + + query=" AND ".join(querys) + h = httplib2.Http() + + logging.debug(cn%query) + resp, content = h.request(cn%query) + + ET.register_namespace("dcterms", "http://purl.org/dc/terms/") + + root = ET.fromstring(content) + + #