File:  [Repository] / ImageArchive / ImageArchive.py
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Wed Dec 3 15:51:21 2003 UTC (20 years, 6 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD


Added mulitcolumn view

    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 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:             
  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))
  132:         rc.sort()
  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:
  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
  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)
  195:                 
  196:         #print ids
  197:         ids.sort()
  198:         return ids
  199: 
  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: 
  229:     def thumblistSelected(self):
  230:         """main template collection"""
  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)
  237:         return pt()
  238: 
  239:     def thumblist(self):
  240:         """main template collection"""
  241:         pt=PageTemplateFile('Products/ImageArchive/thumb2.zpt').__of__(self)
  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>