# HG changeset patch # User casties # Date 1331575377 -3600 # Node ID 9a3cc3732194bc340d2e7aa1d31848c4ce10cd7e # Parent 91051b36b9cc90a948ff72c7b39261111e58c05a uses xml from doc-info.xql for table of contents now. diff -r 91051b36b9cc -r 9a3cc3732194 MpdlXmlTextServer.py --- a/MpdlXmlTextServer.py Mon Mar 12 19:01:14 2012 +0100 +++ b/MpdlXmlTextServer.py Mon Mar 12 19:02:57 2012 +0100 @@ -499,113 +499,10 @@ tp += '
Page: %s
'%(pageurl, toc['pn']) tp += '\n' - tp += '' + tp += '\n' return tp - - - def getToc_old(self, mode="text", docinfo=None): - """loads table of contents and stores XML in docinfo""" - logging.debug("getToc mode=%s"%mode) - if mode == "none": - return docinfo - - if 'tocSize_%s'%mode in docinfo: - # cached toc - return docinfo - - docpath = docinfo['textURLPath'] - # we need to set a result set size - pagesize = 1000 - pn = 1 - if mode == "text": - queryType = "toc" - else: - queryType = mode - # number of entries in toc - tocSize = 0 - tocDiv = None - # fetch full toc - pagexml = self.getServerData("doc-query.xql","document=%s&queryType=%s&queryResultPageSize=%s&queryResultPN=%s"%(docpath,queryType, pagesize, pn)) - dom = ET.fromstring(pagexml) - # page content is in
- pagediv = None - # ElementTree 1.2 in Python 2.6 can't do div[@class='queryResultPage'] - alldivs = dom.findall("div") - for div in alldivs: - dc = div.get('class') - # page content div - if dc == 'queryResultPage': - pagediv = div - - elif dc == 'queryResultHits': - docinfo['tocSize_%s'%mode] = getInt(div.text) - - if pagediv is not None: - # store XML in docinfo - docinfo['tocXML_%s'%mode] = ET.tostring(pagediv, 'UTF-8') - - return docinfo - - def getTocPage_old(self, mode="text", pn=None, start=None, size=None, pageinfo=None, docinfo=None): - """returns single page from the table of contents""" - logging.debug("getTocPage mode=%s, pn=%s"%(mode,pn)) - if mode == "text": - queryType = "toc" - else: - queryType = mode - - # check for cached TOC - if not docinfo.has_key('tocXML_%s'%mode): - self.getToc(mode=mode, docinfo=docinfo) - - tocxml = docinfo.get('tocXML_%s'%mode, None) - if not tocxml: - logging.error("getTocPage: unable to find tocXML") - return "Error: no table of contents!" - - if size is None: - size = pageinfo.get('tocPageSize', 30) - - if start is None: - start = (pn - 1) * size - - fulltoc = ET.fromstring(tocxml) - - if fulltoc is not None: - # paginate - first = (start - 1) * 2 - len = size * 2 - del fulltoc[:first] - del fulltoc[len:] - tocdivs = fulltoc - - # check all a-tags - links = tocdivs.findall(".//a") - for l in links: - href = l.get('href') - if href: - # take pn from href - m = re.match(r'page-fragment\.xql.*pn=(\d+)', href) - if m is not None: - # and create new url (assuming parent is documentViewer) - url = self.getLink('pn', m.group(1)) - l.set('href', url) - else: - logging.warning("getTocPage: Problem with link=%s"%href) - - # fix two-divs-per-row with containing div - newtoc = ET.Element('div', {'class':'queryResultPage'}) - for (d1,d2) in zip(tocdivs[::2],tocdivs[1::2]): - e = ET.Element('div',{'class':'tocline'}) - e.append(d1) - e.append(d2) - newtoc.append(e) - - return serialize(newtoc) - - return "ERROR: no table of contents!" - + def manage_changeMpdlXmlTextServer(self,title="",serverUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,RESPONSE=None): """change settings"""