annotate MpiwgXmlTextServer.py @ 567:8b1e20bf300d

more new textserver
author casties
date Thu, 11 Oct 2012 10:21:49 +0200
parents 4a31608f8b0e
children 694935574177
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
1 from OFS.SimpleItem import SimpleItem
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
2 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
3
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
4 import xml.etree.ElementTree as ET
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
5
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
6 import re
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
7 import logging
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
8 import urllib
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
9 import urlparse
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
10 import base64
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
11
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
12 from SrvTxtUtils import getInt, getText, getHttpData
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
13
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
14 def serialize(node):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
15 """returns a string containing an XML snippet of node"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
16 s = ET.tostring(node, 'UTF-8')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
17 # snip off XML declaration
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
18 if s.startswith('<?xml'):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
19 i = s.find('?>')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
20 return s[i+3:]
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
21
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
22 return s
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
23
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
24
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
25 class MpiwgXmlTextServer(SimpleItem):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
26 """TextServer implementation for MPIWG-XML server"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
27 meta_type="MPIWG-XML TextServer"
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
28
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
29 manage_options=(
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
30 {'label':'Config','action':'manage_changeMpiwgXmlTextServerForm'},
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
31 )+SimpleItem.manage_options
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
32
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
33 manage_changeMpiwgXmlTextServerForm = PageTemplateFile("zpt/manage_changeMpiwgXmlTextServer", globals())
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
34
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
35 def __init__(self,id,title="",serverUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpiwg-mpdl-cms-web/", timeout=40, serverName=None, repositoryType='production'):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
36 """constructor"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
37 self.id=id
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
38 self.title=title
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
39 self.timeout = timeout
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
40 self.repositoryType = repositoryType
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
41 if serverName is None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
42 self.serverUrl = serverUrl
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
43 else:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
44 self.serverUrl = "http://%s/mpiwg-mpdl-cms-web/"%serverName
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
45
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
46 def getHttpData(self, url, data=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
47 """returns result from url+data HTTP request"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
48 return getHttpData(url,data,timeout=self.timeout)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
49
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
50 def getServerData(self, method, data=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
51 """returns result from text server for method+data"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
52 url = self.serverUrl+method
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
53 return getHttpData(url,data,timeout=self.timeout)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
54
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
55
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
56 def getRepositoryType(self):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
57 """returns the repository type, e.g. 'production'"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
58 return self.repositoryType
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
59
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
60 def getTextDownloadUrl(self, type='xml', docinfo=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
61 """returns a URL to download the current text"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
62 docpath = docinfo.get('textURLPath', None)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
63 if not docpath:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
64 return None
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
65
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
66 docpath = docpath.replace('.xml','.'+type)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
67 url = '%sdoc/GetDocument?id=%s'%(self.serverUrl.replace('interface/',''), docpath)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
68 return url
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
69
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
70
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
71 def getPlacesOnPage(self, docinfo=None, pn=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
72 """Returns list of GIS places of page pn"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
73 #FIXME!
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
74 docpath = docinfo.get('textURLPath',None)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
75 if not docpath:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
76 return None
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
77
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
78 places=[]
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
79 text=self.getServerData("xpath.xql", "document=%s&xpath=//place&pn=%s"%(docpath,pn))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
80 dom = ET.fromstring(text)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
81 result = dom.findall(".//resultPage/place")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
82 for l in result:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
83 id = l.get("id")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
84 name = l.text
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
85 place = {'id': id, 'name': name}
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
86 places.append(place)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
87
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
88 return places
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
89
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
90
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
91 def getTextInfo(self, mode=None, docinfo=None):
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
92 """reads document info, including page concordance, from text server"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
93 logging.debug("getTextInfo mode=%s"%mode)
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
94
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
95 field = ''
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
96 if mode in ['pages', 'toc', 'figures']:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
97 # translate mode to field param
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
98 field = '&field=%s'%mode
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
99 else:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
100 mode = None
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
101
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
102 # check cached info
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
103 if mode:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
104 # cached toc-request?
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
105 if 'full_%s'%mode in docinfo:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
106 return docinfo
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
107
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
108 else:
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
109 # cached but no toc-request?
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
110 if 'numTextPages' in docinfo:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
111 return docinfo
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
112
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
113 docpath = docinfo.get('textURLPath', None)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
114 if docpath is None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
115 logging.error("getTextInfo: no textURLPath!")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
116 return docinfo
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
117
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
118 # fetch docinfo
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
119 pagexml = self.getServerData("query/GetDocInfo","docId=%s%s"%(docpath,field))
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
120 dom = ET.fromstring(pagexml)
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
121 # all info in tag <doc>
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
122 doc = dom
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
123 if doc is None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
124 logging.error("getTextInfo: unable to find document-tag!")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
125 else:
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
126 if mode is None:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
127 # get general info from system-tag
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
128 cp = doc.find('system/countPages')
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
129 if cp is not None:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
130 docinfo['numTextPages'] = getInt(cp.text)
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
131
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
132 else:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
133 # result is in list-tag
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
134 l = doc.find('list')
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
135 if l is not None:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
136 lt = l.get('type')
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
137 # pageNumbers
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
138 if lt == 'pages':
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
139 # contains tags with page numbers
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
140 # <item n="14" o="2" o-norm="2" file="0014"/>
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
141 # n=scan number, o=original page no, on=normalized original page no
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
142 # pageNumbers is a dict indexed by scan number
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
143 pages = {}
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
144 for i in l:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
145 page = {}
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
146 pn = getInt(i.get('n'))
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
147 page['pn'] = pn
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
148 no = getInt(i.get('o'))
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
149 page['no'] = no
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
150 non = getInt(i.get('o-norm'))
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
151 page['non'] = non
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
152
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
153 if pn > 0:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
154 pages[pn] = page
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
155
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
156 docinfo['pageNumbers'] = pages
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
157 logging.debug("got pageNumbers=%s"%repr(pages))
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
158
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
159 # toc
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
160 elif name == 'toc':
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
161 # contains tags with table of contents/figures
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
162 # <toc-entry><page>13</page><level>3</level><content>Chapter I</content><level-string>1.</level-string><real-level>1</real-level></toc-entry>
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
163 tocs = []
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
164 for te in tag:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
165 toc = {}
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
166 for t in te:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
167 if t.tag == 'page':
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
168 toc['pn'] = getInt(t.text)
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
169 elif t.tag == 'level':
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
170 toc['level'] = t.text
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
171 elif t.tag == 'content':
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
172 toc['content'] = t.text
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
173 elif t.tag == 'level-string':
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
174 toc['level-string'] = t.text
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
175 elif t.tag == 'real-level':
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
176 toc['real-level'] = t.text
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
177
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
178 tocs.append(toc)
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
179
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
180 # save as full_toc/full_figures
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
181 docinfo['full_%s'%mode] = tocs
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
182
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
183 return docinfo
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
184
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
185
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
186 def processPageInfo(self, dom, docinfo, pageinfo):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
187 """processes page info divs from dom and stores in docinfo and pageinfo"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
188 # assume first second level div is pageMeta
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
189 alldivs = dom.find("div")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
190
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
191 if alldivs is None or alldivs.get('class', '') != 'pageMeta':
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
192 logging.error("processPageInfo: pageMeta div not found!")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
193 return
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
194
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
195 for div in alldivs:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
196 dc = div.get('class')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
197
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
198 # pageNumberOrig
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
199 if dc == 'pageNumberOrig':
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
200 pageinfo['pageNumberOrig'] = div.text
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
201
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
202 # pageNumberOrigNorm
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
203 elif dc == 'pageNumberOrigNorm':
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
204 pageinfo['pageNumberOrigNorm'] = div.text
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
205
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
206 # pageHeaderTitle
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
207 elif dc == 'pageHeaderTitle':
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
208 pageinfo['pageHeaderTitle'] = div.text
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
209
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
210 #logging.debug("processPageInfo: pageinfo=%s"%repr(pageinfo))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
211 return
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
212
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
213
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
214 def getTextPage(self, mode="text", pn=1, docinfo=None, pageinfo=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
215 """returns single page from fulltext"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
216
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
217 logging.debug("getTextPage mode=%s, pn=%s"%(mode,pn))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
218 # check for cached text -- but ideally this shouldn't be called twice
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
219 if pageinfo.has_key('textPage'):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
220 logging.debug("getTextPage: using cached text")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
221 return pageinfo['textPage']
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
222
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
223 docpath = docinfo.get('textURLPath', None)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
224 if not docpath:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
225 return None
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
226
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
227 # just checking
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
228 if pageinfo['current'] != pn:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
229 logging.warning("getTextPage: current!=pn!")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
230
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
231 # stuff for constructing full urls
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
232 selfurl = docinfo['viewerUrl']
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
233 textParams = {'docId': docpath,
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
234 'page': pn}
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
235
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
236 if 'characterNormalization' in pageinfo:
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
237 cn = pageinfo['characterNormalization']
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
238 # TODO: change values in form
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
239 if cn == 'regPlusNorm':
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
240 cn = 'norm'
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
241
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
242 textParams['normalization'] = cn
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
243
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
244 if not mode:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
245 # default is dict
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
246 mode = 'text'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
247
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
248 modes = mode.split(',')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
249 # check for multiple layers
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
250 if len(modes) > 1:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
251 logging.debug("getTextPage: more than one mode=%s"%mode)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
252
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
253 # search mode
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
254 if 'search' in modes:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
255 # add highlighting
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
256 highlightQuery = pageinfo.get('highlightQuery', None)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
257 if highlightQuery:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
258 textParams['highlightQuery'] = highlightQuery
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
259 textParams['highlightElem'] = pageinfo.get('highlightElement', '')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
260 textParams['highlightElemPos'] = pageinfo.get('highlightElementPos', '')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
261
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
262 # ignore mode in the following
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
263 modes.remove('search')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
264
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
265 # pundit mode
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
266 punditMode = False
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
267 if 'pundit' in modes:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
268 punditMode = True
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
269 # ignore mode in the following
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
270 modes.remove('pundit')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
271
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
272 # other modes don't combine
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
273 if 'dict' in modes:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
274 textmode = 'dict'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
275 textParams['mode'] = 'tokenized'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
276 textParams['outputFormat'] = 'html'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
277 elif 'xml' in modes:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
278 textmode = 'xml'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
279 textParams['mode'] = 'untokenized'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
280 textParams['outputFormat'] = 'xmlDisplay'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
281 textParams['normalization'] = 'orig'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
282 elif 'gis' in modes:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
283 #FIXME!
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
284 textmode = 'gis'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
285 else:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
286 # text is default mode
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
287 textmode = 'text'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
288 textParams['mode'] = 'untokenized'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
289 textParams['outputFormat'] = 'html'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
290
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
291 # fetch the page
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
292 pagexml = self.getServerData("query/GetPage",urllib.urlencode(textParams))
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
293 try:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
294 dom = ET.fromstring(pagexml)
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
295 except Exception, e:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
296 logging.error("Error parsing page: %s"%e)
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
297 return None
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
298
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
299 pagediv = None
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
300 body = dom.find('.//body')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
301 if body is None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
302 logging.error("getTextPage: no body!")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
303 return None
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
304
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
305 # the text is in div@class=text
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
306 pagediv = body.find(".//div[@class='text']")
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
307 logging.debug("pagediv: %s"%repr(pagediv))
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
308
566
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
309 # plain text or text-with-links mode
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
310 if textmode == "text" or textmode == "dict":
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
311 if pagediv is not None:
567
8b1e20bf300d more new textserver
casties
parents: 566
diff changeset
312 #self._processPbTag(pagediv, pageinfo)
566
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
313 self._processFigures(pagediv, docinfo)
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
314 #self._fixEmptyDivs(pagediv)
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
315 # get full url assuming documentViewer is parent
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
316 selfurl = self.getLink()
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
317 # check all a-tags
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
318 links = pagediv.findall('.//a')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
319 for l in links:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
320 href = l.get('href')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
321 if href:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
322 # is link with href
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
323 linkurl = urlparse.urlparse(href)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
324 if linkurl.path.endswith('GetDictionaryEntries'):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
325 #TODO: replace wordInfo page
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
326 # is dictionary link - change href (keeping parameters)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
327 #l.set('href', href.replace('http://mpdl-proto.mpiwg-berlin.mpg.de/mpdl/interface/lt/wordInfo.xql','%s/template/viewer_wordinfo'%viewerurl))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
328 # add target to open new page
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
329 l.set('target', '_blank')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
330
566
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
331 elif href.startswith('#note-'):
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
332 # note link FIXME!
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
333 l.set('href', href.replace('#note-',"%s#note-"%selfurl))
566
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
334
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
335 if punditMode:
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
336 self._addPunditAttributes(pagediv, pageinfo, docinfo)
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
337
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
338 return serialize(pagediv)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
339
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
340 # xml mode
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
341 elif textmode == "xml":
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
342 if pagediv is not None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
343 return serialize(pagediv)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
344
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
345 # pureXml mode WTF?
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
346 elif textmode == "pureXml":
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
347 if pagediv is not None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
348 return serialize(pagediv)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
349
566
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
350 # gis mode FIXME!
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
351 elif textmode == "gis":
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
352 if pagediv is not None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
353 # fix empty div tags
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
354 self._fixEmptyDivs(pagediv)
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
355 # check all a-tags
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
356 links = pagediv.findall(".//a")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
357 # add our URL as backlink
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
358 selfurl = self.getLink()
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
359 doc = base64.b64encode(selfurl)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
360 for l in links:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
361 href = l.get('href')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
362 if href:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
363 if href.startswith('http://mappit.mpiwg-berlin.mpg.de'):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
364 l.set('href', re.sub(r'doc=[\w+/=]+', 'doc=%s'%doc, href))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
365 l.set('target', '_blank')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
366
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
367 return serialize(pagediv)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
368
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
369 return None
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
370
566
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
371 def _processPbTag(self, pagediv, pageinfo):
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
372 """extracts information from pb-tag and removes it from pagediv"""
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
373 pbdiv = pagediv.find(".//span[@class='pb']")
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
374 if pbdiv is None:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
375 logging.warning("getTextPage: no pb-span!")
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
376 return pagediv
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
377
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
378 # extract running head
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
379 rh = pbdiv.find(".//span[@class='rhead']")
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
380 if rh is not None:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
381 pageinfo['pageHeaderTitle'] = getText(rh)
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
382
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
383 # remove pb-div from parent
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
384 ppdiv = pagediv.find(".//span[@class='pb']/..")
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
385 ppdiv.remove(pbdiv)
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
386 return pagediv
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
387
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
388 def _addPunditAttributes(self, pagediv, pageinfo, docinfo):
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
389 """add about attributes for pundit annotation tool"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
390 textid = docinfo.get('DRI', "fn=%s"%docinfo.get('documentPath', '???'))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
391 pn = pageinfo.get('pn', '1')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
392 # TODO: use pn as well?
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
393 # check all div-tags
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
394 divs = pagediv.findall(".//div")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
395 for d in divs:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
396 id = d.get('id')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
397 if id:
566
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
398 # TODO: check path (cf RFC2396)
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
399 d.set('about', "http://echo.mpiwg-berlin.mpg.de/%s/pn=%s/#%s"%(textid,pn,id))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
400 cls = d.get('class','')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
401 cls += ' pundit-content'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
402 d.set('class', cls.strip())
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
403
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
404 return pagediv
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
405
566
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
406 def _processFigures(self, pagediv, docinfo):
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
407 """processes figure-tags"""
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
408 divs = pagediv.findall(".//span[@class='figure']")
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
409 scalerUrl = docinfo['digilibScalerUrl']
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
410 viewerUrl = docinfo['digilibViewerUrl']
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
411 for d in divs:
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
412 try:
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
413 a = d.find('a')
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
414 img = a.find('img')
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
415 imgsrc = img.get('src')
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
416 imgurl = urlparse.urlparse(imgsrc)
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
417 imgq = imgurl.query
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
418 imgparams = urlparse.parse_qs(imgq)
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
419 fn = imgparams.get('fn', None)
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
420 if fn is not None:
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
421 # parse_qs puts parameters in lists
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
422 fn = fn[0]
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
423 # TODO: check valid path
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
424 # fix img@src
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
425 newsrc = '%s?fn=%s&dw=200&dh=200'%(scalerUrl,fn)
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
426 img.set('src', newsrc)
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
427 # fix a@href
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
428 newlink = '%s?fn=%s'%(viewerUrl,fn)
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
429 a.set('href', newlink)
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
430 a.set('target', '_blank')
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
431
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
432 except:
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
433 logging.warn("processFigures: strange figure!")
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
434
4a31608f8b0e more new MpiwgXmlTextServer.
casties
parents: 565
diff changeset
435
565
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
436 def _fixEmptyDivs(self, pagediv):
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
437 """fixes empty div-tags by inserting a space"""
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
438 divs = pagediv.findall('.//div')
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
439 for d in divs:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
440 if len(d) == 0 and not d.text:
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
441 # make empty divs non-empty
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
442 d.text = ' '
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
443
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
444 return pagediv
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
445
1b483194901c more new MpiwgXmlTextServer.
casties
parents: 564
diff changeset
446
564
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
447 def getSearchResults(self, mode, query=None, pageinfo=None, docinfo=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
448 """loads list of search results and stores XML in docinfo"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
449
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
450 logging.debug("getSearchResults mode=%s query=%s"%(mode, query))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
451 if mode == "none":
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
452 return docinfo
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
453
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
454 cachedQuery = docinfo.get('cachedQuery', None)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
455 if cachedQuery is not None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
456 # cached search result
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
457 if cachedQuery == '%s_%s'%(mode,query):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
458 # same query
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
459 return docinfo
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
460
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
461 else:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
462 # different query
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
463 del docinfo['resultSize']
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
464 del docinfo['resultXML']
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
465
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
466 # cache query
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
467 docinfo['cachedQuery'] = '%s_%s'%(mode,query)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
468
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
469 # fetch full results
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
470 docpath = docinfo['textURLPath']
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
471 params = {'document': docpath,
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
472 'mode': 'text',
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
473 'queryType': mode,
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
474 'query': query,
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
475 'queryResultPageSize': 1000,
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
476 'queryResultPN': 1,
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
477 'characterNormalization': pageinfo.get('characterNormalization', 'reg')}
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
478 pagexml = self.getServerData("doc-query.xql",urllib.urlencode(params))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
479 #pagexml = self.getServerData("doc-query.xql","document=%s&mode=%s&queryType=%s&query=%s&queryResultPageSize=%s&queryResultPN=%s&s=%s&viewMode=%s&characterNormalization=%s&highlightElementPos=%s&highlightElement=%s&highlightQuery=%s"%(docpath, 'text', queryType, urllib.quote(query), pagesize, pn, s, viewMode,characterNormalization, highlightElementPos, highlightElement, urllib.quote(highlightQuery)))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
480 dom = ET.fromstring(pagexml)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
481 # page content is in <div class="queryResultPage">
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
482 pagediv = None
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
483 # ElementTree 1.2 in Python 2.6 can't do div[@class='queryResultPage']
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
484 alldivs = dom.findall("div")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
485 for div in alldivs:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
486 dc = div.get('class')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
487 # page content div
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
488 if dc == 'queryResultPage':
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
489 pagediv = div
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
490
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
491 elif dc == 'queryResultHits':
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
492 docinfo['resultSize'] = getInt(div.text)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
493
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
494 if pagediv is not None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
495 # store XML in docinfo
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
496 docinfo['resultXML'] = ET.tostring(pagediv, 'UTF-8')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
497
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
498 return docinfo
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
499
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
500
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
501 def getResultsPage(self, mode="text", query=None, pn=None, start=None, size=None, pageinfo=None, docinfo=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
502 """returns single page from the table of contents"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
503 logging.debug("getResultsPage mode=%s, pn=%s"%(mode,pn))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
504 # get (cached) result
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
505 self.getSearchResults(mode=mode, query=query, pageinfo=pageinfo, docinfo=docinfo)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
506
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
507 resultxml = docinfo.get('resultXML', None)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
508 if not resultxml:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
509 logging.error("getResultPage: unable to find resultXML")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
510 return "Error: no result!"
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
511
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
512 if size is None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
513 size = pageinfo.get('resultPageSize', 10)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
514
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
515 if start is None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
516 start = (pn - 1) * size
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
517
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
518 fullresult = ET.fromstring(resultxml)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
519
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
520 if fullresult is not None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
521 # paginate
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
522 first = start-1
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
523 len = size
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
524 del fullresult[:first]
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
525 del fullresult[len:]
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
526 tocdivs = fullresult
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
527
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
528 # check all a-tags
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
529 links = tocdivs.findall(".//a")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
530 for l in links:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
531 href = l.get('href')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
532 if href:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
533 # assume all links go to pages
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
534 linkUrl = urlparse.urlparse(href)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
535 linkParams = urlparse.parse_qs(linkUrl.query)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
536 # take some parameters
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
537 params = {'pn': linkParams['pn'],
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
538 'highlightQuery': linkParams.get('highlightQuery',''),
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
539 'highlightElement': linkParams.get('highlightElement',''),
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
540 'highlightElementPos': linkParams.get('highlightElementPos','')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
541 }
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
542 url = self.getLink(params=params)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
543 l.set('href', url)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
544
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
545 return serialize(tocdivs)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
546
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
547 return "ERROR: no results!"
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
548
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
549
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
550 def getToc(self, mode='text', docinfo=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
551 """returns list of table of contents from docinfo"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
552 logging.debug("getToc mode=%s"%mode)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
553 if mode == 'text':
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
554 queryType = 'toc'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
555 else:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
556 queryType = mode
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
557
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
558 if not 'full_%s'%queryType in docinfo:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
559 # get new toc
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
560 docinfo = self.getTextInfo(queryType, docinfo)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
561
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
562 return docinfo.get('full_%s'%queryType, [])
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
563
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
564 def getTocPage(self, mode='text', pn=None, start=None, size=None, pageinfo=None, docinfo=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
565 """returns single page from the table of contents"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
566 logging.debug("getTocPage mode=%s, pn=%s start=%s size=%s"%(mode,repr(pn),repr(start),repr(size)))
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
567 fulltoc = self.getToc(mode=mode, docinfo=docinfo)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
568 if len(fulltoc) < 1:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
569 logging.error("getTocPage: unable to find toc!")
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
570 return "Error: no table of contents!"
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
571
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
572 if size is None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
573 size = pageinfo.get('tocPageSize', 30)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
574
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
575 if start is None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
576 start = (pn - 1) * size
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
577
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
578 # paginate
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
579 first = (start - 1)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
580 last = first + size
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
581 tocs = fulltoc[first:last]
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
582 tp = '<div>'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
583 for toc in tocs:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
584 pageurl = self.getLink('pn', toc['pn'])
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
585 tp += '<div class="tocline">'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
586 tp += '<div class="toc name">[%s %s]</div>'%(toc['level-string'], toc['content'])
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
587 tp += '<div class="toc float right page"><a href="%s">Page: %s</a></div>'%(pageurl, toc['pn'])
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
588 tp += '</div>\n'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
589
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
590 tp += '</div>\n'
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
591
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
592 return tp
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
593
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
594
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
595 def manage_changeMpiwgXmlTextServer(self,title="",serverUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,repositoryType=None,RESPONSE=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
596 """change settings"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
597 self.title=title
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
598 self.timeout = timeout
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
599 self.serverUrl = serverUrl
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
600 if repositoryType:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
601 self.repositoryType = repositoryType
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
602 if RESPONSE is not None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
603 RESPONSE.redirect('manage_main')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
604
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
605 # management methods
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
606 def manage_addMpiwgXmlTextServerForm(self):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
607 """Form for adding"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
608 pt = PageTemplateFile("zpt/manage_addMpiwgXmlTextServer", globals()).__of__(self)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
609 return pt()
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
610
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
611 def manage_addMpiwgXmlTextServer(self,id,title="",serverUrl="http://mpdl-text.mpiwg-berlin.mpg.de/mpdl/interface/",timeout=40,RESPONSE=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
612 #def manage_addMpiwgXmlTextServer(self,id,title="",serverUrl="http://mpdl-text.mpiwg-berlin.mpg.de:30030/mpdl/interface/",timeout=40,RESPONSE=None):
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
613 """add zogiimage"""
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
614 newObj = MpiwgXmlTextServer(id=id,title=title,serverUrl=serverUrl,timeout=timeout)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
615 self.Destination()._setObject(id, newObj)
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
616 if RESPONSE is not None:
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
617 RESPONSE.redirect('manage_main')
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
618
31f562fa7214 first version of MpiwgXmlTextServer.
casties
parents:
diff changeset
619