version 1.78, 2006/05/15 13:14:16
|
version 1.89, 2006/05/22 13:54:37
|
Line 1
|
Line 1
|
genericServerPath="http://www.mpiwg-berlin.mpg.de/zogilib_images" #can be changed with main config |
genericServerPath="http://www.mpiwg-berlin.mpg.de/zogilib_images" #can be changed with main config |
|
|
|
|
|
from Ft.Xml.Domlette import NonvalidatingReader |
from OFS.Folder import Folder |
from OFS.Folder import Folder |
from OFS.OrderedFolder import OrderedFolder |
from OFS.OrderedFolder import OrderedFolder |
from OFS.SimpleItem import SimpleItem |
from OFS.SimpleItem import SimpleItem |
Line 491 class ImageDigilib(Folder,Persistent,Imp
|
Line 491 class ImageDigilib(Folder,Persistent,Imp
|
RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename) |
RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename) |
|
|
|
|
def updateImage(self,file,rename=None,RESPONSE=None): |
def updateImage(self,_fileupload,_rename=None,RESPONSE=None): |
"""lade neues Version des Bildes""" |
"""lade neues Version des Bildes""" |
#teste ob Dokumenten ordner schon vorhanden |
#teste ob Dokumenten ordner schon vorhanden |
#imagePath=os.path.join(self.ImageStoragePath,self.getId()) |
#imagePath=os.path.join(self.ImageStoragePath,self.getId()) |
|
|
|
identifyField="filename" |
|
|
|
if _fileupload and _fileupload.filename!="": |
imagePath=os.path.join(self.ImageStoragePath,self.filename) |
imagePath=os.path.join(self.ImageStoragePath,self.filename) |
path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir") |
path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir") |
|
|
Line 518 class ImageDigilib(Folder,Persistent,Imp
|
Line 522 class ImageDigilib(Folder,Persistent,Imp
|
zLOG.LOG("ImageArchive:updateImage", zLOG.ERROR, "rename: %s -> %s didn't work!"%(imagePath,imageNewPath)) |
zLOG.LOG("ImageArchive:updateImage", zLOG.ERROR, "rename: %s -> %s didn't work!"%(imagePath,imageNewPath)) |
|
|
#lesen des upload files und schreiben |
#lesen des upload files und schreiben |
filedata=file.read() |
filedata=_fileupload.read() |
f=open(imagePath,"w") # if we wanted to have filename=id we should do it here! |
f=open(imagePath,"w") # if we wanted to have filename=id we should do it here! |
f.write(filedata) |
f.write(filedata) |
f.close() |
f.close() |
try: |
try: |
os.chmod(imagePath,0664) |
os.chmod(imagePath,0664) |
except: |
except: |
"""hack""" |
pass |
#scale thumb |
#scale thumb |
|
|
self.scaleThumbs() |
self.scaleThumbs() |
Line 534 class ImageDigilib(Folder,Persistent,Imp
|
Line 538 class ImageDigilib(Folder,Persistent,Imp
|
|
|
self.scaleWorkingVersions() |
self.scaleWorkingVersions() |
|
|
if rename: |
if _rename: |
self.renameImage(file.filename) |
self.renameImage(_fileupload.filename) |
|
|
|
|
|
args=self.REQUEST.form |
|
|
|
args['-identify']=identifyField+"="+args['_identifyField'] |
|
|
|
self.ZSQLChange(args=args) |
|
|
if RESPONSE: |
if RESPONSE: |
RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename) |
RESPONSE.redirect(self.aq_parent.absolute_url()+"?filename="+self.filename) |
Line 779 class ImageCollection(OrderedFolder, Per
|
Line 789 class ImageCollection(OrderedFolder, Per
|
"""scale thumbs""" |
"""scale thumbs""" |
|
|
#scale thumbs |
#scale thumbs |
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) |
ret=os.popen("/docuserver/libs/scaleomat/scaleomat.pl -src=/docuserver/images/ -dir=%s -dest=/docuserver/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 791 class ImageCollection(OrderedFolder, Per
|
Line 801 class ImageCollection(OrderedFolder, Per
|
|
|
#scale standard |
#scale standard |
|
|
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) |
ret=os.popen("/docuserver/libs/scaleomat/scaleomat.pl -src=/docuserver/images -dir=%s -dest=/docuserver/scaled/small -scaleto=1000 &"% self.ImageViewerPath) |
|
|
|
ret=os.popen("/docuserver/libs/scaleomat/scaleomat.pl -src=/docuserver/images -dir=%s -dest=/docuserver/scaled/medium -scaleto=2000 &"% self.ImageViewerPath) |
|
|
if RESPONSE: |
if RESPONSE: |
RESPONSE.write(ret.read()) |
RESPONSE.write(ret.read()) |
RESPONSE.write("\n") |
RESPONSE.write("\n") |
Line 1119 class ImageCollection(OrderedFolder, Per
|
Line 1132 class ImageCollection(OrderedFolder, Per
|
|
|
#scale thumb |
#scale thumb |
|
|
#self.scaleThumbs() |
self.scaleThumbs() |
|
|
#scale standard |
#scale standard |
|
|
#self.scaleWorkingVersions() |
self.scaleWorkingVersions() |
|
|
if RESPONSE: |
if RESPONSE: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
Line 1621 class ImageCollection(OrderedFolder, Per
|
Line 1634 class ImageCollection(OrderedFolder, Per
|
|
|
def getImageByName(self,filename,onlyName=None): |
def getImageByName(self,filename,onlyName=None): |
"""get filename""" |
"""get filename""" |
print repr(filename) |
#print repr(filename) |
#FIXME: umlaute in filename |
#FIXME: umlaute in filename |
fn=getattr(self,repr(filename),None) |
fn=getattr(self,repr(filename),None) |
if not fn: |
if not fn: |
filenameM=filename.split(".")[0] |
filenameM=filename.split(".")[0] |
|
|
founds=self.ZopeFind(self,obj_metatypes=['ImageDigilib']) |
founds=self.ZopeFind(self,obj_metatypes=['ImageDigilib']) |
|
|
|
|
for found in founds: |
for found in founds: |
foundM=found[0].split(".")[0] |
foundM=found[0].split(".")[0] |
|
|
|
if filenameM.lower()==foundM.lower(): |
|
if onlyName: |
|
return found[0] |
|
else: |
|
return found[1] |
|
#HACK teste noch ob am ende des filenames eventuell ein "_" und loesche das. |
|
if foundM[-1]=="_": |
|
foundM=foundM[0:-1] |
|
|
if filenameM.lower()==foundM.lower(): |
if filenameM.lower()==foundM.lower(): |
if onlyName: |
if onlyName: |
return found[0] |
return found[0] |
else: |
else: |
return found[1] |
return found[1] |
|
|
if onlyName: |
if onlyName: |
return filename |
return filename |
else: |
else: |
Line 1731 class ImageCollectionMD(ImageCollection,
|
Line 1758 class ImageCollectionMD(ImageCollection,
|
pass |
pass |
|
|
|
|
|
def ImportFiles(self,RESPONSE=None): |
|
"""Import the existing files of a folder""" |
|
files=os.listdir(self.ImageStoragePath) |
|
ret="" |
|
#print self.__dict__ |
|
for file in files: |
|
if not file[0]==".": |
|
if self.__dict__.has_key(file): |
|
|
|
ret=ret+"<br>"+file+" already exists!" |
|
else: |
|
ret=ret+"<br>"+file+" created!" |
|
newObj=ImageDigilib(file,file) |
|
#print newObj,file |
|
#print newObj |
|
try: |
|
self._setObject(file,newObj) |
|
except: |
|
"""nothing yet""" |
|
|
|
|
|
args={} |
|
args['_table']=self.imageCollectionConfig.getTable() |
|
args[self.imageCollectionConfig.getKey()]=file |
|
|
|
if not self.ZSQLInlineSearch(args=args): |
|
self.ZSQLAdd(args=args) |
|
#print ret |
|
#pt=PageTemplateFile('Products/ImageArchive/out.zpt')).__of__(self) |
|
#print self.ImageStoragePath |
|
|
|
#scale thumb |
|
|
|
|
|
self.scaleThumbs() |
|
|
|
#scale standard |
|
|
|
self.scaleWorkingVersions() |
|
|
|
if RESPONSE: |
|
RESPONSE.redirect('manage_main') |
|
|
def addImage(self): |
def addImage(self): |
"""Add an Image""" |
"""Add an Image""" |
|
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addImageMD.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addImageMD.zpt')).__of__(self) |
return pt() |
return pt() |
|
|
def addImage2(self,_fileupload,_fileName=None,_meta=None,_use_default=None,RESPONSE=None,**argv): |
def addImage2(self,_fileupload,_fileName=None,_meta=None,_use_default=None,RESPONSE=None): |
"""Add""" |
"""Add""" |
|
|
filenameKey="filename" |
filenameKey="filename" |
Line 1755 class ImageCollectionMD(ImageCollection,
|
Line 1825 class ImageCollectionMD(ImageCollection,
|
|
|
manage_AddImageDigilib(self,fn,_fileupload,meta=meta) |
manage_AddImageDigilib(self,fn,_fileupload,meta=meta) |
|
|
args[key]=_filename |
args=self.REQUEST.form |
|
args[filenameKey]=fn |
|
|
self.ZSQLAdd(args=argv) |
self.ZSQLAdd(args=args) |
|
|
if RESPONSE: |
if RESPONSE: |
return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn) |
return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn) |
Line 1802 class ImageCollectionMD(ImageCollection,
|
Line 1873 class ImageCollectionMD(ImageCollection,
|
|
|
def searchDB(self,REQUEST=None,RESPONSE=None,xml=None): |
def searchDB(self,REQUEST=None,RESPONSE=None,xml=None): |
"""search""" |
"""search""" |
#context.ZSQLFind(_table='vision_main') |
|
urlTmp=REQUEST['URL1'] |
|
|
|
url=urlTmp+'/searchResultXML?-table=vision_main&'+REQUEST['QUERY_STRING'] |
rc=[] |
|
fnIds={} |
|
for found in self.ZSQLInlineSearch(args=self.REQUEST.form): |
|
key=getattr(found,self.imageCollectionConfig.getKey()) |
|
key=self.getImageByName(key,onlyName="yes") |
|
rc.append((key,'',0)) |
|
fnIds[key]=('',0) |
|
|
if xml is None: |
rc.sort() |
RESPONSE.redirect('xmlinput?url='+urllib.quote(url)) |
self.REQUEST.SESSION['filenames']=rc |
|
self.REQUEST.SESSION['filenamesIds']=fnIds |
|
|
|
overview=self.ZopeFind(self,obj_ids=['overview_selectedMD.html']) |
|
|
|
if overview: |
|
return overview[0][1]() |
else: |
else: |
RESPONSE.redirect(url) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self) |
|
return pt() |
|
|
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self) |
|
return pt() |
|
|
|
#urlTmp=REQUEST['URL1'] |
|
|
|
#url=urlTmp+'/searchResultXML?-table=%s&'%self.imageCollectionConfig.getTable()+REQUEST['QUERY_STRING'] |
|
|
|
#if xml is None: |
|
# RESPONSE.redirect('xmlinput?url='+urllib.quote(url)) |
|
#else: |
|
# RESPONSE.redirect(url) |
|
|
def index_html(self,fn=None,selection=None,generic='No',REQUEST=None,RESPONSE=None): |
def index_html(self,fn=None,selection=None,generic='No',REQUEST=None,RESPONSE=None): |
"""main template collection""" |
"""main template collection""" |
Line 1831 class ImageCollectionMD(ImageCollection,
|
Line 1925 class ImageCollectionMD(ImageCollection,
|
self.REQUEST.SESSION['filenames']=ret |
self.REQUEST.SESSION['filenames']=ret |
#self.REQUEST.SESSION['filenamesIds']=fnIds |
#self.REQUEST.SESSION['filenamesIds']=fnIds |
|
|
overview=self.ZopeFind(self,obj_ids=['overview_selectedMD.html']) |
overview=self.ZopeFind(self,obj_ids=['overview_selected.html']) |
|
|
|
|
if overview and (generic =='No'): |
if overview and (generic =='No'): |
Line 1851 class ImageCollectionMD(ImageCollection,
|
Line 1945 class ImageCollectionMD(ImageCollection,
|
|
|
self.REQUEST.SESSION['filename']=filen[0:] |
self.REQUEST.SESSION['filename']=filen[0:] |
|
|
if not self.REQUEST.SESSION['filename']=="": |
# if not self.REQUEST.SESSION['filename']=="": |
url=getattr(self.getImageByName(self.REQUEST.SESSION['filename']),'absolute_url')() |
# url=getattr(self.getImageByName(self.REQUEST.SESSION['filename']),'absolute_url')() |
if mode=="view": |
# if mode=="view": |
self.REQUEST.RESPONSE.redirect(url) |
# self.REQUEST.RESPONSE.redirect(url) |
elif mode=="download": |
# elif mode=="download": |
self.REQUEST.RESPONSE.redirect(url+"/download") |
# self.REQUEST.RESPONSE.redirect(url+"/download") |
|
# |
if self.REQUEST.has_key('showall'): |
if self.REQUEST.has_key('showall'): |
|
|
self.REQUEST.SESSION['showall']=self.REQUEST.get('showall') |
self.REQUEST.SESSION['showall']=self.REQUEST.get('showall') |
Line 1867 class ImageCollectionMD(ImageCollection,
|
Line 1961 class ImageCollectionMD(ImageCollection,
|
|
|
if selection: |
if selection: |
#selection i.e. selection already stored at self.REQUEST.SESSION['filenames'] |
#selection i.e. selection already stored at self.REQUEST.SESSION['filenames'] |
overview=self.ZopeFind(self,obj_ids=['overview_selectedMD.html']) |
overview=self.ZopeFind(self,obj_ids=['overview_selected.html']) |
|
|
|
|
if overview and (generic =='No'):# |
if overview and (generic =='No'):# |
print "selected" |
|
print repr(overview[0][1]) |
|
return overview[0][1]() |
return overview[0][1]() |
else: |
else: |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selectedMD.zpt')).__of__(self) |
Line 1881 class ImageCollectionMD(ImageCollection,
|
Line 1974 class ImageCollectionMD(ImageCollection,
|
|
|
#no filename then show overview |
#no filename then show overview |
|
|
overview=self.ZopeFind(self,obj_ids=['overviewMD.html']) |
overview=self.ZopeFind(self,obj_ids=['overview.html']) |
if overview and (generic == 'No'): |
if overview and (generic == 'No'): |
|
|
|
|
Line 1900 class ImageCollectionMD(ImageCollection,
|
Line 1993 class ImageCollectionMD(ImageCollection,
|
|
|
if not selected and self.REQUEST.has_key('fn'): |
if not selected and self.REQUEST.has_key('fn'): |
imagename=self.REQUEST['fn'].split('/')[-1] |
imagename=self.REQUEST['fn'].split('/')[-1] |
|
|
|
imagename=self.getImageByName(imagename,onlyName=True) |
|
|
nr=self.getObjectPosition(imagename) |
nr=self.getObjectPosition(imagename) |
|
|
objects=self.objectIds() |
objects=self.objectIds() |
Line 1914 class ImageCollectionMD(ImageCollection,
|
Line 2010 class ImageCollectionMD(ImageCollection,
|
|
|
if not selected and self.REQUEST.has_key('fn'): |
if not selected and self.REQUEST.has_key('fn'): |
imagename=self.REQUEST['fn'].split('/')[-1] |
imagename=self.REQUEST['fn'].split('/')[-1] |
|
|
|
imagename=self.getImageByName(imagename,onlyName=True) |
|
|
nr=self.getObjectPosition(imagename) |
nr=self.getObjectPosition(imagename) |
|
|
objects=self.objectIds() |
objects=self.objectIds() |
Line 1982 class ImageCollectionMD(ImageCollection,
|
Line 2081 class ImageCollectionMD(ImageCollection,
|
xmldoc=urllib.urlopen(url).read() |
xmldoc=urllib.urlopen(url).read() |
#return xmldoc |
#return xmldoc |
try: |
try: |
dom=xml.dom.minidom.parseString(xmldoc) |
dom=NonvalidatingReader.parseUri(url) |
|
|
except: |
except: |
return "ERROR: (%s %s) %s"%(sys.exc_info()[0],sys.exc_info()[1],xmldoc) |
return "ERROR: (%s %s) %s"%(sys.exc_info()[0],sys.exc_info()[1],xmldoc) |
|
|
images=dom.getElementsByTagName('image') |
|
|
|
|
imagenames=dom.xpath("//imagename") |
rc=[] |
rc=[] |
fnIds={} |
fnIds={} |
for image in images: |
for imagename in imagenames: |
imagename=image.getElementsByTagName('imagename')[0] |
|
|
|
|
#imagename=image.xpath('./imagename')[0] |
|
#print "im",imagename |
|
|
|
|
|
|
idnr=image.getElementsByTagName('idnr')[0] |
idnr=imagename.xpath('../idnr')[0] |
id=getText(idnr.childNodes) |
id=getText(idnr.childNodes) |
try: |
try: |
numberOfPages=image.getElementsByTagName('numberOfPages')[0] |
numberOfPages=imagename.xpath('../numberOfPages')[0] |
except: |
except: |
numberOfPages=None |
numberOfPages=None |
|
|
Line 2015 class ImageCollectionMD(ImageCollection,
|
Line 2116 class ImageCollectionMD(ImageCollection,
|
texts=getText(imagename.childNodes).split("\n") #mehrere bilder in return getrennter liste |
texts=getText(imagename.childNodes).split("\n") #mehrere bilder in return getrennter liste |
for text in texts: |
for text in texts: |
if not text=="": |
if not text=="": |
|
#print "a" |
text=self.getImageByName(text,onlyName="yes") |
text=self.getImageByName(text,onlyName="yes") |
|
#print "b" |
try: |
try: |
rc.append((str(text),id,nop)) |
rc.append((str(text),id,nop)) |
fnIds[str(text)]=(id,nop) |
fnIds[str(text)]=(id,nop) |
Line 2023 class ImageCollectionMD(ImageCollection,
|
Line 2126 class ImageCollectionMD(ImageCollection,
|
rc.append((repr(text),id,nop)) |
rc.append((repr(text),id,nop)) |
fnIds[repr(text)]=(id,nop) |
fnIds[repr(text)]=(id,nop) |
|
|
|
#print "done" |
rc.sort() |
rc.sort() |
self.REQUEST.SESSION['filenames']=rc |
self.REQUEST.SESSION['filenames']=rc |
self.REQUEST.SESSION['filenamesIds']=fnIds |
self.REQUEST.SESSION['filenamesIds']=fnIds |