File:  [Repository] / ImageArchive / ImageArchive.py
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Wed Dec 3 08:46:45 2003 UTC (20 years, 7 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
Initial revision

    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: 
  106:     def xmlinput(self,url):
  107:         """Anzeige von ausgewaehlten thumbs"""
  108:         #return url
  109:         xmldoc=urllib.urlopen(url).read()
  110:         
  111:         dom=xml.dom.minidom.parseString(xmldoc)
  112:         
  113:         images=dom.getElementsByTagName('imagename')
  114:         rc=[]
  115:         for image in images:
  116:             text=getText(image.childNodes)
  117:             if not text=="":
  118:                 rc.append(str(text))
  119: 
  120:         self.REQUEST.SESSION['filenames']=rc
  121:         pt=PageTemplateFile('Products/ImageArchive/overview_selected.zpt').__of__(self)
  122:         return pt()        
  123: 
  124:     
  125:     def addImage(self):
  126:         """Add an Image"""
  127:         pt=PageTemplateFile('Products/ImageArchive/addImage.zpt').__of__(self)
  128:         return pt()
  129:     
  130:     def addImage2(self,fileupload,RESPONSE=None):
  131:         """Add"""
  132:         #print "FU",fileupload
  133:         manage_AddImageDigilib(self,fileupload.filename,fileupload)
  134:         return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fileupload.filename)
  135:         #return  self.REQUEST['URL1']+'/'+fileupload.filename
  136:     
  137:     def ImportFiles(self,RESPONSE=None):
  138:         """Import the existing files of a folder"""
  139:         files=os.listdir(self.ImageStoragePath)
  140:         ret=""
  141:         #print self.__dict__
  142:         for file in files:
  143:             if self.__dict__.has_key(file):
  144:                 
  145:                 ret=ret+"<br>"+file+" already exists!"
  146:             else:
  147:                 ret=ret+"<br>"+file+" created!"
  148:                 newObj=ImageDigilib(file,file)
  149:                 #print newObj,file
  150:                 #print newObj
  151:                 self._setObject(file,newObj)
  152:         #print ret
  153:         pt=PageTemplateFile('Products/ImageArchive/out.zpt',ret).__of__(self)
  154:         RESPONSE.redirect('manage_main')
  155:         
  156:     def ImageCollection_config(self):
  157:         """Nothing yet"""
  158:         pt=PageTemplateFile('Products/ImageArchive/ChangeImageCollectionForm.zpt').__of__(self)
  159:         return pt()
  160: 
  161:     def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,RESPONSE=None):
  162:         """Change"""
  163:         self.title=title
  164:         self.ImageStoragePath=ImageStoragePath
  165:         self.ImageViewerPath=ImageViewerPath
  166: 
  167:         if RESPONSE is not None:
  168:             RESPONSE.redirect('manage_main')
  169: 
  170:     def show_selected_thumbs(self):
  171:         #ids=[]
  172:         
  173:         return self.REQUEST.SESSION['filenames']
  174: 
  175:     def show_thumbs(self):
  176:         ids=[]
  177:         for entry in self.__dict__:
  178:             #print entry
  179:             if hasattr(getattr(self,entry),'thumb'):
  180:                 ids.append(entry)
  181:         #print ids
  182:         return ids
  183: 
  184:     def thumblistSelected(self):
  185:         """main template collection"""
  186:         pt=PageTemplateFile('Products/ImageArchive/thumbselected.zpt').__of__(self)
  187:         return pt()
  188: 
  189:     def thumblist(self):
  190:         """main template collection"""
  191:         pt=PageTemplateFile('Products/ImageArchive/thumbs.zpt').__of__(self)
  192:         return pt()
  193: 
  194:     def navig_html(self):
  195:         """navigation"""
  196:         pt=PageTemplateFile('Products/ImageArchive/navigation.zpt').__of__(self)
  197:         return pt()
  198: 
  199: 
  200:     def index_html(self):
  201:         """main template collection"""
  202:         if self.REQUEST.has_key('filename'):
  203:             filen=self.REQUEST['filename']
  204:         else:
  205:             filen=""
  206:         self.REQUEST.SESSION['filename']=filen
  207:         pt=PageTemplateFile('Products/ImageArchive/overview.zpt').__of__(self)
  208:         return pt()
  209:     
  210: def manage_AddImageCollectionForm(self):
  211:     """Nothing yet"""
  212:     pt=PageTemplateFile('Products/ImageArchive/AddImageCollectionForm.zpt').__of__(self)
  213:     return pt()
  214:     
  215: def manage_AddImageCollection(self,id,title,ImageStoragePath,ImageViewerPath,RESPONSE=None):
  216:     """Add ImageCollection"""
  217:     newObj=ImageCollection(id,title,ImageStoragePath,ImageViewerPath)
  218:     self._setObject(id,newObj)
  219:     
  220:     if RESPONSE is not None:
  221:         RESPONSE.redirect('manage_main')
  222: 
  223: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>