from OFS.Folder import Folder from OFS.SimpleItem import SimpleItem from Globals import Persistent,package_home from Acquisition import Implicit from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate import re import os import os.path import urllib import xml.dom.minidom import operator import tempfile import shutil def splitPath(str): str2=str.replace("\\","/") return os.path.split(str2)[1] def getText(nodelist): rc = "" for node in nodelist: if node.nodeType == node.TEXT_NODE: rc = rc + node.data return rc class ImageDigilib(Folder,Persistent,Implicit): """Anzeige object fuer digilib""" meta_type="ImageDigilib" leiden_meta_fields=['image_id','date','country','place','people','description','photographer'] manage_options = Folder.manage_options+( {'label':'Add Metadata','action':'addMetaObjectForm'}, ) def addMetaObject(self,id,RESPONSE=None): """Add an MetaObject""" objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType) request=self.REQUEST objectCreate=objectType.createObjectManager(id,request) self._setObject(id,objectCreate) objectCreate.propertysheets.meta.manage_editProperties(request) if RESPONSE is not None: RESPONSE.redirect('manage_main') def addMetaObjectForm(self): """Add Form""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMetaObject.zpt')).__of__(self) return pt() def __init__(self,id,filename,meta=None): self.id=id self.title=filename self.filename=filename self.meta=meta def getMeta(self): """ausgabe der metadaten""" return self.meta def uploadImage(self,fileupload,path_name): """upload an Image from an Requast""" #path_name=self.ImageStoragePath fn=splitPath(fileupload.filename) filename=path_name+"/"+fn filedata=fileupload.read() f=open(filename,"w") f.write(filedata) f.close() try: os.chmod(filename,0644) except: """hack""" #scale thumb self.scaleThumbs() #scale standard self.scaleWorkingVersions() def downloadWorkingVersion(self): """download working version (2000 pixel)""" return self.download(fmt="&dw=2000&dh=2000",suffix=".jpg") def download(self,fmt="&mo=rawfile,hires",suffix=None): """download""" path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+fmt 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 else: filename=self.filename if suffix: filename=os.path.splitext(filename)[0]+suffix self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%filename) self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream") image=urllib.urlopen(path).read() self.REQUEST.RESPONSE.write(image) self.REQUEST.RESPONSE.close() #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() def updateImage(self,file,RESPONSE): """lade neues Version des Bildes""" #teste ob Dokumenten ordner schon vorhanden imagePath=os.path.join(self.ImageStoragePath,self.getId()) path=os.path.join(self.ImageStoragePath,"."+self.getId()+".dir") print "path",path if not os.path.exists(path): os.mkdir(path,0775) os.chmod(path,0775) versionNumber=getattr(self,'versionNumber',0)+1 #teste ob version schon existiert while os.path.exists(os.path.join(path,"V%i_%s"%(versionNumber,self.getId()))): versionNumber+=1 #kopieren der bestehenden Version in den Versions ordner. imageNewPath=os.path.join(path,"V%i_%s"%(versionNumber,self.getId())) os.rename(imagePath,imageNewPath) #lesen des upload files und schreiben filedata=file.read() f=open(imagePath,"w") f.write(filedata) f.close() try: os.chmod(imagePath,0664) except: """hack""" #scale thumb self.scaleThumbs() #scale standard self.scaleWorkingVersions() if RESPONSE: RESPONSE.redirect(self.absolute_url()) return "done" def thumb(self): """show thumb""" thumbname=os.path.splitext(self.filename)[0]+".jpg" ## if not os.path.exists("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname): ## image=urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:18080/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+self.filename+"&dw=150&mo=lores").read() ## f=open("/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+thumbname,"w") ## f.write(image) ## f.close() ## os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/small 150 &"% self.ImageViewerPath) #DEVEL:take nausikaa for server solution path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0]+"&dw=100&dh=100&mo=lores" #path="/mpiwg/online/"+self.ImageViewerPath+"/"+thumbname self.REQUEST.SESSION['string']=""% path pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','thumb.zpt')).__of__(self) return pt() def index_html(self): """show image""" #DEVELOP: take first one for server path="http://content.mpiwg-berlin.mpg.de/zogilib_images?lv=2&fn="+self.ImageViewerPath+"/"+os.path.splitext(self.filename)[0] #path="http://localhost:8080/mpiwg/online/"+self.ImageViewerPath+"/"+self.filename #self.REQUEST.SESSION['string']=""% path #pt=PageTemplateFile('Products/ImageArchive/thumb.zpt')).__of__(self) return self.REQUEST.RESPONSE.redirect(path) def manage_AddImageDigilibForm(self): """Nothing yet""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','AddImageDigilibForm.zpt')).__of__(self) return pt() def manage_AddImageDigilib(self,id,fileupload,meta=None,RESPONSE=None): """Add ImageCollection""" #fileupload=self.REQUEST['fileupload'] fn=splitPath(fileupload.filename) newObj=ImageDigilib(id,fn,meta) self._setObject(id,newObj) getattr(self,id).uploadImage(fileupload,self.ImageStoragePath) if RESPONSE is not None: RESPONSE.redirect('manage_main') class ImageCollection(Folder, Persistent, Implicit): """Sammelordner für Bilder""" meta_type="ImageCollection" genericMetaDataType="leiden_meta" leiden_meta_fields=['image_id','date','country','place','people','description','photographer'] 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 createSet(self,RESPONSE=None,local=None,version="working"): """download aller gewaehlten files""" tempfile.tempdir="/tmp/archivesImageServer" tmpPath=tempfile.mktemp() tmpZip=tempfile.mktemp()+".zip" tmpFn=os.path.split(tmpZip)[1] if not os.path.exists(tempfile.tempdir): os.mkdir(tempfile.tempdir) if not os.path.exists(tmpPath): os.mkdir(tmpPath) if RESPONSE: RESPONSE.setHeader("Content-Type","text/html") RESPONSE.write("
I forgot, the selected files. Please reselect.\n") return 0 for id in self.REQUEST.SESSION['filenames']: if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(id[0]): filename=self.REQUEST.SESSION['filenamesIds'][id[0]][0]+"_"+id[0] else: filename=id[0] if RESPONSE: RESPONSE.write(str("
Get File: %s
\n"%filename))
if local:
if version=="working":
sourcePath="/mpiwg/temp/online/scaled/small/"+self.ImageViewerPath+"/"+id[0]
else:
sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+id[0]
targetPath=tmpPath+"/"+filename
try:
shutil.copyfile(sourcePath,targetPath)
except:
if RESPONSE:
RESPONSE.write(str("
Error in File: %s (possible missing)
\n"%filename))
else:
"""nothing"""
else:
if version=="working":
path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&dh=2000&dw=2000"
else:
path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(urllib.quote(id[0]))[0]+"&mo=rawfile,hires"
image=urllib.urlopen(path).read()
fh=file(tmpPath+"/"+filename,"w")
fh.write(image)
fh.close()
#folgeseiten
if int(self.REQUEST.SESSION['filenamesIds'][id[0]][1])>1:
ids=self.show_thumbs()
nr=ids.index(id[0])
numberOfPages=self.REQUEST.SESSION['filenamesIds'][id[0]][1]
for k in range(int(numberOfPages)-1):
i=k+1
if self.REQUEST.SESSION.has_key('filenamesIds') and self.REQUEST.SESSION['filenamesIds'].has_key(id[0]):
filename=self.REQUEST.SESSION['filenamesIds'][id[0]][0]+"_"+ids[nr+i]
else:
filename=id[0]
if RESPONSE:
RESPONSE.write(str("
Get File: %s
\n"%filename))
if local:
sourcePath="/mpiwg/online/"+self.ImageViewerPath+"/"+ids[nr+1]
targetPath=tmpPath+"/"+filename
try:
shutil.copyfile(sourcePath,targetPath)
except:
if RESPONSE:
RESPONSE.write(str("
Error in File: %s (missing?)
\n"%filename))
else:
"""nothing"""
else:
path="http://nausikaa2.rz-berlin.mpg.de/digitallibrary/servlet/Scaler/?fn="+self.ImageViewerPath+"/"+os.path.splitext(ids[nr+i])[0]+"&mo=rawfile,hires"
image=urllib.urlopen(path).read()
fh=file(tmpPath+"/"+filename,"w")
fh.write(image)
fh.close()
if RESPONSE:
RESPONSE.write("
Create Zip
")
RESPONSE.write("
This can take a while....
\n")
if RESPONSE:
fh=os.popen2("zip -u %s %s/*"%(tmpZip,tmpPath),1)[1]
RESPONSE.write("
")
for c in fh.read():
RESPONSE.write(c)
if c==")":
RESPONSE.write("
\n")
else:
os.popen("zip -u %s %s/*"%(tmpZip,tmpPath))
shutil.rmtree(tmpPath)
if RESPONSE:
RESPONSE.write("
finished
\n")
if RESPONSE:
len=os.stat(tmpZip)[6]
downloadUrl=self.absolute_url()+"/downloadSet"
RESPONSE.write("""
The file will be stored for a while, you can download it later, the URL is:
%s?fn=%s\n"""%(tmpFn,downloadUrl,tmpFn))
RESPONSE.close()
def downloadSet(self,fn):
"""download prepared set"""
filename="/tmp/archivesImageServer/"+fn
self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename="%s" """%"image.zip")
self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
len=os.stat(filename)[6]
self.REQUEST.RESPONSE.setHeader("Content-Length",len)
images=file(filename).read()
self.REQUEST.RESPONSE.write(images)
self.REQUEST.RESPONSE.close()
def scaleThumbs(self,RESPONSE=None):
"""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)
if RESPONSE:
RESPONSE.write(ret.read())
RESPONSE.write("\n")
return "RESCALING STARTED"
def scaleWorkingVersions(self,RESPONSE=None):
"""scale working versions"""
#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)
if RESPONSE:
RESPONSE.write(ret.read())
RESPONSE.write("\n")
return "rescaling started"
def __init__(self,id,title,ImageStoragePath,ImageViewerPath,defaultMetaString):
self.id=id
self.title=title
self.ImageStoragePath=ImageStoragePath
self.ImageViewerPath=ImageViewerPath
self.defaultMetaString=defaultMetaString
manage_options = Folder.manage_options+(
{'label':'Main Config','action':'ImageCollection_config'},
{'label':'Import','action':'ImportFiles'},
{'label':'Recalculate Metadata','action':'recalculateMeta'},
{'label':'Import Metadata','action':'importMetaForm'},
{'label':'Rescale thumbs','action':'scaleThumbs'},
{'label':'Rescale working version','action':'scaleWorkingVersions'},
{'label':'Weight (ECHO)','action':'weightForm'},
)
def weightForm(self):
"""Weight"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeWeight.zpt')).__of__(self)
return pt()
def changeWeight(self,weight,RESPONSE=None):
"""Change weight"""
self.weight=weight
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def importMetaForm(self):
"""import metadata"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','importMeta.zpt')).__of__(self)
return pt()
def importMeta(self,fileupload,tag):
"""import"""
filedata=fileupload.read()
dom=xml.dom.minidom.parseString(filedata)
rows=dom.getElementsByTagName(tag)
#print "ROWS",rows
request=self.REQUEST
for row in rows:
for a in self.leiden_meta_fields:
self.REQUEST[a]=getText(row.getElementsByTagName(a)[0].childNodes)
image_id=self.REQUEST['image_id']
if (not hasattr(self,image_id)) & (not image_id==""):
#print image_id
newObj=ImageCollection(str(image_id),image_id,'','','')
self._setObject(str(image_id),newObj)
id="leiden_meta_data_file"
self.REQUEST['id']=id
#objectType=getattr(self.Control_Panel.Products.ImageMetaData,self.genericMetaDataType)
#objectCreate=objectType.createInObjectManager(id,request)
#href="http://localhost:8080/tests/testcollection/manage_addProduct/ImageMetaData/leiden_meta_factory/"
try:
addID=getattr(self,image_id)
objectCreate=addID.manage_addProduct['ImageMetaData'].leiden_meta_add(id)
#getattr(self,image_id)._setObject(id,objectCreate)
obj=getattr(addID,id)
obj.propertysheets.meta.manage_editProperties(request)
except:
"""nothing"""
return "OK"
def nextImage(self,request,selected=None,returnFn=None):
"""show nextimage"""
try:
ids=self.show_thumbs()
if request.SESSION.has_key("filename"):
filename=request.SESSION["filename"]
try:
nr=ids.index(filename)
except:
nr=0
else:
nr=0
if nr==len(ids)-1:
return ""
else:
if returnFn:
return ids[nr+1]
if selected:
return "next image"
else:
return "next image"
except:
return ""
def prevImage(self,request,selected=None):
"""show nextimage"""
#return self.getId()
try:
ids=self.show_thumbs()
if request.SESSION.has_key("filename"):
filename=request.SESSION["filename"]
try:
nr=ids.index(filename)
except:
nr=0
else:
nr=0
if nr==0:
return ""
else:
if selected:
return "previous image"
else:
return "previous image"
except:
return ""
def meta_default(self,filename):
"""url der metadaten"""
return self.defaultMetaString % filename
def getThumbAttribute(self,id,attr):
if hasattr(self,id):
return getattr(getattr(self,id),attr)
else:
if attr=='title':
return "Missing Image:%s" % id
def getThumbFunction(self,id,attr):
#return "DUMP"
if hasattr(self,id):
return getattr(getattr(self,id),attr)()
def xmlinput(self,url):
"""Anzeige von ausgewaehlten thumbs"""
#return url
url=urllib.unquote(url)
xmldoc=urllib.urlopen(url).read()
#print url
try:
dom=xml.dom.minidom.parseString(xmldoc)
except:
return xmldoc
images=dom.getElementsByTagName('image')
rc=[]
fnIds={}
for image in images:
imagename=image.getElementsByTagName('imagename')[0]
text=getText(imagename.childNodes)
idnr=image.getElementsByTagName('idnr')[0]
id=getText(idnr.childNodes)
numberOfPages=image.getElementsByTagName('numberOfPages')[0]
nopT=getText(numberOfPages.childNodes)
try:
nop=int(nopT)
except:
nop=0
if not text=="":
rc.append((str(text),id,nop))
fnIds[str(text)]=(id,nop)
rc.sort()
self.REQUEST.SESSION['filenames']=rc
self.REQUEST.SESSION['filenamesIds']=fnIds
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','overview_selected.zpt')).__of__(self)
return pt()
def recalculateMeta(self):
"""recalculate the metadata"""
for entryid in self.__dict__:
entry=getattr(self,entryid)
if hasattr(entry,'meta_type'):
if entry.meta_type=="ImageDigilib":
entry.meta=entry.meta_default(entry.getId())
return "OK"
def addImage(self):
"""Add an Image"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addImage.zpt')).__of__(self)
return pt()
def addImage2(self,fileupload,meta,use_default=None,RESPONSE=None):
"""Add"""
#print "FU",fileupload
if use_default:
try:
meta=self.meta_default(fileupload.filename)
except:
meta=None
else:
meta=None
fn=splitPath(fileupload.filename)
manage_AddImageDigilib(self,fn,fileupload,meta=meta)
return RESPONSE.redirect(self.REQUEST['URL1']+'/'+fn)
#return self.REQUEST['URL1']+'/'+fileupload.filename
def ImportFiles2(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+"
"+file+" already exists!"
else:
ret=ret+"
"+file+" created!"
meta=self.meta_default(file)
newObj=ImageDigilib(file,file,meta)
#print newObj,file
#print newObj
self._setObject(file,newObj)
#print ret
#pt=PageTemplateFile('Products/ImageArchive/out.zpt')).__of__(self)
#print self.ImageStoragePath
#scale thumb
self.scaleThumbs()
#scale standard
self.scaleWorkingVersions()
RESPONSE.redirect('manage_main')
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+"
"+file+" already exists!"
else:
ret=ret+"
"+file+" created!"
newObj=ImageDigilib(file,file)
#print newObj,file
#print newObj
try:
self._setObject(file,newObj)
except:
"""nothing yet"""
#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 ImageCollection_config(self):
"""Nothing yet"""
if not hasattr(self,'defaultMetaString'):
self.defaultMetaString=""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','ChangeImageCollectionForm.zpt')).__of__(self)
return pt()
def ChangeImageCollection(self,title,ImageStoragePath,ImageViewerPath,defaultMetaString,RESPONSE=None):
"""Change"""
self.title=title
self.ImageStoragePath=ImageStoragePath
self.ImageViewerPath=ImageViewerPath
self.defaultMetaString=defaultMetaString
if RESPONSE is not None:
RESPONSE.redirect('manage_main')
def show_selected_thumbs(self):
#ids=[]
return self.REQUEST.SESSION['filenames']
def show_thumbs(self):
ids=[]
for entry in self.__dict__:
#print entry
if hasattr(getattr(self,entry),'thumb'):
ids.append(entry)
#print ids
ids.sort()
return ids
def firstSets(self,selected=None):
ids=self.show_thumbs()
if ids:
if selected:
return "first sets"
else:
return "first sets"
def lastSets(self,selected=None):
ids=self.show_thumbs()
if ids:
colRows=self.getColTimesRow()
if colRows[1]:
nr=len(ids)-colRows[0]*colRows[1]
else:
nr=0
if nr<0:
nr=0
if selected:
return "last set"
else:
return "last sets"
def nextSets(self,selected=None):
"""show nextimage"""
ids=self.show_thumbs()
colRows=self.getColTimesRow()
if ids:
if colRows[1]:
if self.REQUEST.SESSION.has_key("filename"):
filename=self.REQUEST.SESSION["filename"]
try:
nr=ids.index(filename)+colRows[0]*colRows[1]
if nr>=len(ids):
nr=len(ids)-1
except:
nr=0
else:
nr=0
if nr==len(ids)-1:
return ""
else:
if selected:
return "next set"
else:
return "next set"
def prevSets(self,selected=None):
"""show nextimage"""
#return self.getId()
ids=self.show_thumbs()
colRows=self.getColTimesRow()
if ids:
if colRows[1]:
if self.REQUEST.SESSION.has_key("filename"):
filename=self.REQUEST.SESSION["filename"]
try:
nr=ids.index(filename)-colRows[0]*colRows[1]
if nr<0:
nr=0
except:
nr=0
else:
nr=0
try:
num=ids.index(filename)
except:
num=0
if num==0:
return ""
else:
if selected:
return "previous sets"
else:
return "previous sets"
else:
return ""
def showRuler(self,selected=None):
"""show ruler"""
showall =self.REQUEST.SESSION.get('showall','no')
ids=self.show_thumbs()
if len(ids)==0:
return "No entries"
if showall=='no':
ids=self.show_thumbs()
colRows=self.getColTimesRow()
num=int(len(ids)/(colRows[0]*colRows[1]))
if not (operator.mod(len(ids),colRows[0]*colRows[1])==0):
num+=1
a=colRows[0]*colRows[1]
#print num,num+1
if num>1:
ret="Show thumbnail group no:"
for i in range(num):
if (operator.mod(i,10)==0) and i>0:
ret +="
" #alle 10 linebreak einfuegen
k=i*a
if selected:
href=self.REQUEST['URL1']+"/selection?filename="+ids[k]
else:
href=self.REQUEST['URL1']+"?filename="+ids[int(k)]
ret+="""%i """%(href,i)
else:
ret=""
ret+="""show all """%self.REQUEST['URL1']
else:
ret="""show groups """%self.REQUEST['URL1']
return ret
def show_thumbs_selected_rows(self,numberOfColumns):
"""Ausgabe anzahl"""
ids=self.show_selected_thumbs()
self.REQUEST.SESSION['ids']=ids
number=int(len(ids)/numberOfColumns)+1
self.REQUEST.SESSION['number']=range(number)
return range(number+1)
def setColTimesRowForm(self):
"""form for matrix setting"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','selectColTimesRow.zpt')).__of__(self)
return pt()
def setDone(self):
"""done"""
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changedColTimesRow.zpt')).__of__(self)
return pt()
def setColTimesRow(self,cols,rows):
"""set coltimes row"""
RESPONSE=self.REQUEST.RESPONSE
if not rows:
rows=None
if rows=="":
rows=None
if rows:
RESPONSE.setCookie("ImageViewerRows",rows)
RESPONSE.setCookie("ImageViewerCols",cols)
RESPONSE.redirect(self.REQUEST['URL1']+"/setDone")
def getColTimesRow(self,showall='No'):
"""coltimesrow"""
REQUEST=self.REQUEST
"""matrix"""
if REQUEST.cookies.has_key("ImageViewerRows"):
try:
rows=int(REQUEST.cookies["ImageViewerRows"])
except:
rows=6
else:
rows=6
if REQUEST.cookies.has_key("ImageViewerCols"):
#print "COLS",REQUEST.cookies["ImageViewerCols"]
cols=int(REQUEST.cookies["ImageViewerCols"])
else:
cols=2
idsnumber=len(self.show_thumbs())
if rows:
if cols*rows >idsnumber:
rows=int(idsnumber/cols)+1
#print cols,rows
if showall=='yes':
rows=int(idsnumber/cols)+1
return (cols,rows)
def show_thumbs_rows(self,numberOfColumns,numberOfRows=None,startId=None):
"""Ausgabe anzahl"""
idsAll=self.show_thumbs()
if len(idsAll)==0: #keine Einträge
return 0
if self.REQUEST.SESSION.has_key("filename"):
filename=self.REQUEST.SESSION["filename"]
try:
startId=filename
if startId=="":
startId=idsAll[0][0:]
except:
startId=idsAll[0][0:]
else:
startId=idsAll[0][0:]
if numberOfRows:
startPic=idsAll.index(startId)
try:
startPic=idsAll.index(startId)
endPic=startPic+numberOfColumns*numberOfRows
ids=idsAll[startPic:endPic]
except:
ids=idsAll
else:
ids=idsAll
self.REQUEST.SESSION['ids']=ids
number=int(len(ids)/numberOfColumns)+1
return range(number+1)
def show_thumbs_columns(self,row,numberOfColumns):
"""Ausgabe einer Liste der Reihe"""
ids=self.REQUEST.SESSION['ids']
max=len(ids)
if (row*numberOfColumns)