annotate documentViewer.py @ 468:dc7c48912110 elementtree

attribution and copyright works mostly now
author casties
date Tue, 02 Aug 2011 18:29:15 +0200
parents 8b75d55582e8
children 15394486ab75
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dwinter
parents:
diff changeset
1 from OFS.Folder import Folder
dwinter
parents:
diff changeset
2 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
52
92047eaa6272 zLOG exchanged by logging
dwinter
parents: 51
diff changeset
3 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
0
dwinter
parents:
diff changeset
4 from AccessControl import ClassSecurityInfo
32
b25c89d693cf version 0.2.3 - first version with access control!
casties
parents: 31
diff changeset
5 from AccessControl import getSecurityManager
0
dwinter
parents:
diff changeset
6 from Globals import package_home
dwinter
parents:
diff changeset
7
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
8 #from Ft.Xml import EMPTY_NAMESPACE, Parse
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
9 #import Ft.Xml.Domlette
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
10
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
11 import xml.etree.ElementTree as ET
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
12
0
dwinter
parents:
diff changeset
13 import os.path
31
c6451e8d5d23 more small fixes - now version 0.2.2
casties
parents: 29
diff changeset
14 import sys
0
dwinter
parents:
diff changeset
15 import urllib
50
6c0f20cecc60 added evaluation of the presentation/info.xml in texttools
dwinter
parents: 49
diff changeset
16 import logging
61
f3d2f240692c fixed bug in calculation of group numbers
casties
parents: 59
diff changeset
17 import math
46
31059e3d9338 has now also a text mode viewMode=text
dwinter
parents: 45
diff changeset
18 import urlparse
174
5780092e4989 *** empty log message ***
dwinter
parents: 173
diff changeset
19 import re
389
114d40b358ab *** empty log message ***
abukhman
parents: 387
diff changeset
20 import string
231
a88ece9a5e74 *** empty log message ***
abukhman
parents: 230
diff changeset
21
458
48b135b089c8 more renovation
casties
parents: 457
diff changeset
22 from SrvTxtUtils import getInt, getText, getHttpData
48b135b089c8 more renovation
casties
parents: 457
diff changeset
23
52
92047eaa6272 zLOG exchanged by logging
dwinter
parents: 51
diff changeset
24 def logger(txt,method,txt2):
92047eaa6272 zLOG exchanged by logging
dwinter
parents: 51
diff changeset
25 """logging"""
92047eaa6272 zLOG exchanged by logging
dwinter
parents: 51
diff changeset
26 logging.info(txt+ txt2)
92047eaa6272 zLOG exchanged by logging
dwinter
parents: 51
diff changeset
27
92047eaa6272 zLOG exchanged by logging
dwinter
parents: 51
diff changeset
28
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
29 def serializeNode(node, encoding="utf-8"):
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
30 """returns a string containing node as XML"""
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
31 s = ET.tostring(node)
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
32
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
33 # 4Suite:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
34 # stream = cStringIO.StringIO()
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
35 # Ft.Xml.Domlette.Print(node, stream=stream, encoding=encoding)
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
36 # s = stream.getvalue()
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
37 # stream.close()
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
38 return s
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
39
387
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
40 def browserCheck(self):
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
41 """check the browsers request to find out the browser type"""
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
42 bt = {}
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
43 ua = self.REQUEST.get_header("HTTP_USER_AGENT")
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
44 bt['ua'] = ua
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
45 bt['isIE'] = False
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
46 bt['isN4'] = False
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
47 bt['versFirefox']=""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
48 bt['versIE']=""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
49 bt['versSafariChrome']=""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
50 bt['versOpera']=""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
51
387
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
52 if string.find(ua, 'MSIE') > -1:
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
53 bt['isIE'] = True
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
54 else:
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
55 bt['isN4'] = (string.find(ua, 'Mozilla/4.') > -1)
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
56 # Safari oder Chrome identification
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
57 try:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
58 nav = ua[string.find(ua, '('):]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
59 nav1=ua[string.find(ua,')'):]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
60 nav2=nav1[string.find(nav1,'('):]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
61 nav3=nav2[string.find(nav2,')'):]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
62 ie = string.split(nav, "; ")[1]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
63 ie1 =string.split(nav1, " ")[2]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
64 ie2 =string.split(nav3, " ")[1]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
65 ie3 =string.split(nav3, " ")[2]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
66 if string.find(ie3, "Safari") >-1:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
67 bt['versSafariChrome']=string.split(ie2, "/")[1]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
68 except: pass
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
69 # IE identification
387
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
70 try:
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
71 nav = ua[string.find(ua, '('):]
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
72 ie = string.split(nav, "; ")[1]
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
73 if string.find(ie, "MSIE") > -1:
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
74 bt['versIE'] = string.split(ie, " ")[1]
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
75 except:pass
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
76 # Firefox identification
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
77 try:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
78 nav = ua[string.find(ua, '('):]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
79 nav1=ua[string.find(ua,')'):]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
80 if string.find(ie1, "Firefox") >-1:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
81 nav5= string.split(ie1, "/")[1]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
82 logging.debug("FIREFOX: %s"%(nav5))
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
83 bt['versFirefox']=nav5[0:3]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
84 except:pass
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
85 #Opera identification
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
86 try:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
87 if string.find(ua,"Opera") >-1:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
88 nav = ua[string.find(ua, '('):]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
89 nav1=nav[string.find(nav,')'):]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
90 bt['versOpera']=string.split(nav1,"/")[2]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
91 except:pass
387
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
92
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
93 bt['isMac'] = string.find(ua, 'Macintosh') > -1
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
94 bt['isWin'] = string.find(ua, 'Windows') > -1
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
95 bt['isIEWin'] = bt['isIE'] and bt['isWin']
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
96 bt['isIEMac'] = bt['isIE'] and bt['isMac']
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
97 bt['staticHTML'] = False
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
98
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
99 return bt
234
0813585df9f4 *** empty log message ***
abukhman
parents: 231
diff changeset
100
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
101 def getParentPath(path, cnt=1):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
102 """returns pathname shortened by cnt"""
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
103 # make sure path doesn't end with /
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
104 path = path.rstrip('/')
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
105 # split by /, shorten, and reassemble
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
106 return '/'.join(path.split('/')[0:-cnt])
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
107
461
8732f15df5f3 more renovation
casties
parents: 460
diff changeset
108
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
109 ##
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
110 ## documentViewer class
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
111 ##
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
112 class documentViewer(Folder):
0
dwinter
parents:
diff changeset
113 """document viewer"""
dwinter
parents:
diff changeset
114 meta_type="Document viewer"
dwinter
parents:
diff changeset
115
dwinter
parents:
diff changeset
116 security=ClassSecurityInfo()
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
117 manage_options=Folder.manage_options+(
0
dwinter
parents:
diff changeset
118 {'label':'main config','action':'changeDocumentViewerForm'},
dwinter
parents:
diff changeset
119 )
463
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
120
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
121 metadataService = None
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
122 """MetaDataFolder instance"""
0
dwinter
parents:
diff changeset
123
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
124 # templates and forms
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
125 viewer_main = PageTemplateFile('zpt/viewer_main', globals())
90
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
126 toc_thumbs = PageTemplateFile('zpt/toc_thumbs', globals())
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
127 toc_text = PageTemplateFile('zpt/toc_text', globals())
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
128 toc_figures = PageTemplateFile('zpt/toc_figures', globals())
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
129 page_main_images = PageTemplateFile('zpt/page_main_images', globals())
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
130 page_main_double = PageTemplateFile('zpt/page_main_double', globals())
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
131 page_main_text = PageTemplateFile('zpt/page_main_text', globals())
90
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
132 page_main_text_dict = PageTemplateFile('zpt/page_main_text_dict', globals())
140
6345583d809a Gis mode
abukhman
parents: 137
diff changeset
133 page_main_gis =PageTemplateFile ('zpt/page_main_gis', globals())
99
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
134 page_main_xml = PageTemplateFile('zpt/page_main_xml', globals())
404
29a87dc92750 *** empty log message ***
abukhman
parents: 398
diff changeset
135 page_main_pureXml = PageTemplateFile('zpt/page_main_pureXml', globals())
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
136 head_main = PageTemplateFile('zpt/head_main', globals())
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
137 docuviewer_css = PageTemplateFile('css/docuviewer.css', globals())
57
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
138 info_xml = PageTemplateFile('zpt/info_xml', globals())
130
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
139
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
140
68
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
141 thumbs_main_rss = PageTemplateFile('zpt/thumbs_main_rss', globals())
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
142
0
dwinter
parents:
diff changeset
143
95
db6d594aa4d9 Last update with search function (getSearch)
abukhman
parents: 90
diff changeset
144 def __init__(self,id,imageScalerUrl=None,textServerName=None,title="",digilibBaseUrl=None,thumbcols=2,thumbrows=5,authgroups="mpiwg"):
0
dwinter
parents:
diff changeset
145 """init document viewer"""
dwinter
parents:
diff changeset
146 self.id=id
dwinter
parents:
diff changeset
147 self.title=title
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
148 self.thumbcols = thumbcols
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
149 self.thumbrows = thumbrows
32
b25c89d693cf version 0.2.3 - first version with access control!
casties
parents: 31
diff changeset
150 # authgroups is list of authorized groups (delimited by ,)
b25c89d693cf version 0.2.3 - first version with access control!
casties
parents: 31
diff changeset
151 self.authgroups = [s.strip().lower() for s in authgroups.split(',')]
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
152 # create template folder so we can always use template.something
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
153
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
154 templateFolder = Folder('template')
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
155 #self['template'] = templateFolder # Zope-2.12 style
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
156 self._setObject('template',templateFolder) # old style
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
157 try:
130
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
158 import MpdlXmlTextServer
132
39167e96e582 fixed creation of text server on __init__
casties
parents: 130
diff changeset
159 textServer = MpdlXmlTextServer.MpdlXmlTextServer(id='fulltextclient',serverName=textServerName)
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
160 #templateFolder['fulltextclient'] = xmlRpcClient
130
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
161 templateFolder._setObject('fulltextclient',textServer)
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
162 except Exception, e:
130
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
163 logging.error("Unable to create MpdlXmlTextServer for fulltextclient: "+str(e))
463
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
164
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
165 try:
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
166 from Products.zogiLib.zogiLib import zogiLib
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
167 zogilib = zogiLib(id="zogilib", title="zogilib for docuviewer", dlServerURL=imageScalerUrl, layout="book")
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
168 #templateFolder['zogilib'] = zogilib
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
169 templateFolder._setObject('zogilib',zogilib)
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
170 except Exception, e:
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
171 logging.error("Unable to create zogiLib for zogilib: "+str(e))
463
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
172
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
173 try:
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
174 # assume MetaDataFolder instance is called metadata
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
175 self.metadataService = getattr(self, 'metadata')
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
176 except Exception, e:
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
177 logging.error("Unable to find MetaDataFolder 'metadata': "+str(e))
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
178
130
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
179
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
180 # proxy text server methods to fulltextclient
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
181 def getTextPage(self, **args):
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
182 """get page"""
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
183 return self.template.fulltextclient.getTextPage(**args)
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
184
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
185 def getOrigPages(self, **args):
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
186 """get page"""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
187 return self.template.fulltextclient.getOrigPages(**args)
396
28a03e25a0e8 *** empty log message ***
abukhman
parents: 394
diff changeset
188
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
189 def getOrigPagesNorm(self, **args):
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
190 """get page"""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
191 return self.template.fulltextclient.getOrigPagesNorm(**args)
130
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
192
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
193 def getQuery(self, **args):
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
194 """get query in search"""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
195 return self.template.fulltextclient.getQuery(**args)
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
196
130
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
197 def getSearch(self, **args):
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
198 """get search"""
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
199 return self.template.fulltextclient.getSearch(**args)
256
ad1458aff8a6 *** empty log message ***
abukhman
parents: 235
diff changeset
200
ad1458aff8a6 *** empty log message ***
abukhman
parents: 235
diff changeset
201 def getGisPlaces(self, **args):
307
ec5e920a61e6 *** empty log message ***
abukhman
parents: 256
diff changeset
202 """get gis places"""
256
ad1458aff8a6 *** empty log message ***
abukhman
parents: 235
diff changeset
203 return self.template.fulltextclient.getGisPlaces(**args)
307
ec5e920a61e6 *** empty log message ***
abukhman
parents: 256
diff changeset
204
ec5e920a61e6 *** empty log message ***
abukhman
parents: 256
diff changeset
205 def getAllGisPlaces(self, **args):
310
80ae2324562b *** empty log message ***
abukhman
parents: 307
diff changeset
206 """get all gis places """
80ae2324562b *** empty log message ***
abukhman
parents: 307
diff changeset
207 return self.template.fulltextclient.getAllGisPlaces(**args)
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
208
130
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
209 def getTranslate(self, **args):
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
210 """get translate"""
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
211 return self.template.fulltextclient.getTranslate(**args)
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
212
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
213 def getLemma(self, **args):
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
214 """get lemma"""
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
215 return self.template.fulltextclient.getLemma(**args)
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
216
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
217 def getLemmaQuery(self, **args):
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
218 """get query"""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
219 return self.template.fulltextclient.getLemmaQuery(**args)
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
220
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
221 def getLex(self, **args):
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
222 """get lex"""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
223 return self.template.fulltextclient.getLex(**args)
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
224
130
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
225 def getToc(self, **args):
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
226 """get toc"""
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
227 return self.template.fulltextclient.getToc(**args)
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
228
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
229 def getTocPage(self, **args):
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
230 """get tocpage"""
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
231 return self.template.fulltextclient.getTocPage(**args)
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
232
5c779d7b5f71 more modular version with separate object MpdlXmlTextServer
casties
parents: 128
diff changeset
233
68
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
234 security.declareProtected('View','thumbs_rss')
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
235 def thumbs_rss(self,mode,url,viewMode="auto",start=None,pn=1):
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
236 '''
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
237 view it
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
238 @param mode: defines how to access the document behind url
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
239 @param url: url which contains display information
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
240 @param viewMode: if images display images, if text display text, default is images (text,images or auto)
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
241
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
242 '''
167
7e2b97941a66 characterNormalization
abukhman
parents: 166
diff changeset
243 logging.debug("HHHHHHHHHHHHHH:load the rss")
458
48b135b089c8 more renovation
casties
parents: 457
diff changeset
244 logging.debug("documentViewer (index) mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn))
68
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
245
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
246 if not hasattr(self, 'template'):
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
247 # create template folder if it doesn't exist
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
248 self.manage_addFolder('template')
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
249
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
250 if not self.digilibBaseUrl:
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
251 self.digilibBaseUrl = self.findDigilibUrl() or "http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary"
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
252
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
253 docinfo = self.getDocinfo(mode=mode,url=url)
338
0576f524e2ee *** empty log message ***
abukhman
parents: 337
diff changeset
254 #pageinfo = self.getPageinfo(start=start,current=pn,docinfo=docinfo)
345
c39c252a3186 *** empty log message ***
abukhman
parents: 343
diff changeset
255 pageinfo = self.getPageinfo(start=start,current=pn, docinfo=docinfo)
331
6cde7f02786e *** empty log message ***
abukhman
parents: 330
diff changeset
256 ''' ZDES '''
68
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
257 pt = getattr(self.template, 'thumbs_main_rss')
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
258
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
259 if viewMode=="auto": # automodus gewaehlt
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
260 if docinfo.has_key("textURL") or docinfo.get('textURLPath',None): #texturl gesetzt und textViewer konfiguriert
68
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
261 viewMode="text"
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
262 else:
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
263 viewMode="images"
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
264
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
265 return pt(docinfo=docinfo,pageinfo=pageinfo,viewMode=viewMode)
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
266
68
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
267
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
268 security.declareProtected('View','index_html')
405
b8fb4c750d74 fix for characternormalization default
casties
parents: 404
diff changeset
269 def index_html(self,url,mode="texttool",viewMode="auto",tocMode="thumbs",start=None,pn=1,mk=None):
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
270 """
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
271 view it
57
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
272 @param mode: defines how to access the document behind url
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
273 @param url: url which contains display information
90
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
274 @param viewMode: if images display images, if text display text, default is auto (text,images or auto)
99
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
275 @param tocMode: type of 'table of contents' for navigation (thumbs, text, figures, none)
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
276 """
0
dwinter
parents:
diff changeset
277
345
c39c252a3186 *** empty log message ***
abukhman
parents: 343
diff changeset
278 logging.debug("documentViewer (index) mode: %s url:%s start:%s pn:%s"%(mode,url,start,pn))
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
279
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
280 if not hasattr(self, 'template'):
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
281 # this won't work
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
282 logging.error("template folder missing!")
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
283 return "ERROR: template folder missing!"
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
284
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
285 if not getattr(self, 'digilibBaseUrl', None):
132
39167e96e582 fixed creation of text server on __init__
casties
parents: 130
diff changeset
286 self.digilibBaseUrl = self.findDigilibUrl() or "http://digilib.mpiwg-berlin.mpg.de/digitallibrary"
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
287
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
288 docinfo = self.getDocinfo(mode=mode,url=url)
97
2b8fd19432fb Last update
abukhman
parents: 96
diff changeset
289
90
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
290 if tocMode != "thumbs":
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
291 # get table of contents
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
292 docinfo = self.getToc(mode=tocMode, docinfo=docinfo)
455
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
293
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
294 # auto viewMode: text_dict if text else images
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
295 if viewMode=="auto":
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
296 if docinfo.get('textURL', None) or docinfo.get('textURLPath', None):
127
49f381f896d0 try to make text_dict default for texts
casties
parents: 126
diff changeset
297 viewMode="text_dict"
51
c5d3aabbf61b textviewer now integrated, new modus auto introduced as standard for viewing
dwinter
parents: 50
diff changeset
298 else:
c5d3aabbf61b textviewer now integrated, new modus auto introduced as standard for viewing
dwinter
parents: 50
diff changeset
299 viewMode="images"
90
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
300
455
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
301 pageinfo = self.getPageinfo(start=start, current=pn, docinfo=docinfo, viewMode=viewMode, tocMode=tocMode)
127
49f381f896d0 try to make text_dict default for texts
casties
parents: 126
diff changeset
302
455
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
303 if viewMode != 'images' and docinfo.get('textURLPath', None):
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
304 # get full text page
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
305 page = self.getTextPage(mode=viewMode, pn=pn, docinfo=docinfo, pageinfo=pageinfo)
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
306 pageinfo['textPage'] = page
455
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
307
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
308 # get template /template/viewer_main
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
309 pt = getattr(self.template, 'viewer_main')
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
310 # and execute with parameters
0a53fea83df7 more work renovating
casties
parents: 454
diff changeset
311 return pt(docinfo=docinfo, pageinfo=pageinfo, viewMode=viewMode, mk=self.generateMarks(mk))
0
dwinter
parents:
diff changeset
312
74
dwinter
parents: 73
diff changeset
313 def generateMarks(self,mk):
dwinter
parents: 73
diff changeset
314 ret=""
90
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
315 if mk is None:
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
316 return ""
134
6a33aa624ba4 fixed more oopsies
casties
parents: 133
diff changeset
317 if not isinstance(mk, list):
132
39167e96e582 fixed creation of text server on __init__
casties
parents: 130
diff changeset
318 mk=[mk]
74
dwinter
parents: 73
diff changeset
319 for m in mk:
75
9673218e155b minorCVS: ----------------------------------------------------------------------
dwinter
parents: 74
diff changeset
320 ret+="mk=%s"%m
74
dwinter
parents: 73
diff changeset
321 return ret
389
114d40b358ab *** empty log message ***
abukhman
parents: 387
diff changeset
322
114d40b358ab *** empty log message ***
abukhman
parents: 387
diff changeset
323
387
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
324 def getBrowser(self):
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
325 """getBrowser the version of browser """
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
326 bt = browserCheck(self)
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
327 logging.debug("BROWSER VERSION: %s"%(bt))
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
328 return bt
387
580db757e0eb *** empty log message ***
abukhman
parents: 386
diff changeset
329
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
330 def findDigilibUrl(self):
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
331 """try to get the digilib URL from zogilib"""
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
332 url = self.template.zogilib.getDLBaseUrl()
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
333 return url
126
c6dcf12e3807 added method to get url of viewer instance
casties
parents: 124
diff changeset
334
c6dcf12e3807 added method to get url of viewer instance
casties
parents: 124
diff changeset
335 def getDocumentViewerURL(self):
c6dcf12e3807 added method to get url of viewer instance
casties
parents: 124
diff changeset
336 """returns the URL of this instance"""
c6dcf12e3807 added method to get url of viewer instance
casties
parents: 124
diff changeset
337 return self.absolute_url()
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
338
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
339 def getStyle(self, idx, selected, style=""):
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
340 """returns a string with the given style and append 'sel' if path == selected."""
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
341 #logger("documentViewer (getstyle)", logging.INFO, "idx: %s selected: %s style: %s"%(idx,selected,style))
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
342 if idx == selected:
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
343 return style + 'sel'
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
344 else:
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
345 return style
74
dwinter
parents: 73
diff changeset
346
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
347 def getLink(self, param=None, val=None, params=None, baseUrl=None, paramSep='&'):
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
348 """returns URL to documentviewer with parameter param set to val or from dict params"""
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
349 # copy existing request params
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
350 urlParams=self.REQUEST.form.copy()
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
351 # change single param
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
352 if param is not None:
31
c6451e8d5d23 more small fixes - now version 0.2.2
casties
parents: 29
diff changeset
353 if val is None:
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
354 if urlParams.has_key(param):
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
355 del urlParams[param]
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
356 else:
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
357 urlParams[param] = str(val)
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
358
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
359 # change more params
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
360 if params is not None:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
361 for k in params.keys():
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
362 v = params[k]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
363 if v is None:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
364 # val=None removes param
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
365 if urlParams.has_key(k):
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
366 del urlParams[k]
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
367
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
368 else:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
369 urlParams[k] = v
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
370
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
371 # FIXME: does this belong here?
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
372 if urlParams.get("mode", None) == "filepath": #wenn beim erst Aufruf filepath gesetzt wurde aendere das nun zu imagepath
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
373 urlParams["mode"] = "imagepath"
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
374 urlParams["url"] = getParentPath(urlParams["url"])
31
c6451e8d5d23 more small fixes - now version 0.2.2
casties
parents: 29
diff changeset
375
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
376 # quote values and assemble into query string (not escaping '/')
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
377 ps = paramSep.join(["%s=%s"%(k,urllib.quote_plus(v,'/')) for (k, v) in urlParams.items()])
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
378 #ps = urllib.urlencode(urlParams)
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
379 if baseUrl is None:
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
380 baseUrl = self.REQUEST['URL1']
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
381
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
382 url = "%s?%s"%(baseUrl, ps)
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
383 return url
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
384
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
385
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
386 def getLinkAmp(self, param=None, val=None, params=None, baseUrl=None):
68
b8457fc33446 piclens rss/support
dwinter
parents: 65
diff changeset
387 """link to documentviewer with parameter param set to val"""
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
388 return self.getLink(param, val, params, baseUrl, '&')
81
fae97f071724 fixed problem with info.xml when url without index.meta
casties
parents: 79
diff changeset
389
57
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
390 def getInfo_xml(self,url,mode):
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
391 """returns info about the document as XML"""
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
392 if not self.digilibBaseUrl:
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
393 self.digilibBaseUrl = self.findDigilibUrl() or "http://nausikaa.mpiwg-berlin.mpg.de/digitallibrary"
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
394
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
395 docinfo = self.getDocinfo(mode=mode,url=url)
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
396 pt = getattr(self.template, 'info_xml')
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
397 return pt(docinfo=docinfo)
7cdb0fc34a92 added getInfo_xml method
casties
parents: 55
diff changeset
398
35
2d9261aea8f3 version 0.2.4
casties
parents: 32
diff changeset
399 def isAccessible(self, docinfo):
32
b25c89d693cf version 0.2.3 - first version with access control!
casties
parents: 31
diff changeset
400 """returns if access to the resource is granted"""
b25c89d693cf version 0.2.3 - first version with access control!
casties
parents: 31
diff changeset
401 access = docinfo.get('accessType', None)
167
7e2b97941a66 characterNormalization
abukhman
parents: 166
diff changeset
402 logging.debug("documentViewer (accessOK) access type %s"%access)
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
403 if access == 'free':
167
7e2b97941a66 characterNormalization
abukhman
parents: 166
diff changeset
404 logging.debug("documentViewer (accessOK) access is free")
32
b25c89d693cf version 0.2.3 - first version with access control!
casties
parents: 31
diff changeset
405 return True
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
406
45
0391fe75aef3 fixed handling of documents with missing access tag
casties
parents: 43
diff changeset
407 elif access is None or access in self.authgroups:
35
2d9261aea8f3 version 0.2.4
casties
parents: 32
diff changeset
408 # only local access -- only logged in users
2d9261aea8f3 version 0.2.4
casties
parents: 32
diff changeset
409 user = getSecurityManager().getUser()
167
7e2b97941a66 characterNormalization
abukhman
parents: 166
diff changeset
410 logging.debug("documentViewer (accessOK) user=%s ip=%s"%(user,self.REQUEST.getClientAddr()))
35
2d9261aea8f3 version 0.2.4
casties
parents: 32
diff changeset
411 if user is not None:
2d9261aea8f3 version 0.2.4
casties
parents: 32
diff changeset
412 #print "user: ", user
2d9261aea8f3 version 0.2.4
casties
parents: 32
diff changeset
413 return (user.getUserName() != "Anonymous User")
2d9261aea8f3 version 0.2.4
casties
parents: 32
diff changeset
414 else:
2d9261aea8f3 version 0.2.4
casties
parents: 32
diff changeset
415 return False
32
b25c89d693cf version 0.2.3 - first version with access control!
casties
parents: 31
diff changeset
416
167
7e2b97941a66 characterNormalization
abukhman
parents: 166
diff changeset
417 logging.error("documentViewer (accessOK) unknown access type %s"%access)
32
b25c89d693cf version 0.2.3 - first version with access control!
casties
parents: 31
diff changeset
418 return False
35
2d9261aea8f3 version 0.2.4
casties
parents: 32
diff changeset
419
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
420
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
421
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
422 def getDocinfo(self, mode, url):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
423 """returns docinfo depending on mode"""
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
424 logging.debug("getDocinfo: mode=%s, url=%s"%(mode,url))
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
425 # look for cached docinfo in session
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
426 if self.REQUEST.SESSION.has_key('docinfo'):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
427 docinfo = self.REQUEST.SESSION['docinfo']
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
428 # check if its still current
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
429 if docinfo is not None and docinfo.get('mode', None) == mode and docinfo.get('url', None) == url:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
430 logging.debug("getDocinfo: docinfo in session. keys=%s"%docinfo.keys())
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
431 return docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
432
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
433 # new docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
434 docinfo = {'mode': mode, 'url': url}
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
435 # add self url
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
436 docinfo['viewerUrl'] = self.getDocumentViewerURL()
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
437 # get index.meta DOM
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
438 docUrl = None
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
439 metaDom = None
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
440 if mode=="texttool":
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
441 # url points to document dir or index.meta
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
442 metaDom = self.metadataService.getDomFromPathOrUrl(url)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
443 docUrl = url.replace('/index.meta', '')
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
444 if metaDom is None:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
445 raise IOError("Unable to find index.meta for mode=texttool!")
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
446
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
447 elif mode=="imagepath":
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
448 # url points to folder with images, index.meta optional
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
449 # asssume index.meta in parent dir
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
450 docUrl = getParentPath(url)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
451 metaDom = self.metadataService.getDomFromPathOrUrl(docUrl)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
452
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
453 elif mode=="filepath":
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
454 # url points to image file, index.meta optional
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
455 # asssume index.meta is two path segments up
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
456 docUrl = getParentPath(url, 2)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
457 metaDom = self.metadataService.getDomFromPathOrUrl(docUrl)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
458
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
459 else:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
460 logging.error("documentViewer (getdocinfo) unknown mode: %s!"%mode)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
461 raise ValueError("Unknown mode %s! Has to be one of 'texttool','imagepath','filepath'."%(mode))
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
462
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
463 docinfo['documentUrl'] = docUrl
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
464 # process index.meta contents
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
465 if metaDom is not None:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
466 # document directory name and path
468
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
467 logging.debug("RESOURCE: %s"%repr(self.metadataService.resource.meta.getData(dom=metaDom, all=True, recursive=2)))
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
468 resource = self.metadataService.getResourceData(dom=metaDom)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
469 if resource:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
470 docinfo = self.getDocinfoFromResource(docinfo, resource)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
471
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
472 # texttool info
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
473 texttool = self.metadataService.getTexttoolData(dom=metaDom)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
474 if texttool:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
475 docinfo = self.getDocinfoFromTexttool(docinfo, texttool)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
476
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
477 # bib info
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
478 bib = self.metadataService.getBibData(dom=metaDom)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
479 if bib:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
480 docinfo = self.getDocinfoFromBib(docinfo, bib)
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
481 else:
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
482 # no bib - try info.xml
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
483 docinfo = self.getDocinfoFromPresentationInfoXml(docinfo)
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
484
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
485 # auth info
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
486 access = self.metadataService.getAccessData(dom=metaDom)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
487 if access:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
488 docinfo = self.getDocinfoFromAccess(docinfo, access)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
489
466
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
490 # attribution info
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
491 attribution = self.metadataService.getAttributionData(dom=metaDom)
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
492 if attribution:
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
493 logging.debug("getDocinfo: attribution=%s"%repr(attribution))
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
494 docinfo['attribution'] = attribution
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
495 #docinfo = self.getDocinfoFromAccess(docinfo, access)
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
496
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
497 # copyright info
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
498 copyright = self.metadataService.getCopyrightData(dom=metaDom)
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
499 if copyright:
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
500 logging.debug("getDocinfo: copyright=%s"%repr(copyright))
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
501 docinfo['copyright'] = copyright
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
502 #docinfo = self.getDocinfoFromAccess(docinfo, access)
1641be8dc6b5 attribution works now
casties
parents: 465
diff changeset
503
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
504 # image path
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
505 if mode != 'texttool':
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
506 # override image path from texttool
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
507 docinfo['imagePath'] = url.replace('/mpiwg/online/', '', 1)
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
508
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
509 # number of images from digilib
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
510 if docinfo.get('imagePath', None):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
511 docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + docinfo['imagePath']
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
512 docinfo = self.getDocinfoFromDigilib(docinfo, docinfo['imagePath'])
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
513
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
514 logging.debug("documentViewer (getdocinfo) docinfo: keys=%s"%docinfo.keys())
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
515 #logging.debug("documentViewer (getdocinfo) docinfo: %s"%docinfo)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
516 # store in session
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
517 self.REQUEST.SESSION['docinfo'] = docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
518 return docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
519
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
520 def getDocinfoFromResource(self, docinfo, resource):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
521 """reads contents of resource element into docinfo"""
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
522 docName = resource.get('name', None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
523 docinfo['documentName'] = docName
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
524 docPath = resource.get('archive-path', None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
525 if docPath:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
526 # clean up document path
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
527 if docPath[0] != '/':
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
528 docPath = '/' + docPath
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
529
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
530 if docName and (not docPath.endswith(docName)):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
531 docPath += "/" + docName
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
532
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
533 else:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
534 # use docUrl as docPath
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
535 docUrl = docinfo['documentURL']
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
536 if not docUrl.startswith('http:'):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
537 docPath = docUrl
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
538 if docPath:
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
539 # fix URLs starting with /mpiwg/online
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
540 docPath = docPath.replace('/mpiwg/online', '', 1)
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
541
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
542 docinfo['documentPath'] = docPath
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
543 return docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
544
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
545 def getDocinfoFromTexttool(self, docinfo, texttool):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
546 """reads contents of texttool element into docinfo"""
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
547 # image dir
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
548 imageDir = texttool.get('image', None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
549 docPath = docinfo.get('documentPath', None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
550 if imageDir and docPath:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
551 #print "image: ", imageDir, " archivepath: ", archivePath
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
552 imageDir = os.path.join(docPath, imageDir)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
553 imageDir = imageDir.replace('/mpiwg/online', '', 1)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
554 docinfo['imagePath'] = imageDir
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
555
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
556 # old style text URL
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
557 textUrl = texttool.get('text', None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
558 if textUrl and docPath:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
559 if urlparse.urlparse(textUrl)[0] == "": #keine url
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
560 textUrl = os.path.join(docPath, textUrl)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
561
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
562 docinfo['textURL'] = textUrl
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
563
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
564 # new style text-url-path
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
565 textUrl = texttool.get('text-url-path', None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
566 if textUrl:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
567 docinfo['textURLPath'] = textUrl
468
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
568
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
569 # page flow
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
570 docinfo['pageFlow'] = texttool.get('page-flow', 'ltr')
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
571
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
572 # odd pages are left
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
573 docinfo['oddPage'] = texttool.get('odd-scan-orientation', 'left')
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
574
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
575 # number of title page
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
576 docinfo['titlePage'] = texttool.get('title-scan-no', 0)
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
577
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
578 # old presentation stuff
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
579 presentation = texttool.get('presentation', None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
580 if presentation and docPath:
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
581 if presentation.startswith('http:'):
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
582 docinfo['presentationUrl'] = presentation
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
583 else:
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
584 docinfo['presentationUrl'] = os.path.join(docPath, presentation)
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
585
468
dc7c48912110 attribution and copyright works mostly now
casties
parents: 467
diff changeset
586
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
587 return docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
588
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
589 def getDocinfoFromBib(self, docinfo, bib):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
590 """reads contents of bib element into docinfo"""
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
591 logging.debug("getDocinfoFromBib bib=%s"%repr(bib))
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
592 # put all raw bib fields in dict "bib"
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
593 docinfo['bib'] = bib
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
594 bibtype = bib.get('@type', None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
595 docinfo['bibType'] = bibtype
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
596 # also store DC metadata for convenience
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
597 dc = self.metadataService.getDCMappedData(bib)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
598 docinfo['creator'] = dc.get('creator',None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
599 docinfo['title'] = dc.get('title',None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
600 docinfo['date'] = dc.get('date',None)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
601 return docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
602
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
603 def getDocinfoFromAccess(self, docinfo, acc):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
604 """reads contents of access element into docinfo"""
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
605 #TODO: also read resource type
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
606 logging.debug("getDocinfoFromAccess acc=%s"%repr(acc))
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
607 try:
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
608 acctype = acc['@attr']['type']
464
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
609 if acctype:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
610 access=acctype
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
611 if access in ['group', 'institution']:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
612 access = acc['name'].lower()
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
613
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
614 docinfo['accessType'] = access
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
615
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
616 except:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
617 pass
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
618
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
619 return docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
620
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
621 def getDocinfoFromDigilib(self, docinfo, path):
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
622 infoUrl=self.digilibBaseUrl+"/dirInfo-xml.jsp?mo=dir&fn="+path
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
623 # fetch data
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
624 txt = getHttpData(infoUrl)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
625 if not txt:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
626 logging.error("Unable to get dir-info from %s"%(infoUrl))
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
627 return docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
628
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
629 dom = ET.fromstring(txt)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
630 size = getText(dom.find("size"))
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
631 logging.debug("getDocinfoFromDigilib: size=%s"%size)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
632 if size:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
633 docinfo['numPages'] = int(size)
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
634 else:
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
635 docinfo['numPages'] = 0
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
636
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
637 # TODO: produce and keep list of image names and numbers
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
638 return docinfo
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
639
19bd41d95f62 first version with new getdocinfo
casties
parents: 463
diff changeset
640
465
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
641 def getDocinfoFromPresentationInfoXml(self,docinfo):
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
642 """gets DC-like bibliographical information from the presentation entry in texttools"""
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
643 url = docinfo.get('presentationUrl', None)
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
644 if not url:
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
645 logging.error("getDocinfoFromPresentation: no URL!")
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
646 return docinfo
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
647
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
648 dom = None
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
649 metaUrl = None
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
650 if url.startswith("http://"):
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
651 # real URL
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
652 metaUrl = url
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
653 else:
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
654 # online path
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
655
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
656 server=self.digilibBaseUrl+"/servlet/Texter?fn="
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
657 metaUrl=server+url
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
658
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
659 txt=getHttpData(metaUrl)
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
660 if txt is None:
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
661 logging.error("Unable to read info.xml from %s"%(url))
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
662 return docinfo
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
663
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
664 dom = ET.fromstring(txt)
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
665 docinfo['creator']=getText(dom.find(".//author"))
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
666 docinfo['title']=getText(dom.find(".//title"))
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
667 docinfo['date']=getText(dom.find(".//date"))
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
668 return docinfo
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
669
224aad394350 really works with new getDocinfo
casties
parents: 464
diff changeset
670
405
b8fb4c750d74 fix for characternormalization default
casties
parents: 404
diff changeset
671 def getPageinfo(self, current, start=None, rows=None, cols=None, docinfo=None, viewMode=None, tocMode=None):
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
672 """returns pageinfo with the given parameters"""
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
673 pageinfo = {}
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
674 current = getInt(current)
338
0576f524e2ee *** empty log message ***
abukhman
parents: 337
diff changeset
675
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
676 pageinfo['current'] = current
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
677 rows = int(rows or self.thumbrows)
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
678 pageinfo['rows'] = rows
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
679 cols = int(cols or self.thumbcols)
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
680 pageinfo['cols'] = cols
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
681 grpsize = cols * rows
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
682 pageinfo['groupsize'] = grpsize
460
76bc2317146f more renovation
casties
parents: 459
diff changeset
683 # what does this do?
61
f3d2f240692c fixed bug in calculation of group numbers
casties
parents: 59
diff changeset
684 start = getInt(start, default=(math.ceil(float(current)/float(grpsize))*grpsize-(grpsize-1)))
f3d2f240692c fixed bug in calculation of group numbers
casties
parents: 59
diff changeset
685 # int(current / grpsize) * grpsize +1))
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
686 pageinfo['start'] = start
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
687 pageinfo['end'] = start + grpsize
90
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
688 if (docinfo is not None) and ('numPages' in docinfo):
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
689 np = int(docinfo['numPages'])
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
690 pageinfo['end'] = min(pageinfo['end'], np)
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
691 pageinfo['numgroups'] = int(np / grpsize)
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
692 if np % grpsize > 0:
460
76bc2317146f more renovation
casties
parents: 459
diff changeset
693 pageinfo['numgroups'] += 1
76bc2317146f more renovation
casties
parents: 459
diff changeset
694
90
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
695 pageinfo['viewMode'] = viewMode
6a4a72033d58 new version with new full-text infrastructure and some more changed templates
casties
parents: 84
diff changeset
696 pageinfo['tocMode'] = tocMode
453
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
697 pageinfo['characterNormalization'] = self.REQUEST.get('characterNormalization','reg')
beb7ccb92564 first version using elementtree instead of 4suite xml
casties
parents: 405
diff changeset
698 #pageinfo['optionToggle'] = self.REQUEST.get('optionToggle','1')
398
55f9eeebc338 *** empty log message ***
abukhman
parents: 397
diff changeset
699 pageinfo['query'] = self.REQUEST.get('query','')
384
4ec393062711 *** empty log message ***
abukhman
parents: 382
diff changeset
700 pageinfo['queryType'] = self.REQUEST.get('queryType','')
95
db6d594aa4d9 Last update with search function (getSearch)
abukhman
parents: 90
diff changeset
701 pageinfo['querySearch'] =self.REQUEST.get('querySearch', 'fulltext')
99
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
702 pageinfo['textPN'] = self.REQUEST.get('textPN','1')
384
4ec393062711 *** empty log message ***
abukhman
parents: 382
diff changeset
703 pageinfo['highlightQuery'] = self.REQUEST.get('highlightQuery','')
95
db6d594aa4d9 Last update with search function (getSearch)
abukhman
parents: 90
diff changeset
704 pageinfo['tocPageSize'] = self.REQUEST.get('tocPageSize', '30')
105
6bffb612cd6a *** empty log message ***
abukhman
parents: 104
diff changeset
705 pageinfo['queryPageSize'] =self.REQUEST.get('queryPageSize', '10')
460
76bc2317146f more renovation
casties
parents: 459
diff changeset
706 pageinfo['tocPN'] = self.REQUEST.get('tocPN', '1')
76bc2317146f more renovation
casties
parents: 459
diff changeset
707 # WTF?:
76bc2317146f more renovation
casties
parents: 459
diff changeset
708 toc = int(pageinfo['tocPN'])
76bc2317146f more renovation
casties
parents: 459
diff changeset
709 pageinfo['textPages'] =int(toc)
158
4f4fe4e56ffe characterNormalization
abukhman
parents: 157
diff changeset
710
460
76bc2317146f more renovation
casties
parents: 459
diff changeset
711 # What does this do?
99
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
712 if 'tocSize_%s'%tocMode in docinfo:
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
713 tocSize = int(docinfo['tocSize_%s'%tocMode])
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
714 tocPageSize = int(pageinfo['tocPageSize'])
128
4db49915d825 Last lemma
abukhman
parents: 127
diff changeset
715 # cached toc
99
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
716 if tocSize%tocPageSize>0:
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
717 tocPages=tocSize/tocPageSize+1
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
718 else:
4738a696d265 Search function update
abukhman
parents: 97
diff changeset
719 tocPages=tocSize/tocPageSize
460
76bc2317146f more renovation
casties
parents: 459
diff changeset
720
76bc2317146f more renovation
casties
parents: 459
diff changeset
721 pageinfo['tocPN'] = min(tocPages,toc)
76bc2317146f more renovation
casties
parents: 459
diff changeset
722
95
db6d594aa4d9 Last update with search function (getSearch)
abukhman
parents: 90
diff changeset
723 pageinfo['searchPN'] =self.REQUEST.get('searchPN','1')
112
d48c1d507556 *** empty log message ***
abukhman
parents: 109
diff changeset
724 pageinfo['sn'] =self.REQUEST.get('sn','')
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
725 return pageinfo
460
76bc2317146f more renovation
casties
parents: 459
diff changeset
726
463
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
727
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
728 security.declareProtected('View management screens','changeDocumentViewerForm')
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
729 changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
730
460
76bc2317146f more renovation
casties
parents: 459
diff changeset
731 def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',RESPONSE=None):
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
732 """init document viewer"""
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
733 self.title=title
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
734 self.digilibBaseUrl = digilibBaseUrl
25
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
735 self.thumbrows = thumbrows
e93fb8cadd3a new, less preliminary version 0.2
casties
parents: 22
diff changeset
736 self.thumbcols = thumbcols
32
b25c89d693cf version 0.2.3 - first version with access control!
casties
parents: 31
diff changeset
737 self.authgroups = [s.strip().lower() for s in authgroups.split(',')]
463
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
738 try:
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
739 # assume MetaDataFolder instance is called metadata
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
740 self.metadataService = getattr(self, 'metadata')
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
741 except Exception, e:
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
742 logging.error("Unable to find MetaDataFolder 'metadata': "+str(e))
89ad327b4bbd more renovation
casties
parents: 462
diff changeset
743
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
744 if RESPONSE is not None:
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
745 RESPONSE.redirect('manage_main')
0
dwinter
parents:
diff changeset
746
dwinter
parents:
diff changeset
747 def manage_AddDocumentViewerForm(self):
dwinter
parents:
diff changeset
748 """add the viewer form"""
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
749 pt=PageTemplateFile('zpt/addDocumentViewer', globals()).__of__(self)
0
dwinter
parents:
diff changeset
750 return pt()
dwinter
parents:
diff changeset
751
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
752 def manage_AddDocumentViewer(self,id,imageScalerUrl="",textServerName="",title="",RESPONSE=None):
0
dwinter
parents:
diff changeset
753 """add the viewer"""
84
a6e4f9b6729a first version with new full-text infrastructure and slightly changed templates
casties
parents: 83
diff changeset
754 newObj=documentViewer(id,imageScalerUrl=imageScalerUrl,title=title,textServerName=textServerName)
0
dwinter
parents:
diff changeset
755 self._setObject(id,newObj)
dwinter
parents:
diff changeset
756
dwinter
parents:
diff changeset
757 if RESPONSE is not None:
dwinter
parents:
diff changeset
758 RESPONSE.redirect('manage_main')
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
759
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
760 ## DocumentViewerTemplate class
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
761 class DocumentViewerTemplate(ZopePageTemplate):
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
762 """Template for document viewer"""
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
763 meta_type="DocumentViewer Template"
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
764
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
765
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
766 def manage_addDocumentViewerTemplateForm(self):
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
767 """Form for adding"""
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
768 pt=PageTemplateFile('zpt/addDocumentViewerTemplate', globals()).__of__(self)
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
769 return pt()
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
770
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
771 def manage_addDocumentViewerTemplate(self, id='viewer_main', title=None, text=None,
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
772 REQUEST=None, submit=None):
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
773 "Add a Page Template with optional file content."
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
774
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
775 self._setObject(id, DocumentViewerTemplate(id))
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
776 ob = getattr(self, id)
53
f4e0af8c281d NEW - # 44: ECHO - vollst?ndige bibliographische Angabe
dwinter
parents: 52
diff changeset
777 txt=file(os.path.join(package_home(globals()),'zpt/viewer_main.zpt'),'r').read()
167
7e2b97941a66 characterNormalization
abukhman
parents: 166
diff changeset
778 logging.info("txt %s:"%txt)
53
f4e0af8c281d NEW - # 44: ECHO - vollst?ndige bibliographische Angabe
dwinter
parents: 52
diff changeset
779 ob.pt_edit(txt,"text/html")
22
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
780 if title:
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
781 ob.pt_setTitle(title)
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
782 try:
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
783 u = self.DestinationURL()
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
784 except AttributeError:
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
785 u = REQUEST['URL1']
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
786
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
787 u = "%s/%s" % (u, urllib.quote(id))
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
788 REQUEST.RESPONSE.redirect(u+'/manage_main')
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
789 return ''
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
790
b139f9937e97 preliminary version 0.2
casties
parents: 20
diff changeset
791
41
0c8ee8fcfd76 some more logging
casties
parents: 40
diff changeset
792