version 1.89, 2006/05/22 13:54:37
|
version 1.92, 2006/05/22 21:09:53
|
Line 25 import Queue
|
Line 25 import Queue
|
import cgi |
import cgi |
import sys |
import sys |
import zLOG |
import zLOG |
|
import shutil |
|
|
from AccessControl import ClassSecurityInfo, getSecurityManager |
from AccessControl import ClassSecurityInfo, getSecurityManager |
|
|
Line 286 class ImageDigilib(Folder,Persistent,Imp
|
Line 286 class ImageDigilib(Folder,Persistent,Imp
|
|
|
) |
) |
|
|
|
|
|
|
def getAccessRight(self): |
def getAccessRight(self): |
"""get the accessright, return is string "extern" or "intern" """ |
"""get the accessright, return is string "extern" or "intern" """ |
return self.getRights(self.filename.split('.')[0]) |
return self.getRights(self.filename.split('.')[0]) |
Line 388 class ImageDigilib(Folder,Persistent,Imp
|
Line 390 class ImageDigilib(Folder,Persistent,Imp
|
os.chmod(filename,0664) |
os.chmod(filename,0664) |
except: |
except: |
"""hack""" |
"""hack""" |
#scale thumb |
#< thumb |
|
|
self.scaleThumbs() |
self.scaleThumbs() |
|
|
Line 486 class ImageDigilib(Folder,Persistent,Imp
|
Line 488 class ImageDigilib(Folder,Persistent,Imp
|
|
|
self.scaleWorkingVersions() |
self.scaleWorkingVersions() |
|
|
|
self.scaleToJpg() |
if RESPONSE: |
if RESPONSE: |
RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename) |
RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename) |
|
|
|
def scaleToJpg(self,RESPONSE=None): |
|
"""create a jpg""" |
|
|
|
#create backup of the original file |
|
|
|
imagePath=os.path.join(self.ImageStoragePath,self.filename) |
|
path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir") |
|
|
|
if not os.path.exists(path): |
|
os.mkdir(path,0775) |
|
os.chmod(path,0775) |
|
|
|
newName=os.path.join(path,self.getId()) |
|
|
|
if os.path.exists(newName): |
|
zLOG.LOG("ImageArchive:scaleToJpg", zLOG.INFO, "%s already exists"%newName) |
|
else: |
|
try: |
|
os.rename(imagePath,newName) |
|
except: |
|
zLOG.LOG("ImageArchive:scaleToJpg", zLOG.ERROR, "%s "%newName) |
|
return False |
|
|
|
ext= os.path.splitext(imagePath)[1].lower() |
|
if ext.rstrip()==".jpg": |
|
shutil.copy(newName,imagePath) |
|
print "copy",imagePath |
|
return True |
|
|
|
print "SCALED",imagePath |
|
dest="/Volumes/paviaExtern/docuserver/images/exhibitionImages/" |
|
dir=self.getId() |
|
src=path |
|
self.scale(dest=dest,dir=dir,src=path,scaleBy=1,RESPONSE=RESPONSE) |
|
return True |
|
|
def updateImage(self,_fileupload,_rename=None,RESPONSE=None): |
def updateImage(self,_fileupload,_rename=None,RESPONSE=None): |
"""lade neues Version des Bildes""" |
"""lade neues Version des Bildes""" |
Line 537 class ImageDigilib(Folder,Persistent,Imp
|
Line 574 class ImageDigilib(Folder,Persistent,Imp
|
#scale standard |
#scale standard |
|
|
self.scaleWorkingVersions() |
self.scaleWorkingVersions() |
|
self.scaleToJpg() |
if _rename: |
if _rename: |
self.renameImage(_fileupload.filename) |
self.renameImage(_fileupload.filename) |
|
|
Line 657 class ImageCollection(OrderedFolder, Per
|
Line 694 class ImageCollection(OrderedFolder, Per
|
|
|
leiden_meta_fields=['image_id','date','country','place','people','description','photographer'] |
leiden_meta_fields=['image_id','date','country','place','people','description','photographer'] |
|
|
|
scaledBasis="/mpiwg/temp/online/scaled" |
|
|
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 |
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 |
|
|
Line 665 class ImageCollection(OrderedFolder, Per
|
Line 703 class ImageCollection(OrderedFolder, Per
|
imgcoll_thumb = PageTemplateFile('zpt/thumb', globals()) |
imgcoll_thumb = PageTemplateFile('zpt/thumb', globals()) |
imgcoll_thumbMD = PageTemplateFile('zpt/thumbMD', globals()) |
imgcoll_thumbMD = PageTemplateFile('zpt/thumbMD', globals()) |
|
|
|
destBasis="/docuserver/scaled/" |
|
srcBasis="/docuserver/images" |
|
def scale(self,dest=None,dir=None,src=None,scaleTo=None,scaleBy=None,RESPONSE=None): |
|
"""scaler""" |
|
#scaleomatStr="ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ %s" |
|
scaleomatStr="/docuserver/libs/scaleomat/scaleomat.pl" |
|
|
|
destBasis=self.destBasis |
|
srcBasis=self.srcBasis |
|
if src: |
|
srcStr=" -src=%s"%src |
|
else: |
|
srcStr=" -src=%s"%srcBasis |
|
|
|
scaleStr=scaleomatStr+srcStr |
|
if dir: |
|
dirTmp=dir.replace(srcBasis,'') |
|
dirStr=" -dir=%s"%dirTmp |
|
scaleStr=scaleStr+dirStr |
|
elif filename: |
|
fileTmp=filename.replace(srcBasis,'') |
|
fileStr=" -dir=%s"%fileTmp |
|
scaleStr=scaleStr+fileStr |
|
else: |
|
zLOG.LOG("ImageCollection:scale",zLOG.ERROR,"no directory or filename given") |
|
return False |
|
|
|
if dest is not None: |
|
destStr=" -dest=%s"%os.path.join(destBasis,dest) |
|
scaleStr=scaleStr+destStr |
|
else: |
|
zLOG.LOG("ImageCollection:scale",zLOG.ERROR,"no destionation given") |
|
return False |
|
|
|
if scaleTo: |
|
scaleToStr=" -scaleto=%s"%scaleTo |
|
scaleStr=scaleStr+scaleToStr |
|
elif scaleBy: |
|
scaleByStr=" -scaleby=%s"%scaleBy |
|
scaleStr=scaleStr+scaleByStr |
|
else: |
|
zLOG.LOG("ImageCollection:scale",zLOG.ERROR,"no destionation given") |
|
return False |
|
|
|
|
|
#ret=scaleStr |
|
ret=os.popen2(scaleStr,1)[1].read() |
|
|
|
if RESPONSE: |
|
RESPONSE.write(ret) |
|
return True |
|
|
def getImageObject(self,name): |
def getImageObject(self,name): |
"""gibt objeckt name zurueck""" |
"""gibt objeckt name zurueck""" |
if hasattr(self,name): |
if hasattr(self,name): |
Line 784 class ImageCollection(OrderedFolder, Per
|
Line 874 class ImageCollection(OrderedFolder, Per
|
self.REQUEST.RESPONSE.close() |
self.REQUEST.RESPONSE.close() |
|
|
|
|
|
def scaleToJpgs(self,RESPONSE=None): |
|
"""scale all tifs to jps""" |
|
|
|
for x in self._objects: |
|
|
|
if (not hasattr(getattr(self,x['id']),'scaleToJpg')) or (not getattr(self,x['id']).scaleToJpg()): |
|
if RESPONSE: |
|
RESPONSE.write('error:%s'%x) |
|
|
|
|
|
|
def scaleThumbs(self,RESPONSE=None): |
def scaleThumbs(self,RESPONSE=None): |
"""scale thumbs""" |
"""scale thumbs""" |
|
|
#scale thumbs |
#scale thumbs |
ret=os.popen("/docuserver/libs/scaleomat/scaleomat.pl -src=/docuserver/images/ -dir=%s -dest=/docuserver/scaled/thumb -scaleto=100 &"% self.ImageViewerPath) |
dest=os.path.join(self.scaledBasis,'thumb') |
|
self.scale(dir=self.ImageStoragePath,dest=dest,scaleTo=100,RESPONSE=RESPONSE) |
|
#ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/thumb -scaleto=100 &"% self.ImageViewerPath) |
if RESPONSE: |
if RESPONSE: |
RESPONSE.write(ret.read()) |
RESPONSE.write(ret.read()) |
RESPONSE.write("\n") |
RESPONSE.write("\n") |
Line 801 class ImageCollection(OrderedFolder, Per
|
Line 903 class ImageCollection(OrderedFolder, Per
|
|
|
#scale standard |
#scale standard |
|
|
ret=os.popen("/docuserver/libs/scaleomat/scaleomat.pl -src=/docuserver/images -dir=%s -dest=/docuserver/scaled/small -scaleto=1000 &"% self.ImageViewerPath) |
dest=os.path.join(self.scaledBasis,'small') |
|
self.scale(dir=self.ImageStoragePath,dest=dest,scaleTo=1000,RESPONSE=RESPONSE) |
|
|
ret=os.popen("/docuserver/libs/scaleomat/scaleomat.pl -src=/docuserver/images -dir=%s -dest=/docuserver/scaled/medium -scaleto=2000 &"% self.ImageViewerPath) |
dest=os.path.join(self.scaledBasis,'medium') |
|
self.scale(dir=self.ImageStoragePath,dest=dest,scaleTo=2000,RESPONSE=RESPONSE) |
|
|
|
#ret=os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl -src=/mpiwg/online/ -dir=%s -dest=/mpiwg/temp/online/scaled/small -scaleto=2000 &"% self.ImageViewerPath) |
if RESPONSE: |
if RESPONSE: |
RESPONSE.write(ret.read()) |
RESPONSE.write(ret.read()) |
RESPONSE.write("\n") |
RESPONSE.write("\n") |
return "rescaling started" |
return "rescaling started" |
|
|
|
|
|
|
def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,serverPath=genericServerPath): |
def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString,serverPath=genericServerPath): |
self.id=id |
self.id=id |
self.title=title |
self.title=title |
Line 1061 class ImageCollection(OrderedFolder, Per
|
Line 1165 class ImageCollection(OrderedFolder, Per
|
ret="" |
ret="" |
#print self.__dict__ |
#print self.__dict__ |
for file in files: |
for file in files: |
if not file[0]==".": |
fn=os.path.splitext(file)[0] |
if self.__dict__.has_key(file): |
if not (file[0]=="."): |
|
if self.__dict__.has_key(file) or self.__dict__.has_key(fn+'.tif') or self.__dict__.has_key(fn+'.tiff') : |
|
|
ret=ret+"<br>"+file+" already exists!" |
ret=ret+"<br>"+file+" already exists!" |
else: |
else: |
Line 1147 class ImageCollection(OrderedFolder, Per
|
Line 1252 class ImageCollection(OrderedFolder, Per
|
ret="" |
ret="" |
#print self.__dict__ |
#print self.__dict__ |
for file in files: |
for file in files: |
if not file[0]==".": |
fn=os.path.splitext(file)[0] |
if self.__dict__.has_key(file): |
if not (file[0]=="."): |
|
if self.__dict__.has_key(file) or self.__dict__.has_key(fn+'.tif') or self.__dict__.has_key(fn+'.tiff') : |
|
|
ret=ret+"<br>"+file+" already exists!" |
ret=ret+"<br>"+file+" already exists!" |
|
|
else: |
else: |
ret=ret+"<br>"+file+" created!" |
ret=ret+"<br>"+file+" created!" |
newObj=ImageDigilib(file,file) |
newObj=ImageDigilib(file,file) |
Line 1764 class ImageCollectionMD(ImageCollection,
|
Line 1871 class ImageCollectionMD(ImageCollection,
|
ret="" |
ret="" |
#print self.__dict__ |
#print self.__dict__ |
for file in files: |
for file in files: |
if not file[0]==".": |
|
if self.__dict__.has_key(file): |
if not (file[0]=="."): |
|
fn=os.path.splitext(file)[0] |
|
if self.__dict__.has_key(file) or self.__dict__.has_key(fn+'.tif') or self.__dict__.has_key(fn+'.tiff') : |
|
|
ret=ret+"<br>"+file+" already exists!" |
ret=ret+"<br>"+file+" already exists!" |
|
|
else: |
else: |
ret=ret+"<br>"+file+" created!" |
ret=ret+"<br>"+file+" created!" |
newObj=ImageDigilib(file,file) |
newObj=ImageDigilib(file,file) |
Line 1798 class ImageCollectionMD(ImageCollection,
|
Line 1908 class ImageCollectionMD(ImageCollection,
|
|
|
self.scaleWorkingVersions() |
self.scaleWorkingVersions() |
|
|
|
self.scaleToJpgs() |
|
|
if RESPONSE: |
if RESPONSE: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
Line 1830 class ImageCollectionMD(ImageCollection,
|
Line 1942 class ImageCollectionMD(ImageCollection,
|
|
|
self.ZSQLAdd(args=args) |
self.ZSQLAdd(args=args) |
|
|
|
self.scaleThumbs() |
|
self.scaleWorkingVersions() |
|
|
|
getattr(self,fn).scaleToJpg() |
if RESPONSE: |
if RESPONSE: |
return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn) |
return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn) |
#return self.REQUEST['URL1']+'/'+fileupload.filename |
#return self.REQUEST['URL1']+'/'+fileupload.filename |