--- cdli/cdli_files.py 2009/05/15 13:13:31 1.105 +++ cdli/cdli_files.py 2009/06/24 11:13:47 1.112 @@ -25,6 +25,7 @@ import copy import codecs import sys from BTrees.IOBTree import IOBTree +from BTrees.OOBTree import OOBTree import cdliSplitter from sets import Set import md5 @@ -342,7 +343,7 @@ def splitatf(fh,dir=None,ext=None): for lineTmp in iter: lineTmp=lineTmp.replace(codecs.BOM_UTF8,'') # make sure that all BOM are removed.. for line in lineTmp.split("\r"): - #logging.log("Deal with: %s"%line) + #logging.info("Deal with: %s"%line) if ext: i+=1 if (i%100)==0: @@ -720,6 +721,19 @@ class CDLIRoot(Folder): splitter = {'words':cdliSplitter.wordSplitter(), 'graphemes':cdliSplitter.graphemeSplitter()} + def redirect(self,RESPONSE,url): + """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen""" + + timeStamp=time.time() + + if url.find("?")>-1: #giebt es schon parameter + addStr="&time=%s" + else: + addStr="?time=%s" + + RESPONSE.setHeader('Last-Modified',email.Utils.formatdate().split("-")[0]+'GMT') + logging.error(email.Utils.formatdate()+' GMT') + RESPONSE.redirect(url+addStr%timeStamp) def unicodify(self,txt): return unicodify(txt) @@ -755,7 +769,9 @@ class CDLIRoot(Folder): """view an Object""" ob = self.CDLICatalog({'title':id}) if len(ob)>0: - RESPONSE.redirect(ob[0].getLastVersion().absolute_url()) + logging.info("objekt:"+repr(ob[0])) + #RESPONSE.redirect(ob[0].getLastVersion().absolute_url()) + RESPONSE.redirect(ob[0].absolute_url+"/download") return "not found" def addCDLIFileObjectForm(self,id,RESPONSE): """view an Object""" @@ -778,10 +794,14 @@ class CDLIRoot(Folder): RESPONSE.redirect(ob[0].absolute_url+"/unlock") return "not found" + def getFileObject(self,fileId): """get an object""" + logging.debug("getFileObj:"+repr(fileId)) + if isinstance(fileId,CDLIFileObject): # support for old baskets + return fileId x=self.v_files.get(fileId) - #logging.debug(x) + return x def getFileObjectLastVersion(self,fileId): @@ -1027,9 +1047,28 @@ class CDLIRoot(Folder): """unquote url""" return urllib.unquote_plus(str) + def changeUserForPObjectFromFile(self,user,fname): + """aendere user fuer alle p in fiele""" + pns = file(os.path.join(package_home(globals()),'inputs',fname),"r") + for p in pns.readlines(): + p=p.lstrip().rstrip() + logging.info(str(p+".atf")) + pObj=self.getFileObject(p+".atf") + if pObj is not None: + logging.info(pObj) + lv=pObj.getContentObject() + logging.info("author:"+lv.author) + lv.author=user + lv.versionComment="XXXXXXX" - def forceunlock(self,REQUEST=None,user=None): + + + gen + def forceunlock(self,REQUEST=None,user=None,fid=None): "break all locks" + if fid is not None: + self.getFileObject(fid).forceunlock() + return fid ret=[] for f in self.ZopeFind(self,obj_metatypes="CDLI file",search_sub=1): @@ -1050,8 +1089,8 @@ class CDLIRoot(Folder): """hole alle gesperrten files""" ret={} - for f in self.ZopeFind(self,obj_metatypes="CDLI file",search_sub=1): - lb = f[1].lockedBy + for nm,f in self.v_files.items(): + lb = str(f.lockedBy) add=False if (lb is not None) and (lb!=""): @@ -1063,7 +1102,7 @@ class CDLIRoot(Folder): if add==True: if not ret.has_key(lb): ret[lb]=[] - ret[lb].append(f[0]) + ret[lb].append(nm) if REQUEST is not None: