comparison MpdlXmlTextServer.py @ 482:7ca8ac7db06e elementtree

more new template stuff. more batching methods in documentViewer.
author casties
date Tue, 16 Aug 2011 18:27:08 +0200
parents cd37d6f8d5e8
children 29c6d09a506c
comparison
equal deleted inserted replaced
481:0a0f7f570f90 482:7ca8ac7db06e
477 # store XML in docinfo 477 # store XML in docinfo
478 docinfo['tocXML_%s'%mode] = ET.tostring(pagediv, 'UTF-8') 478 docinfo['tocXML_%s'%mode] = ET.tostring(pagediv, 'UTF-8')
479 479
480 return docinfo 480 return docinfo
481 481
482 def getTocPage(self, mode="text", pn=0, pageinfo=None, docinfo=None): 482 def getTocPage(self, mode="text", pn=None, start=None, size=None, pageinfo=None, docinfo=None):
483 """returns single page from the table of contents""" 483 """returns single page from the table of contents"""
484 logging.debug("getTocPage mode=%s, pn=%s"%(mode,pn)) 484 logging.debug("getTocPage mode=%s, pn=%s"%(mode,pn))
485 if mode == "text": 485 if mode == "text":
486 queryType = "toc" 486 queryType = "toc"
487 else: 487 else:
492 self.getToc(mode=mode, docinfo=docinfo) 492 self.getToc(mode=mode, docinfo=docinfo)
493 493
494 tocxml = docinfo.get('tocXML_%s'%mode, None) 494 tocxml = docinfo.get('tocXML_%s'%mode, None)
495 if not tocxml: 495 if not tocxml:
496 logging.error("getTocPage: unable to find tocXML") 496 logging.error("getTocPage: unable to find tocXML")
497 return "No ToC" 497 return "Error: no table of contents!"
498 498
499 pagesize = pageinfo['tocPageSize'] 499 if size is None:
500 tocPN = pageinfo['tocPN'] 500 size = pageinfo.get('tocPageSize', 30)
501 if not pn: 501
502 pn = tocPN 502 if start is None:
503 start = (pn - 1) * size
503 504
504 fulltoc = ET.fromstring(tocxml) 505 fulltoc = ET.fromstring(tocxml)
505 506
506 if fulltoc: 507 if fulltoc:
507 # paginate 508 # paginate
508 start = (pn - 1) * pagesize * 2 509 first = (start - 1) * 2
509 len = pagesize * 2 510 len = size * 2
510 del fulltoc[:start] 511 del fulltoc[:first]
511 del fulltoc[len:] 512 del fulltoc[len:]
512 tocdivs = fulltoc 513 tocdivs = fulltoc
513 514
514 # check all a-tags 515 # check all a-tags
515 links = tocdivs.findall(".//a") 516 links = tocdivs.findall(".//a")
523 url = self.getLink('pn', m.group(1)) 524 url = self.getLink('pn', m.group(1))
524 l.set('href', url) 525 l.set('href', url)
525 else: 526 else:
526 logging.warning("getTocPage: Problem with link=%s"%href) 527 logging.warning("getTocPage: Problem with link=%s"%href)
527 528
528 return serialize(tocdivs) 529 # fix two-divs-per-row with containing div
530 newtoc = ET.Element('div', {'class':'queryResultPage'})
531 for (d1,d2) in zip(tocdivs[::2],tocdivs[1::2]):
532 e = ET.Element('div',{'class':'tocline'})
533 e.append(d1)
534 e.append(d2)
535 newtoc.append(e)
536
537 return serialize(newtoc)
538
539 return "ERROR: no table of contents!"
529 540
530 541
531 def manage_changeMpdlXmlTextServer(self,title="",serverUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,RESPONSE=None): 542 def manage_changeMpdlXmlTextServer(self,title="",serverUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,RESPONSE=None):
532 """change settings""" 543 """change settings"""
533 self.title=title 544 self.title=title