--- ImageArchive/ImageArchive.py 2005/10/07 10:51:38 1.64 +++ ImageArchive/ImageArchive.py 2005/10/25 19:42:59 1.69 @@ -1,3 +1,7 @@ +genericServerPath="http://www.mpiwg-berlin.mpg.de/zogilib_images" #can be changed with main config + + + from OFS.Folder import Folder from OFS.SimpleItem import SimpleItem from Globals import Persistent,package_home @@ -19,7 +23,7 @@ from threading import Thread import Queue import cgi -from AccessControl import ClassSecurityInfo +from AccessControl import ClassSecurityInfo, getSecurityManager try: from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder @@ -124,9 +128,14 @@ class generateSet: self.response+=(str("

Error in File: %s (possible missing)
\n"%filename)) else: if self.version=="working": - path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&dh=2000&dw=2000" + requestString=self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&dh=2000&dw=2000" + path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn="+requestString + else: - path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&mo=rawfile,hires" + requestString=self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&mo=rawfile,hires" + path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn="+requestString + + image=urllib.urlopen(path).read() @@ -169,7 +178,9 @@ class generateSet: self.response+=str("

Error in File: %s (missing?)
\n"%filename) else: - path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(ids[nr+i])[0]+"&mo=rawfile,hires" + + requestString=self.ImageViewerPath+"/"+os.path.splitext(ids[nr+i])[0]+"&mo=rawfile,hires" + path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn="+requestString image=urllib.urlopen(path).read() @@ -266,6 +277,30 @@ class ImageDigilib(Folder,Persistent,Imp ) + def getAccessRight(self): + """get the accessright, return is string "extern" or "intern" """ + return self.getRights(self.filename.split('.')[0]) + + + def isAccessible(self): + """gives true if obejct is accessible taking the rights of the user into account""" + + #TODO: implement rights, currently true if external and false if internal, and true if user has role authenticated + + username=self.REQUEST['AUTHENTICATED_USER'] + #print username + #print self.acl_users.getUserNames() + user=getSecurityManager().getUser() + + roles=user.getRoles() + if 'Authenticated' in roles: + return True + + if self.getAccessRight()=="extern": + return True + else: + return False + def addMetaObject(self,id,RESPONSE=None): """Add an MetaObject""" objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType) @@ -295,6 +330,7 @@ class ImageDigilib(Folder,Persistent,Imp self.filename=filename self.meta=meta + def getMeta(self): """ausgabe der metadaten""" return self.meta @@ -348,7 +384,10 @@ class ImageDigilib(Folder,Persistent,Imp def download(self,fmt="&mo=rawfile,hires",suffix=None): """download""" - path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+fmt + + requestString=self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+fmt + path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn="+requestString + if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(self.filename): filename=self.REQUEST.SESSION['filenamesIds'][self.filename][0]+"_"+self.filename @@ -368,16 +407,16 @@ class ImageDigilib(Folder,Persistent,Imp #return self.REQUEST.RESPONSE.redirect(path) def updateImageForm(self): - """form""" - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','upDateImageForm.zpt')).__of__(self) - return pt() + """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() + """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): @@ -482,8 +521,9 @@ class ImageDigilib(Folder,Persistent,Imp def thumb(self,url=None): """show thumb""" thumbname=os.path.splitext(self.filename)[0]+".jpg" + requestString=self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores" + path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn="+requestString - path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores" self.REQUEST.SESSION['string']=""% path if url: @@ -497,8 +537,11 @@ class ImageDigilib(Folder,Persistent,Imp """show thumb mit Metadaten erwarten image in ImageCollectionMD """ thumbname=os.path.splitext(self.filename)[0]+".jpg" - - path=self.scalerPath+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores" + + requestString=self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores" + path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn="+requestString + + self.REQUEST.SESSION['string']=""% path if url: @@ -513,12 +556,29 @@ class ImageDigilib(Folder,Persistent,Imp return pt() + def image(self,dw=None,dh=None): + """show image only with scaler""" + str=[] + if (not dw) and (not dh): + str.append("mo=file") + if dw: + str.append("dw=%s"%dw) + if dh: + str.append("dw=%s"%dh) + + str.append("lv=2&fn=%s"%self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]) + + + requestString="&".join(str) + + self.REQUEST.RESPONSE.redirect(getattr(self,'serverPath',genericServerPath)+"/scaledImage?"+requestString) + def index_html(self): - """show image""" + """show image with zogilib""" #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] + path=getattr(self,'serverPath',genericServerPath)+"?lv=2&fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0] return self.REQUEST.RESPONSE.redirect(path) @@ -550,7 +610,7 @@ class ImageCollection(Folder, Persistent security=ClassSecurityInfo() #scalerPath="http://127.0.0.1:18080/digitallibrary/servlet/Scaler/?fn=" - scalerPath="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn=" + #scalerPath="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn=" zipThreads={} zipThreads2={} @@ -562,9 +622,13 @@ 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 getServerPath(self): + """get Server path""" + return getattr(self,'serverPath',genericServerPath) + def getScalerPath(self): """get ScalerPath""" - return self.scalerPath + path=getattr(self,'serverPath',genericServerPath)+"/scaledImage?fn=" def getImageViewerPath(self): """get ImageViewerPath""" @@ -684,12 +748,13 @@ class ImageCollection(Folder, Persistent - def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString): + def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,serverPath=genericServerPath): self.id=id self.title=title self.ImageStoragePath=ImageStoragePath self.ImageViewerPath=ImageViewerPath self.defaultMetaString=defaultMetaString + self.serverPath=serverPath optTMP= Folder.manage_options @@ -822,7 +887,7 @@ class ImageCollection(Folder, Persistent def xmlinput(self,url): - """Anzeige von ausgewaehlten thumbs""" + """Anzeige