Mercurial > hg > documentViewer
annotate documentViewer.py @ 494:ecdb238aa595 roc_1
added retry when reading index meta from texter applet
author | casties |
---|---|
date | Tue, 13 Jun 2006 16:57:46 +0200 |
parents | 96f74b2bab24 |
children |
rev | line source |
---|---|
0 | 1 from OFS.Folder import Folder |
2 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate | |
3 from Products.PageTemplates.PageTemplateFile import PageTemplateFile | |
4 from AccessControl import ClassSecurityInfo | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
5 from AccessControl import getSecurityManager |
0 | 6 from Globals import package_home |
7 | |
8 from Ft.Xml.Domlette import NonvalidatingReader | |
9 from Ft.Xml.Domlette import PrettyPrint, Print | |
10 from Ft.Xml import EMPTY_NAMESPACE | |
11 | |
12 import Ft.Xml.XPath | |
13 | |
14 import os.path | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
15 import sys |
0 | 16 import cgi |
17 import urllib | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
18 import zLOG |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
19 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
20 def getInt(number, default=0): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
21 """returns always an int (0 in case of problems)""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
22 try: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
23 return int(number) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
24 except: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
25 return default |
0 | 26 |
27 def getTextFromNode(nodename): | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
28 if nodename is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
29 return "" |
0 | 30 nodelist=nodename.childNodes |
31 rc = "" | |
32 for node in nodelist: | |
33 if node.nodeType == node.TEXT_NODE: | |
34 rc = rc + node.data | |
35 return rc | |
36 | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
37 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
38 def getParentDir(path): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
39 """returns pathname shortened by one""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
40 return '/'.join(path.split('/')[0:-1]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
41 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
42 |
0 | 43 import socket |
44 | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
45 def urlopen(url,timeout=2): |
0 | 46 """urlopen mit timeout""" |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
47 socket.setdefaulttimeout(timeout) |
0 | 48 ret=urllib.urlopen(url) |
49 socket.setdefaulttimeout(5) | |
50 return ret | |
51 | |
52 | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
53 ## |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
54 ## documentViewer class |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
55 ## |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
56 class documentViewer(Folder): |
0 | 57 """document viewer""" |
58 | |
59 meta_type="Document viewer" | |
60 | |
61 security=ClassSecurityInfo() | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
62 manage_options=Folder.manage_options+( |
0 | 63 {'label':'main config','action':'changeDocumentViewerForm'}, |
64 ) | |
65 | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
66 # templates and forms |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
67 viewer_main = PageTemplateFile('zpt/viewer_main', globals()) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
68 thumbs_main = PageTemplateFile('zpt/thumbs_main', globals()) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
69 image_main = PageTemplateFile('zpt/image_main', globals()) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
70 head_main = PageTemplateFile('zpt/head_main', globals()) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
71 docuviewer_css = PageTemplateFile('css/docuviewer.css', globals()) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
72 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
73 security.declareProtected('View management screens','changeDocumentViewerForm') |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
74 changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals()) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
75 |
0 | 76 |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
77 def __init__(self,id,imageViewerUrl,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=10,authgroups="mpiwg"): |
0 | 78 """init document viewer""" |
79 self.id=id | |
80 self.title=title | |
81 self.imageViewerUrl=imageViewerUrl | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
82 if not digilibBaseUrl: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
83 self.digilibBaseUrl = self.findDigilibUrl() |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
84 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
85 self.digilibBaseUrl = digilibBaseUrl |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
86 self.thumbcols = thumbcols |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
87 self.thumbrows = thumbrows |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
88 # authgroups is list of authorized groups (delimited by ,) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
89 self.authgroups = [s.strip().lower() for s in authgroups.split(',')] |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
90 # add template folder so we can always use template.something |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
91 self.manage_addFolder('template') |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
92 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
93 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
94 security.declareProtected('View','index_html') |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
95 def index_html(self,mode,url,start=None,pn=1): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
96 ''' |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
97 view it |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
98 @param mode: defines which type of document is behind url |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
99 @param url: url which contains display information |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
100 ''' |
0 | 101 |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
102 zLOG.LOG("documentViewer (index)", zLOG.INFO, "mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
103 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
104 if not hasattr(self, 'template'): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
105 # create template folder if it doesn't exist |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
106 self.manage_addFolder('template') |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
107 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
108 if not self.digilibBaseUrl: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
109 self.digilibBaseUrl = self.findDigilibUrl() or "http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
110 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
111 docinfo = self.getDocinfo(mode=mode,url=url) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
112 pageinfo = self.getPageinfo(start=start,current=pn,docinfo=docinfo) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
113 pt = getattr(self.template, 'viewer_main') |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
114 return pt(docinfo=docinfo,pageinfo=pageinfo) |
0 | 115 |
116 | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
117 def getLink(self,param=None,val=None): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
118 """link to documentviewer with parameter param set to val""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
119 params=self.REQUEST.form.copy() |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
120 if param is not None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
121 if val is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
122 if params.has_key(param): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
123 del params[param] |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
124 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
125 params[param] = str(val) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
126 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
127 # quote values and assemble into query string |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
128 ps = "&".join(["%s=%s"%(k,urllib.quote(v)) for (k, v) in params.items()]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
129 url=self.REQUEST['URL1']+"?"+ps |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
130 return url |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
131 |
0 | 132 |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
133 def getStyle(self, idx, selected, style=""): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
134 """returns a string with the given style and append 'sel' if path == selected.""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
135 #zLOG.LOG("documentViewer (getstyle)", zLOG.INFO, "idx: %s selected: %s style: %s"%(idx,selected,style)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
136 if idx == selected: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
137 return style + 'sel' |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
138 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
139 return style |
0 | 140 |
141 | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
142 def isAccessible(self, docinfo): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
143 """returns if access to the resource is granted""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
144 access = docinfo.get('accessType', None) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
145 if access is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
146 # no information - no access |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
147 #TODO: check |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
148 return True |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
149 elif access == 'free': |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
150 return True |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
151 elif access in self.authgroups: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
152 # only local access -- only logged in users |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
153 user = getSecurityManager().getUser() |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
154 if user is not None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
155 #print "user: ", user |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
156 return (user.getUserName() != "Anonymous User") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
157 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
158 return False |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
159 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
160 zLOG.LOG("documentViewer (accessOK)", zLOG.INFO, "unknown access type %s"%access) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
161 return False |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
162 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
163 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
164 def getDirinfoFromDigilib(self,path,docinfo=None): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
165 """gibt param von dlInfo aus""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
166 if docinfo is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
167 docinfo = {} |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
168 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
169 imageUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
170 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
171 zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo from %s"%(imageUrl)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
172 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
173 for cnt in (1,2,3): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
174 try: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
175 dom = NonvalidatingReader.parseUri(imageUrl) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
176 break |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
177 except: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
178 zLOG.LOG("documentViewer (getdirinfofromdigilib)", zLOG.ERROR, "error reading %s (try %d)"%(imageUrl,cnt)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
179 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
180 raise IOError("Unable to get dir-info from %s"%(imageUrl)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
181 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
182 sizes=dom.xpath("//dir/size") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
183 zLOG.LOG("documentViewer (getparamfromdigilib)", zLOG.INFO, "dirInfo:size"%sizes) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
184 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
185 if sizes: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
186 docinfo['numPages'] = int(getTextFromNode(sizes[0])) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
187 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
188 docinfo['numPages'] = 0 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
189 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
190 return docinfo |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
191 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
192 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
193 def getIndexMeta(self, url): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
194 """returns dom of index.meta document at url""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
195 num_retries = 3 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
196 dom = None |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
197 metaUrl = None |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
198 if url.startswith("http://"): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
199 # real URL |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
200 metaUrl = url |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
201 try: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
202 dom = NonvalidatingReader.parseUri(url) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
203 except: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
204 zLOG.LOG("documentViewer (getIndexMata)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
205 raise IOError("Unable to read index.meta from %s"%(url)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
206 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
207 # online path |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
208 server=self.digilibBaseUrl+"/servlet/Texter?fn=" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
209 metaUrl=server+url |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
210 if not metaUrl.endswith("index.meta"): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
211 metaUrl += "/index.meta" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
212 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
213 for n in range(num_retries): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
214 try: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
215 dom = NonvalidatingReader.parseUri(metaUrl) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
216 zLOG.LOG("documentViewer (getIndexMata)", zLOG.INFO,metaUrl) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
217 break |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
218 except: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
219 zLOG.LOG("ERROR documentViewer (getIndexMata)", zLOG.INFO,"%s (%s)"%sys.exc_info()[0:2]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
220 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
221 if dom is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
222 raise IOError("Unable to read index meta from %s"%(url)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
223 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
224 return dom |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
225 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
226 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
227 def getAuthinfoFromIndexMeta(self,path,docinfo=None,dom=None): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
228 """gets authorization info from the index.meta file at path or given by dom""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
229 zLOG.LOG("documentViewer (getauthinfofromindexmeta)", zLOG.INFO,"path: %s"%(path)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
230 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
231 access = None |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
232 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
233 if docinfo is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
234 docinfo = {} |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
235 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
236 if dom is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
237 dom = self.getIndexMeta(getParentDir(path)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
238 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
239 acctype = dom.xpath("//access-conditions/access/@type") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
240 if acctype and (len(acctype)>0): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
241 access=acctype[0].value |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
242 if access in ['group', 'institution']: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
243 access = getTextFromNode(dom.xpath("//access-conditions/access/name")[0]).lower() |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
244 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
245 docinfo['accessType'] = access |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
246 return docinfo |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
247 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
248 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
249 def getBibinfoFromIndexMeta(self,path,docinfo=None,dom=None): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
250 """gets bibliographical info from the index.meta file at path or given by dom""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
251 zLOG.LOG("documentViewer (getbibinfofromindexmeta)", zLOG.INFO,"path: %s"%(path)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
252 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
253 if docinfo is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
254 docinfo = {} |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
255 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
256 if dom is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
257 dom = self.getIndexMeta(getParentDir(path)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
258 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
259 metaData=self.metadata.main.meta.bib |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
260 bibtype=dom.xpath("//bib/@type") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
261 if bibtype and (len(bibtype)>0): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
262 bibtype=bibtype[0].value |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
263 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
264 bibtype="generic" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
265 bibtype=bibtype.replace("-"," ") # wrong typesiin index meta "-" instead of " " (not wrong! ROC) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
266 bibmap=metaData.generateMappingForType(bibtype) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
267 #print "bibmap: ", bibmap, " for: ", bibtype |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
268 # if there is no mapping bibmap is empty (mapping sometimes has empty fields) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
269 if len(bibmap) > 0 and len(bibmap['author'][0]) > 0: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
270 docinfo['author']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['author'][0])[0]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
271 docinfo['title']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['title'][0])[0]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
272 docinfo['year']=getTextFromNode(dom.xpath("//bib/%s"%bibmap['year'][0])[0]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
273 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
274 return docinfo |
0 | 275 |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
276 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
277 def getDocinfoFromTextTool(self,url,dom=None,docinfo=None): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
278 """parse texttool tag in index meta""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
279 zLOG.LOG("documentViewer (getdocinfofromtexttool)", zLOG.INFO,"url: %s"%(url)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
280 if docinfo is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
281 docinfo = {} |
0 | 282 |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
283 if dom is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
284 dom = self.getIndexMeta(url) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
285 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
286 archiveNames=dom.xpath("//resource/name") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
287 if archiveNames and (len(archiveNames)>0): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
288 archiveName=getTextFromNode(archiveNames[0]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
289 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
290 archivePaths=dom.xpath("//resource/archive-path") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
291 if archivePaths and (len(archivePaths)>0): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
292 archivePath=getTextFromNode(archivePaths[0]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
293 # clean up archive path |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
294 if archivePath[0] != '/': |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
295 archivePath = '/' + archivePath |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
296 if not archivePath.endswith(archiveName): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
297 archivePath += "/" + archiveName |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
298 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
299 archivePath=None |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
300 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
301 imageDirs=dom.xpath("//texttool/image") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
302 if imageDirs and (len(imageDirs)>0): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
303 imageDir=getTextFromNode(imageDirs[0]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
304 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
305 # we balk with no image tag |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
306 raise IOError("No text-tool info in %s"%(url)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
307 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
308 if imageDir and archivePath: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
309 #print "image: ", imageDir, " archivepath: ", archivePath |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
310 imageDir=os.path.join(archivePath,imageDir) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
311 imageDir=imageDir.replace("/mpiwg/online",'') |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
312 docinfo=self.getDirinfoFromDigilib(imageDir,docinfo=docinfo) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
313 docinfo['imagePath'] = imageDir |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
314 docinfo['imageURL'] = self.digilibBaseUrl+"/servlet/Scaler?fn="+imageDir |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
315 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
316 viewerUrls=dom.xpath("//texttool/digiliburlprefix") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
317 if viewerUrls and (len(viewerUrls)>0): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
318 viewerUrl=getTextFromNode(viewerUrls[0]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
319 docinfo['viewerURL'] = viewerUrl |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
320 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
321 textUrls=dom.xpath("//texttool/text") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
322 if textUrls and (len(textUrls)>0): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
323 textUrl=getTextFromNode(textUrls[0]) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
324 docinfo['textURL'] = textUrl |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
325 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
326 docinfo = self.getBibinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
327 docinfo = self.getAuthinfoFromIndexMeta(url,docinfo=docinfo,dom=dom) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
328 return docinfo |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
329 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
330 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
331 def getDocinfoFromImagePath(self,path,docinfo=None): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
332 """path ist the path to the images it assumes that the index.meta file is one level higher.""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
333 zLOG.LOG("documentViewer (getdocinfofromimagepath)", zLOG.INFO,"path: %s"%(path)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
334 if docinfo is None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
335 docinfo = {} |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
336 path=path.replace("/mpiwg/online","") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
337 docinfo['imagePath'] = path |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
338 docinfo=self.getDirinfoFromDigilib(path,docinfo=docinfo) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
339 imageUrl=self.digilibBaseUrl+"/servlet/Scaler?fn="+path |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
340 docinfo['imageURL'] = imageUrl |
0 | 341 |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
342 docinfo = self.getBibinfoFromIndexMeta(path,docinfo=docinfo) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
343 docinfo = self.getAuthinfoFromIndexMeta(path,docinfo=docinfo) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
344 return docinfo |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
345 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
346 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
347 def getDocinfo(self, mode, url): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
348 """returns docinfo depending on mode""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
349 zLOG.LOG("documentViewer (getdocinfo)", zLOG.INFO,"mode: %s, url: %s"%(mode,url)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
350 # look for cached docinfo in session |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
351 if self.REQUEST.SESSION.has_key('docinfo'): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
352 docinfo = self.REQUEST.SESSION['docinfo'] |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
353 # check if its still current |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
354 if docinfo is not None and docinfo.get('mode') == mode and docinfo.get('url') == url: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
355 zLOG.LOG("documentViewer (getdocinfo)", zLOG.INFO,"docinfo in session: %s"%docinfo) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
356 return docinfo |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
357 # new docinfo |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
358 docinfo = {'mode': mode, 'url': url} |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
359 if mode=="texttool": #index.meta with texttool information |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
360 docinfo = self.getDocinfoFromTextTool(url, docinfo=docinfo) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
361 elif mode=="imagepath": |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
362 docinfo = self.getDocinfoFromImagePath(url, docinfo=docinfo) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
363 else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
364 zLOG.LOG("documentViewer (getdocinfo)", zLOG.ERROR,"unknown mode!") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
365 raise ValueError("Unknown mode %s"%(mode)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
366 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
367 zLOG.LOG("documentViewer (getdocinfo)", zLOG.INFO,"docinfo: %s"%docinfo) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
368 self.REQUEST.SESSION['docinfo'] = docinfo |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
369 return docinfo |
0 | 370 |
371 | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
372 def getPageinfo(self, current, start=None, rows=None, cols=None, docinfo=None): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
373 """returns pageinfo with the given parameters""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
374 pageinfo = {} |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
375 current = getInt(current) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
376 pageinfo['current'] = current |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
377 rows = int(rows or self.thumbrows) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
378 pageinfo['rows'] = rows |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
379 cols = int(cols or self.thumbcols) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
380 pageinfo['cols'] = cols |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
381 grpsize = cols * rows |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
382 pageinfo['groupsize'] = grpsize |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
383 start = getInt(start, default=(int(current / grpsize) * grpsize +1)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
384 pageinfo['start'] = start |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
385 pageinfo['end'] = start + grpsize |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
386 if docinfo is not None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
387 np = int(docinfo['numPages']) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
388 pageinfo['end'] = min(pageinfo['end'], np) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
389 pageinfo['numgroups'] = int(np / grpsize) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
390 if np % grpsize > 0: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
391 pageinfo['numgroups'] += 1 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
392 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
393 return pageinfo |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
394 |
0 | 395 def text(self,mode,url,pn): |
396 """give text""" | |
397 if mode=="texttool": #index.meta with texttool information | |
398 (viewerUrl,imagepath,textpath)=parseUrlTextTool(url) | |
399 | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
400 #print textpath |
0 | 401 try: |
402 dom = NonvalidatingReader.parseUri(textpath) | |
403 except: | |
404 return None | |
405 | |
406 list=[] | |
407 nodes=dom.xpath("//pb") | |
408 | |
409 node=nodes[int(pn)-1] | |
410 | |
411 p=node | |
412 | |
413 while p.tagName!="p": | |
414 p=p.parentNode | |
415 | |
416 | |
417 endNode=nodes[int(pn)] | |
418 | |
419 | |
420 e=endNode | |
421 | |
422 while e.tagName!="p": | |
423 e=e.parentNode | |
424 | |
425 | |
426 next=node.parentNode | |
427 | |
428 #sammle s | |
429 while next and (next!=endNode.parentNode): | |
430 list.append(next) | |
431 next=next.nextSibling | |
432 list.append(endNode.parentNode) | |
433 | |
434 if p==e:# beide im selben paragraphen | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
435 pass |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
436 # else: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
437 # next=p |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
438 # while next!=e: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
439 # print next,e |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
440 # list.append(next) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
441 # next=next.nextSibling |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
442 # |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
443 # for x in list: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
444 # PrettyPrint(x) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
445 # |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
446 # return list |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
447 # |
0 | 448 |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
449 def findDigilibUrl(self): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
450 """try to get the digilib URL from zogilib""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
451 url = self.imageViewerUrl[:-1] + "/getScalerUrl" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
452 try: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
453 scaler = urlopen(url).read() |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
454 return scaler.replace("/servlet/Scaler?", "") |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
455 except: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
456 return None |
0 | 457 |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
458 def changeDocumentViewer(self,imageViewerUrl,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=10,authgroups='mpiwg',RESPONSE=None): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
459 """init document viewer""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
460 self.title=title |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
461 self.imageViewerUrl=imageViewerUrl |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
462 self.digilibBaseUrl = digilibBaseUrl |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
463 self.thumbrows = thumbrows |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
464 self.thumbcols = thumbcols |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
465 self.authgroups = [s.strip().lower() for s in authgroups.split(',')] |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
466 if RESPONSE is not None: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
467 RESPONSE.redirect('manage_main') |
0 | 468 |
469 | |
470 | |
471 | |
472 # security.declareProtected('View management screens','renameImageForm') | |
473 | |
474 def manage_AddDocumentViewerForm(self): | |
475 """add the viewer form""" | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
476 pt=PageTemplateFile('zpt/addDocumentViewer', globals()).__of__(self) |
0 | 477 return pt() |
478 | |
479 def manage_AddDocumentViewer(self,id,imageViewerUrl="",title="",RESPONSE=None): | |
480 """add the viewer""" | |
481 newObj=documentViewer(id,imageViewerUrl,title) | |
482 self._setObject(id,newObj) | |
483 | |
484 if RESPONSE is not None: | |
485 RESPONSE.redirect('manage_main') | |
494
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
486 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
487 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
488 ## |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
489 ## DocumentViewerTemplate class |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
490 ## |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
491 class DocumentViewerTemplate(ZopePageTemplate): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
492 """Template for document viewer""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
493 meta_type="DocumentViewer Template" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
494 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
495 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
496 def manage_addDocumentViewerTemplateForm(self): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
497 """Form for adding""" |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
498 pt=PageTemplateFile('zpt/addDocumentViewerTemplate', globals()).__of__(self) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
499 return pt() |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
500 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
501 def manage_addDocumentViewerTemplate(self, id='viewer_main', title=None, text=None, |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
502 REQUEST=None, submit=None): |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
503 "Add a Page Template with optional file content." |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
504 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
505 self._setObject(id, DocumentViewerTemplate(id)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
506 ob = getattr(self, id) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
507 ob.pt_edit(open(os.path.join(package_home(globals()),'zpt/viewer_main.zpt')).read(),None) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
508 if title: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
509 ob.pt_setTitle(title) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
510 try: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
511 u = self.DestinationURL() |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
512 except AttributeError: |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
513 u = REQUEST['URL1'] |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
514 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
515 u = "%s/%s" % (u, urllib.quote(id)) |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
516 REQUEST.RESPONSE.redirect(u+'/manage_main') |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
517 return '' |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
518 |
ecdb238aa595
added retry when reading index meta from texter applet
casties
parents:
0
diff
changeset
|
519 |
0 | 520 |