changeset 10:007ba22a5eb1

umlaut suche jetzt normalisiert
author dwinter
date Sun, 05 May 2013 15:50:01 +0200
parents 166482535b54
children 69a2f0b8a932
files zopePubmanConnector.py
diffstat 1 files changed, 22 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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