# HG changeset patch # User dwinter # Date 1367761801 -7200 # Node ID 007ba22a5eb17da557e07dee64f2d3debd1046bc # Parent 166482535b54f493f2bd0da2818152114c37fdd1 umlaut suche jetzt normalisiert diff -r 166482535b54 -r 007ba22a5eb1 zopePubmanConnector.py --- a/zopePubmanConnector.py Fri May 03 22:20:56 2013 +0200 +++ b/zopePubmanConnector.py Sun May 05 15:50:01 2013 +0200 @@ -12,7 +12,7 @@ import xml.etree.ElementTree as ET import logging import time - +import unicodedata cacheFolder ="/var/tmp/.cacheWWW" @@ -112,7 +112,7 @@ fieldToEscidoc={"title":"escidoc.any-title", "author":"escidoc.publication.any.publication-creator-names", - "any":"escidoc.any-metadata"} + "any":"escidoc.metadata"} cn = self.connectorString+"cqlQuery=%s&" @@ -134,7 +134,10 @@ value = values[field] - + try: + value=unicodedata.normalize('NFKD', value).encode('ASCII', 'ignore') + except: + value=unicodedata.normalize('NFKD', value.decode('utf-8')).encode('ASCII', 'ignore') if value == '': continue logging.debug("%s=%s"%(field,value)) @@ -145,7 +148,7 @@ querys.append("%s=%%22%s%%22"%(searchField,value)) - query="+AND+".join(querys) + query="%20AND%20".join(querys) if contexts: # einscbraenken auf contexte @@ -157,10 +160,10 @@ for context in contexts: ctxquerys.append("escidoc.context.objid=%%22%s%%22"%(context)) - ctxquery="+OR+".join(ctxquerys) + ctxquery="%20OR%20".join(ctxquerys) if query!="": - query=query+"AND (%s)"%ctxquery + query=query+"AND%%20(%s)"%ctxquery else: query="(%s)"%ctxquery @@ -226,7 +229,7 @@ return self.connectorString - def getPublicationsFromContext(self,context,limit=None,publicationType=None): + def getPublicationsFromContext(self,context,limit=None,publicationType=None,search=None): """gibt alle publicationen des context, jeweils als tupel ("escidoc:id",METADATEN) METADATEN ist hierbei eine Map mit : @@ -241,13 +244,21 @@ h = httplib2.Http(cacheFolder) if publicationType is None: - cn = self.connectorString+"cqlQuery=escidoc.context.objid=%22"+context+"%22&" + cn = self.connectorString+"cqlQuery=(escidoc.context.objid=%22"+context+"%22" #cn = self.connectorString+"cqlQuery=escidoc.objid=%22"+"escidoc:643455"+"%22&" else: - cn = self.connectorString+"cqlQuery=escidoc.context.objid=%22"+context+"%22" - cn +="%20and%20escidoc.publication.type=%22"+publicationType+"%22&" + cn = self.connectorString+"cqlQuery=(escidoc.context.objid=%22"+context+"%22" + cn +="%20and%20escidoc.publication.type=%22"+publicationType+"%22" - cn +="exportFormat=APA&outputFormat=snippet&language=all&sortKeys=escidoc.any-dates&sortOrder=descending" + if search is not None and search != "": + try: + search = unicodedata.normalize('NFKD', search).encode('ASCII', 'ignore') + except: + search = unicodedata.normalize('NFKD', search.decode('utf-8')).encode('ASCII', 'ignore') + cn+="%20and%20escidoc.metadata="+search+"" + + + cn +=")&exportFormat=APA&outputFormat=snippet&language=all&sortKeys=escidoc.any-dates&sortOrder=descending" if limit: cn+="&maximumRecords=%s"%limit