comparison zopePubmanConnector.py @ 5:245294b18a1d

search modified
author dwinter
date Tue, 30 Apr 2013 20:32:50 +0200
parents f845502cf73a
children 49abb91d6c6a
comparison
equal deleted inserted replaced
4:f845502cf73a 5:245294b18a1d
101 101
102 102
103 return ret 103 return ret
104 104
105 105
106 def search(self,values,exact=False): 106 def search(self,values={},exact=False,limit=None,contexts=None):
107 107
108 """search pubman 108 """search pubman
109 @values map mit field->value 109 @values map mit field->value
110 @return map mit escidocId -> XML-formatted snippeds 110 @return map mit escidocId -> XML-formatted snippeds
111 """ 111 """
116 116
117 117
118 cn = self.connectorString+"cqlQuery=%s&" 118 cn = self.connectorString+"cqlQuery=%s&"
119 cn +="exportFormat=APA&outputFormat=snippet&language=all&sortKeys=escidoc.any-dates&sortOrder=descending" 119 cn +="exportFormat=APA&outputFormat=snippet&language=all&sortKeys=escidoc.any-dates&sortOrder=descending"
120 120
121 if limit:
122 cn+="&maximumRecords=%s"%limit
123
124
121 125
122 126
123 querys = [] 127 querys = []
124 for field in values.keys(): 128 for field in values.keys():
125 129
139 143
140 144
141 querys.append("%s=%%22%s%%22"%(searchField,value)) 145 querys.append("%s=%%22%s%%22"%(searchField,value))
142 146
143 147
144 query=" AND ".join(querys) 148 query="+AND+".join(querys)
149
150
151 if contexts: # einscbraenken auf contexte
152
153 if isinstance(contexts, str):
154 contexts=[contexts]
155
156 ctxquerys=[]
157 for context in contexts:
158 ctxquerys.append("escidoc.context.objid=%%22%s%%22"%(context))
159
160 ctxquery="+OR+".join(ctxquerys)
161
162 if query!="":
163 query=query+"AND (%s)"%ctxquery
164 else:
165 query="(%s)"%ctxquery
166
145 h = httplib2.Http() 167 h = httplib2.Http()
146 168
147 logging.debug(cn%query) 169 logging.debug(cn%query)
148 resp, content = h.request(cn%query) 170 resp, content = h.request(cn%query)
149 171