Mercurial > hg > documentViewer
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 |