--- ImageArchive/ImageArchive.py 2005/06/05 10:10:44 1.60 +++ ImageArchive/ImageArchive.py 2005/08/09 16:48:29 1.63 @@ -4,6 +4,7 @@ from Globals import Persistent,package_h from Acquisition import Implicit from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate +from xmlrpclib import ServerProxy import re import os import os.path @@ -16,12 +17,15 @@ from types import * import time from threading import Thread import Queue +import cgi +from AccessControl import ClassSecurityInfo try: from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder except: print "ZSQL Extend Folder nicht importiert" print "Metadatendfolder funktioniert nicht!!!" - + class ZSQLExtendFolder: + """leer""" try: from Products.ECHO_content.ECHO_collection import ECHO_basis except: @@ -110,6 +114,7 @@ class generateSet: else: sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+id[0] targetPath=tmpPath+"/"+filename + try: shutil.copyfile(sourcePath,targetPath) except: @@ -131,7 +136,7 @@ class generateSet: #folgeseiten if int(self.filenamesIds[id[0]][1])>1: #ids=self.show_thumbs() - + nr=self.ids.index(id[0]) try: nr=self.ids.index(id[0]) except: @@ -242,11 +247,13 @@ class metaData(SimpleItem): ret+="

%s=%s

"%(tag,getattr(self,tag)) return ret+"" - + + + class ImageDigilib(Folder,Persistent,Implicit): """Anzeige object fuer digilib""" meta_type="ImageDigilib" - + security=ClassSecurityInfo() leiden_meta_fields=['image_id','date','country','place','people','description','photographer'] manage_options = Folder.manage_options+( @@ -360,12 +367,13 @@ class ImageDigilib(Folder,Persistent,Imp """form""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','upDateImageForm.zpt')).__of__(self) return pt() - + security.declareProtected('View management screens','renameImageForm') def renameImageForm(self): """form""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','renameImageForm.zpt')).__of__(self) return pt() - + + security.declareProtected('View management screens','renameImage') def renameImage(self,newname,RESPONSE=None): """umbenennen""" #umbennen des files im folder @@ -503,7 +511,7 @@ class ImageDigilib(Folder,Persistent,Imp def index_html(self): """show image""" #DEVELOP: take first one for server - + #path="http://127.0.0.1:8080/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0] path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0] return self.REQUEST.RESPONSE.redirect(path) @@ -533,8 +541,8 @@ class ImageCollection(Folder, Persistent """Sammelordner für Bilder""" meta_type="ImageCollection" - scalerPath="http://127.0.0.1:18080/digitallibrary/servlet/Scaler/?fn=" - #scalerPath="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn=" + #scalerPath="http://127.0.0.1:18080/digitallibrary/servlet/Scaler/?fn=" + scalerPath="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn=" zipThreads={} zipThreads2={} @@ -546,7 +554,18 @@ class ImageCollection(Folder, Persistent defaultMetaString="http://fm-web.mpiwg-berlin.mpg.de:8050/FMRes/FMPJS?-db=Wissenschaftlerportraits.fp5&-layID=69&-token=25&-max=1&-format=formvwcss.htm&-mode=browse&images::filename=%s&-find" ## TEST FUER IMAGEDATENBANK WP - + def getScalerPath(self): + """get ScalerPath""" + return self.scalerPath + + def getImageViewerPath(self): + """get ImageViewerPath""" + return self.ImageViewerPath + + def getImageStoragePath(self): + """get ImageStoragePath""" + return self.ImageStoragePath + def refreshTxt(self): """txt fuer refresh""" tn=self.REQUEST.SESSION['threadName'] @@ -1285,13 +1304,13 @@ class ImageCollection(Folder, Persistent return (cols,rows) - def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None): + def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None,showall="No"): """Ausgabe anzahl""" idsAll=self.show_thumbs() if len(idsAll)==0: #keine Einträge return 0 - if self.REQUEST.SESSION.has_key("filename"): + if self.REQUEST.SESSION.has_key("filename") and not (showall=="yes"): filename=self.REQUEST.SESSION["filename"] filename=self.getImageByName(filename,onlyName="yes") @@ -1463,14 +1482,17 @@ def manage_AddImageCollection(self,id,ti class ImageCollectionMD(ImageCollection,ZSQLExtendFolder): """Imageviewer and Metadata""" meta_type="ImageCollection MD" - scalerPath="http://127.0.0.1:18080/digitallibrary/servlet/Scaler/?fn=" - #scalerPath="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn=" + #scalerPath="http://127.0.0.1:18080/digitallibrary/servlet/Scaler/?fn=" + scalerPath="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn=" manage_options=ImageCollection.manage_options+( {'label':'ZSQLExtend','action':'changeZSQLExtendForm'}, ) - changeZSQLExtendForm=ZSQLExtendFolder.changeZSQLExtendForm - + try: + changeZSQLExtendForm=ZSQLExtendFolder.changeZSQLExtendForm + except: + pass + def setGenericSearchStringForm(self): """form setze generischen search string fuer MD""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','setGenericSearchStringForm.zpt')).__of__(self) @@ -1558,3 +1580,85 @@ def manage_AddImageCollectionIFrame(self RESPONSE.redirect('manage_main') +class ImageZogiLib(ImageDigilib): + """Anzeige Object fuer Bilder ausserhalb von collections + ImageViewerPath und ImageStoragePath und wenn vorhanden Pfad zur Collection + werden zusaetzlich abgespeichert + """ + + meta_type="ImageZogiLib" + + manage_options=ImageDigilib.manage_options+( + {'label':'Main Config','action':'changeImageZogiLibForm'}, + ) + + def __init__(self,id,fn,ImageViewerPath,ImageStoragePath,scalerPath,ImageCollectionPath=None,REQUEST=None): + ImageDigilib.__init__(self,id,fn) + self.ImageViewerPath=ImageViewerPath + self.ImageStoragePath=ImageStoragePath + self.ImageCollectionPath=ImageCollectionPath + self.scalerPath=scalerPath + + def changeImageZogiLibForm(self): + """change zogilib Form""" + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeImageZogiLib.zpt')).__of__(self) + return pt() + + + def changeImageZogilib(fn,ImageViewerPath,ImageStoragePath,scalerPath,ImageCollectionPath,REQUEST=None): + """Change it""" + self.ImageViewerPath=ImageViewerPath + self.ImageStoragePath=ImageStoragePath + self.ImageCollectionPath=ImageColectionPath + self.scalerPath=scalerPath + +def manage_AddImageZogiLib(self,id=None,ImageViewerPath=None,ImageStoragePath=None,fileUpload=None,ImageCollectionPath=None,scalerPath=None,libPath=None,caption=None,RESPONSE=None): + """hinzufuegen eineis zogilibImage""" + + if libPath: + splitted=libPath.split("?") + urlSplit=splitted[0].split("/") + params=cgi.parse_qs(splitted[1]) + #is LibPath a digilib path? + if urlSplit[-1]=="Scaler": + if type(params['fn']) is ListType: + fnParam=params['fn'][0] + else: + fnParam=params['fn'] + fileNameSplit=os.path.split(fnParam) + ImageViewerPath=fileNameSplit[0] + id=fileNameSplit[1] + scalerPath=splitted[0]+"?fn=" + else: #assume if not the path is a path to an ImageCollection + if type(params['filename']) is ListType: + id=params['filename'][0] + else: + id=params['filename'] + + server=ServerProxy(splitted[0]) + ImageCollectionPath=libPath + ImageViewerPath=server.getImageViewerPath() + ImageStoragePath=server.getImageStoragePath() + scalerPath=server.getScalerPath() + + + + if fileUpload: + fn=splitPath(fileUpload.filename) + else: + fn=id + + newObj=ImageZogiLib(id,fn,ImageViewerPath,ImageStoragePath,scalerPath,ImageCollectionPath) + + self._setObject(id,newObj) + getattr(self,id).caption=caption[0:] + if fileUpload: + getattr(self,id).uploadImage(fileupload,self.ImageStoragePath) + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + + +def manage_AddImageZogiLibForm(self): + """to be done""" +