Mercurial > hg > ZopePubmanConnector
comparison zopePubmanConnector.py @ 6:49abb91d6c6a
getPreprints gibt nun hash mit metadate zurueck
author | dwinter |
---|---|
date | Fri, 03 May 2013 14:26:13 +0200 |
parents | 245294b18a1d |
children | 06befe15f66f |
comparison
equal
deleted
inserted
replaced
5:245294b18a1d | 6:49abb91d6c6a |
---|---|
13 import urllib | 13 import urllib |
14 import re | 14 import re |
15 import xml.etree.ElementTree as ET | 15 import xml.etree.ElementTree as ET |
16 import json | 16 import json |
17 import logging | 17 import logging |
18 | |
19 | |
20 cacheFolder ="/var/tmp/.cacheWWW" | |
18 | 21 |
19 def zptFile(self, path, orphaned=False): | 22 def zptFile(self, path, orphaned=False): |
20 """returns a page template file from the product""" | 23 """returns a page template file from the product""" |
21 if orphaned: | 24 if orphaned: |
22 # unusual case | 25 # unusual case |
58 return pt() | 61 return pt() |
59 | 62 |
60 | 63 |
61 def getPublications(self,personID,limit=None,publicationType=None): | 64 def getPublications(self,personID,limit=None,publicationType=None): |
62 """get all publications der personID""" | 65 """get all publications der personID""" |
63 h = httplib2.Http() | 66 h = httplib2.Http(cacheFolder) |
64 | 67 |
65 | 68 |
66 | 69 |
67 if publicationType is None: | 70 if publicationType is None: |
68 cn = self.connectorString+"cqlQuery=escidoc.any-identifier=%22"+personID+"%22&" | 71 cn = self.connectorString+"cqlQuery=escidoc.any-identifier=%22"+personID+"%22&" |
162 if query!="": | 165 if query!="": |
163 query=query+"AND (%s)"%ctxquery | 166 query=query+"AND (%s)"%ctxquery |
164 else: | 167 else: |
165 query="(%s)"%ctxquery | 168 query="(%s)"%ctxquery |
166 | 169 |
167 h = httplib2.Http() | 170 h = httplib2.Http(cacheFolder) |
168 | 171 |
169 logging.debug(cn%query) | 172 logging.debug(cn%query) |
170 resp, content = h.request(cn%query) | 173 resp, content = h.request(cn%query) |
171 | 174 |
172 ET.register_namespace("dcterms", "http://purl.org/dc/terms/") | 175 ET.register_namespace("dcterms", "http://purl.org/dc/terms/") |
199 | 202 |
200 def getEntryFromPubman(self,escidocid): | 203 def getEntryFromPubman(self,escidocid): |
201 """get one entry""" | 204 """get one entry""" |
202 | 205 |
203 escidocid=escidocid.lstrip().strip() | 206 escidocid=escidocid.lstrip().strip() |
204 h = httplib2.Http() | 207 h = httplib2.Http(cacheFolder) |
205 cn = self.connectorString+"cqlQuery=escidoc.objid=%s&" | 208 cn = self.connectorString+"cqlQuery=escidoc.objid=%s&" |
206 cn +="exportFormat=APA&outputFormat=snippet&language=all&sortKeys=escidoc.any-dates&sortOrder=descending" | 209 cn +="exportFormat=APA&outputFormat=snippet&language=all&sortKeys=escidoc.any-dates&sortOrder=descending" |
207 | 210 |
208 resp, content = h.request(cn%escidocid) | 211 resp, content = h.request(cn%escidocid) |
209 ET.register_namespace("dcterms", "http://purl.org/dc/terms/") | 212 ET.register_namespace("dcterms", "http://purl.org/dc/terms/") |
227 | 230 |
228 | 231 |
229 | 232 |
230 def getPreprintsFromContext(self,context,limit=None,publicationType=None): | 233 def getPreprintsFromContext(self,context,limit=None,publicationType=None): |
231 """get all publications des context""" | 234 """get all publications des context""" |
232 h = httplib2.Http() | 235 h = httplib2.Http(cacheFolder) |
233 | 236 |
234 | 237 |
235 | 238 |
236 if publicationType is None: | 239 if publicationType is None: |
237 cn = self.connectorString+"cqlQuery=escidoc.context.objid=%22"+context+"%22&" | 240 cn = self.connectorString+"cqlQuery=escidoc.context.objid=%22"+context+"%22&" |
254 | 257 |
255 #<escidocItem:item objid="escidoc:630782" | 258 #<escidocItem:item objid="escidoc:630782" |
256 | 259 |
257 citationxpath=".//{http://purl.org/dc/terms/}bibliographicCitation" | 260 citationxpath=".//{http://purl.org/dc/terms/}bibliographicCitation" |
258 abstractpath=".//{http://purl.org/dc/terms/}abstract" | 261 abstractpath=".//{http://purl.org/dc/terms/}abstract" |
259 | 262 issuedpath=".//{http://purl.org/dc/terms/}issued" |
263 | |
264 creatorpath=".//{http://escidoc.mpg.de/metadataprofile/schema/0.1/publication}creator/{http://escidoc.mpg.de/metadataprofile/schema/0.1/types}person" | |
265 familyNamepath=".//{http://escidoc.mpg.de/metadataprofile/schema/0.1/types}family-name" | |
266 givenNamepath=".//{http://escidoc.mpg.de/metadataprofile/schema/0.1/types}given-name" | |
267 | |
268 | |
269 titlepath=".//{http://purl.org/dc/elements/1.1/}title" | |
260 | 270 |
261 objxpath=".//{http://www.escidoc.de/schemas/item/0.8}item" | 271 objxpath=".//{http://www.escidoc.de/schemas/item/0.8}item" |
262 srcpath=".//{http://escidoc.mpg.de/metadataprofile/schema/0.1/publication}source" | 272 srcpath=".//{http://escidoc.mpg.de/metadataprofile/schema/0.1/publication}source" |
263 volumepath=".//{http://escidoc.mpg.de/metadataprofile/schema/0.1/types}volume" | 273 volumepath=".//{http://escidoc.mpg.de/metadataprofile/schema/0.1/types}volume" |
264 | 274 |
320 abstractTexts={} | 330 abstractTexts={} |
321 for abstract in abstracts: | 331 for abstract in abstracts: |
322 | 332 |
323 lang = abstract.get("{http://www.w3.org/XML/1998/namespace}lang") | 333 lang = abstract.get("{http://www.w3.org/XML/1998/namespace}lang") |
324 abstractTexts[lang]=abstract.text | 334 abstractTexts[lang]=abstract.text |
325 | 335 |
326 | 336 |
327 #if abstractDE is not None: | 337 |
328 # abstactDEtext = abstractDE.text | 338 authorsTags = citation.findall(creatorpath) |
329 #else: | |
330 # abstactDEtext = "" | |
331 | |
332 # abstractEN = citation.find(abstractENpath) | |
333 # if abstractEN is not None: | |
334 # abstactENtext = abstractEN.text | |
335 # else: | |
336 # abstactENtext = "" | |
337 # | |
338 | 339 |
339 ret.append((objId,text.text,vol.text,link,abstractTexts)) | 340 authors=[] |
341 for author in authorsTags: | |
342 | |
343 gn= author.find(givenNamepath).text | |
344 fn= author.find(familyNamepath).text | |
345 | |
346 authors.append((fn,gn)) | |
347 | |
348 | |
349 titleTag = citation.find(titlepath) | |
350 | |
351 | |
352 | |
353 if titleTag is not None: | |
354 title = titleTag.text | |
355 else: | |
356 title="" | |
357 | |
358 | |
359 issuedTag = citation.find(issuedpath) | |
360 | |
361 | |
362 | |
363 if issuedTag is not None: | |
364 issued = issuedTag.text | |
365 else: | |
366 issued="" | |
367 | |
368 | |
369 | |
370 ret.append((objId,{"citation":text.text,"volume":vol.text, | |
371 "link":link, | |
372 "abstracts":abstractTexts, | |
373 "authors":authors, | |
374 "title":title, | |
375 "year":issued})) | |
340 | 376 |
341 | 377 |
342 def cmpret(x,y): #sort by preprint number | 378 def cmpret(x,y): #sort by preprint number |
343 try: | 379 try: |
344 return -cmp(int(x[2]),int(y[2])) | 380 return -cmp(int(x[2]),int(y[2])) |