Annotation of ImageArchive/ImageArchive.py, revision 1.2
1.1 dwinter 1: from OFS.Folder import Folder
2: from OFS.SimpleItem import SimpleItem
3: from Globals import Persistent
4: from Acquisition import Implicit
5: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
6: from Products.PageTemplates.PageTemplate import PageTemplate
7: import re
8: import os
9: import os.path
10: import urllib
11: import xml.dom.minidom
12:
13: def getText(nodelist):
14:
15: rc = ""
16: for node in nodelist:
17:
18: if node.nodeType == node.TEXT_NODE:
19: rc = rc + node.data
20: return rc
21:
22:
23: class ImageDigilib(SimpleItem,Persistent,Implicit):
24: """Anzeige object fuer digilib"""
25: meta_type="ImageDigilib"
26:
27: def __init__(self,id,filename):
28: self.id=id
29: self.title=filename
30: self.filename=filename
31:
32: def uploadImage(self,fileupload,path_name):
33: """upload an Image from an Requast"""
34: #path_name=self.ImageStoragePath
35: filename=path_name+"/"+fileupload.filename
36: filedata=fileupload.read()
37: f=open(filename,"w")
38: f.write(filedata)
39: f.close()
40: os.chmod(filename,0644)
41:
42: def download(self):
43: """download"""
44: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&mo=file"
45: #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
46: #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
47: return self.REQUEST.RESPONSE.redirect(path)
48:
49: def thumb(self):
50: """show thumb"""
51: if not os.path.exists("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+self.filename):
52: #image=urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=150").read()
53: #f=open("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+self.filename,"w")
54: #f.write(image)
55: #f.close()
56: os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 150 &"% self.ImageViewerPath)
57:
58:
59: #path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=100&dh=100"
60: path="/thumbs"+self.ImageViewerPath+"/"+self.filename
61: self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
62: pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
63: return pt()
64:
65: def index_html(self):
66: """show image"""
67: path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/digilib.jsp?fn="+self.ImageViewerPath+"/"+self.filename
68: #self.REQUEST.SESSION['string']="<img src=\"%s\">"% path
69: #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt').__of__(self)
70: return self.REQUEST.RESPONSE.redirect(path)
71:
72:
73: def manage_AddImageDigilibForm(self):
74: """Nothing yet"""
75: pt=PageTemplateFile('Products/ImageArchive/AddImageDigilibForm.zpt').__of__(self)
76: return pt()
77:
78: def manage_AddImageDigilib(self,id,fileupload,RESPONSE=None):
79: """Add ImageCollection"""
80: #fileupload=self.REQUEST['fileupload']
81: newObj=ImageDigilib(id,fileupload.filename)
82:
83: self._setObject(id,newObj)
84: getattr(self,id).uploadImage(fileupload,self.ImageStoragePath)
85:
86: if RESPONSE is not None:
87: RESPONSE.redirect('manage_main')
88:
89:
90: class ImageCollection(Folder, Persistent, Implicit):
91: """Sammelordner für Bilder"""
92: meta_type="ImageCollection"
93:
94: def __init__(self,id,title,ImageStoragePath,ImageViewerPath):
95: self.id=id
96: self.title=title
97: self.ImageStoragePath=ImageStoragePath
98: self.ImageViewerPath=ImageViewerPath
99:
100:
101: manage_options = Folder.manage_options+(
102: {'label':'Main Config','action':'ImageCollection_config'},
103: {'label':'Import','action':'ImportFiles'},
104: )
105:
1.2 ! dwinter 106: def getThumbAttribute(self,id,attr):
! 107: if hasattr(self,id):
! 108: return getattr(getattr(self,id),attr)
! 109: else:
! 110: if attr=='title':
! 111: return "<b>Missing Image:%s</b>" % id
! 112:
! 113: def getThumbFunction(self,id,attr):
! 114: #return "DUMP"
! 115: if hasattr(self,id):
! 116: return getattr(getattr(self,id),attr)()
! 117:
! 118:
1.1 dwinter 119: def xmlinput(self,url):
120: """Anzeige von ausgewaehlten thumbs"""
121: #return url
122: xmldoc=urllib.urlopen(url).read()
123:
124: dom=xml.dom.minidom.parseString(xmldoc)
125:
126: images=dom.getElementsByTagName('imagename')
127: rc=[]
128: for image in images:
129: text=getText(image.childNodes)
130: if not text=="":
131: rc.append(str(text))
1.2 ! dwinter 132: rc.sort()
1.1 dwinter 133: self.REQUEST.SESSION['filenames']=rc
134: pt=PageTemplateFile('Products/ImageArchive/overview_selected.zpt').__of__(self)
135: return pt()
136:
137:
138: def addImage(self):
139: """Add an Image"""
140: pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)
141: return pt()
142:
143: def addImage2(self,fileupload,RESPONSE=None):
144: """Add"""
145: #print "FU",fileupload
146: manage_AddImageDigilib(self,fileupload.filename,fileupload)
147: return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
148: #return self.REQUEST['URL1']+'/'+fileupload.filename
149:
150: def ImportFiles(self,RESPONSE=None):
151: """Import the existing files of a folder"""
152: files=os.listdir(self.ImageStoragePath)
153: ret=""
154: #print self.__dict__
155: for file in files:
1.2 ! dwinter 156: if not file[0]==".":
! 157: if self.__dict__.has_key(file):
! 158:
! 159: ret=ret+"<br>"+file+" already exists!"
! 160: else:
! 161: ret=ret+"<br>"+file+" created!"
! 162: newObj=ImageDigilib(file,file)
! 163: #print newObj,file
! 164: #print newObj
1.1 dwinter 165: self._setObject(file,newObj)
166: #print ret
167: pt=PageTemplateFile('Products/ImageArchive/out.zpt',ret).__of__(self)
168: RESPONSE.redirect('manage_main')
169:
170: def ImageCollection_config(self):
171: """Nothing yet"""
172: pt=PageTemplateFile('Products/ImageArchive/ChangeImageCollectionForm.zpt').__of__(self)
173: return pt()
174:
175: def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,RESPONSE=None):
176: """Change"""
177: self.title=title
178: self.ImageStoragePath=ImageStoragePath
179: self.ImageViewerPath=ImageViewerPath
180:
181: if RESPONSE is not None:
182: RESPONSE.redirect('manage_main')
183:
184: def show_selected_thumbs(self):
185: #ids=[]
186:
187: return self.REQUEST.SESSION['filenames']
188:
189: def show_thumbs(self):
190: ids=[]
191: for entry in self.__dict__:
192: #print entry
193: if hasattr(getattr(self,entry),'thumb'):
194: ids.append(entry)
1.2 ! dwinter 195:
1.1 dwinter 196: #print ids
1.2 ! dwinter 197: ids.sort()
1.1 dwinter 198: return ids
199:
1.2 ! dwinter 200: def show_thumbs_selected_rows(self,numberOfColumns):
! 201: """Ausgabe anzahl"""
! 202: ids=self.show_selected_thumbs()
! 203: self.REQUEST.SESSION['ids']=ids
! 204: number=int(len(ids)/numberOfColumns)+1
! 205: self.REQUEST.SESSION['number']=range(number)
! 206: return range(number+1)
! 207:
! 208: def show_thumbs_rows(self,numberOfColumns):
! 209: """Ausgabe anzahl"""
! 210: ids=self.show_thumbs()
! 211: self.REQUEST.SESSION['ids']=ids
! 212: number=int(len(ids)/numberOfColumns)+1
! 213:
! 214: return range(number+1)
! 215:
! 216: def show_thumbs_columns(self,row,numberOfColumns):
! 217: """Ausgabe einer Liste der Reihe"""
! 218: ids=self.REQUEST.SESSION['ids']
! 219: max=len(ids)
! 220: if (row*numberOfColumns)<max:
! 221: return ids[(row-1)*numberOfColumns:row*numberOfColumns]
! 222: else:
! 223: return ids[(row-1)*numberOfColumns:]
! 224: def thumblistSelected_old(self):
! 225: """main template collection"""
! 226: pt=PageTemplateFile('Products/ImageArchive/thumbselected.zpt').__of__(self)
! 227: return pt()
! 228:
1.1 dwinter 229: def thumblistSelected(self):
230: """main template collection"""
1.2 ! dwinter 231: pt=PageTemplateFile('Products/ImageArchive/thumbselected2.zpt').__of__(self)
! 232: return pt()
! 233:
! 234: def thumblist_old(self):
! 235: """main template collection"""
! 236: pt=PageTemplateFile('Products/ImageArchive/thumbs.zpt').__of__(self)
1.1 dwinter 237: return pt()
238:
239: def thumblist(self):
240: """main template collection"""
1.2 ! dwinter 241: pt=PageTemplateFile('Products/ImageArchive/thumb2.zpt').__of__(self)
1.1 dwinter 242: return pt()
243:
244: def navig_html(self):
245: """navigation"""
246: pt=PageTemplateFile('Products/ImageArchive/navigation.zpt').__of__(self)
247: return pt()
248:
249:
250: def index_html(self):
251: """main template collection"""
252: if self.REQUEST.has_key('filename'):
253: filen=self.REQUEST['filename']
254: else:
255: filen=""
256: self.REQUEST.SESSION['filename']=filen
257: pt=PageTemplateFile('Products/ImageArchive/overview.zpt').__of__(self)
258: return pt()
259:
260: def manage_AddImageCollectionForm(self):
261: """Nothing yet"""
262: pt=PageTemplateFile('Products/ImageArchive/AddImageCollectionForm.zpt').__of__(self)
263: return pt()
264:
265: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,RESPONSE=None):
266: """Add ImageCollection"""
267: newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath)
268: self._setObject(id,newObj)
269:
270: if RESPONSE is not None:
271: RESPONSE.redirect('manage_main')
272:
273:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>