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>