|
|
| version 1.24, 2008/06/27 18:20:40 | version 1.32, 2009/06/21 11:28:55 |
|---|---|
| Line 3 using the ExtFile Product, this version | Line 3 using the ExtFile Product, this version |
| DW 11.10.2006 | DW 11.10.2006 |
| """ | """ |
| import email | |
| from OFS.Folder import Folder | from OFS.Folder import Folder |
| from OFS.Image import File | from OFS.Image import File |
| from OFS.Image import cookId | from OFS.Image import cookId |
| Line 142 class extVersionedFileFolder(Folder,ECHO | Line 143 class extVersionedFileFolder(Folder,ECHO |
| ) | ) |
| 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 changeHistoryFileNamesForm(self): | def changeHistoryFileNamesForm(self): |
| """change position of version num""" | """change position of version num""" |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeHistoryFileNamesForm.zpt')).__of__(self) | pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeHistoryFileNamesForm.zpt')).__of__(self) |
| Line 514 class extVersionedFileFolder(Folder,ECHO | Line 528 class extVersionedFileFolder(Folder,ECHO |
| # get new extVersionedFile | # get new extVersionedFile |
| vf = self._newVersionedFile(id,title=id) | vf = self._newVersionedFile(id,title=id) |
| logging.debug("addFile id=%s vf=%s of %s"%(repr(id),repr(vf),repr(self))) | logging.error("addFile id=%s vf=%s of %s"%(repr(id),repr(vf),repr(self))) |
| # add its content (and don't index) | # add its content (and don't index) |
| obj=vf.addContentObject(id,vC,author=author,file=file,content_type=content_type,from_tmp=isRealFile,index=False) | obj=vf.addContentObject(id,vC,author=author,file=file,content_type=content_type,from_tmp=isRealFile,index=False) |
| # add file to this folder (this should do the indexing) | # add file to this folder (this should do the indexing) |
| Line 628 class extVersionedFileObject(ExtFile): | Line 642 class extVersionedFileObject(ExtFile): |
| def getData(self): | def getData(self): |
| """returns object content (calls ExtFile.index_html)""" | """returns object content (calls ExtFile.index_html)""" |
| #logging.debug("+++++++getData1:"+repr(self.get_filename())) | |
| filename = self.get_filename() | |
| #return ExtFile.index_html(self) | |
| try: | |
| logging.info("readfile:"+filename) | |
| return file(filename).read() | |
| except: | |
| logging.info("cannot readfile:"+filename) | |
| return ExtFile.index_html(self) | return ExtFile.index_html(self) |
| def getFileName(self): | |
| """return filename""" | |
| return self.get_filename() | |
| def addToFile(self,filehandle): | |
| filehandle.write(self.getData()) | |
| def addToFile2(self,filename): | |
| str="cat %s > %s"%(self.get_filename(),filename) | |
| os.popen(str) | |
| security.declarePublic('getVComment') | security.declarePublic('getVComment') |
| def getVComment(self): | def getVComment(self): |
| """get the comment of this file""" | """get the comment of this file""" |
| Line 692 class extVersionedFileObject(ExtFile): | Line 726 class extVersionedFileObject(ExtFile): |
| #self.REQUEST.RESPONSE.setHeader("Content-Length","str(len(txt)+1000)") | #self.REQUEST.RESPONSE.setHeader("Content-Length","str(len(txt)+1000)") |
| self.content_type="application/octet-stream" | self.content_type="application/octet-stream" |
| self.REQUEST.RESPONSE.redirect(self.absolute_url()) | return self.getData() |
| #self.REQUEST.RESPONSE.redirect(self.absolute_url()) | |
| #txt=urllib.urlopen(self.absolute_url()).read() | #txt=urllib.urlopen(self.absolute_url()).read() |
| #self.REQUEST.RESPONSE.write(txt) | #self.REQUEST.RESPONSE.write(txt) |
| Line 797 class extVersionedFile(CatalogAware,Fold | Line 832 class extVersionedFile(CatalogAware,Fold |
| self.id=id | self.id=id |
| self.title=title | self.title=title |
| self.lockedBy=lockedBy | self.lockedBy=lockedBy |
| if self.lockedBy is None: | |
| self.lockedBy = '' | |
| self.author=author | self.author=author |
| self.lastVersionNumber=0 | self.lastVersionNumber=0 |
| self.lastVersionId=None | self.lastVersionId=None |
| Line 896 class extVersionedFile(CatalogAware,Fold | Line 933 class extVersionedFile(CatalogAware,Fold |
| def getLockedBy(self): | def getLockedBy(self): |
| """get locked by""" | """get locked by""" |
| if self.lockedBy is None: | |
| self.lockedBy = '' | |
| return str(self.lockedBy) | return str(self.lockedBy) |
| def getLastVersionNumber(self): | def getLastVersionNumber(self): |
| Line 928 class extVersionedFile(CatalogAware,Fold | Line 967 class extVersionedFile(CatalogAware,Fold |
| lv=None | lv=None |
| for v in self.objectValues(self.content_meta_type): | for v in self.objectValues(self.content_meta_type): |
| logging.debug("getlastversion: check %s"%v.getId()) | #logging.debug("getlastversion: check %s"%v.getId()) |
| if v.getVersionNumber() > tmp: | if v.getVersionNumber() > tmp: |
| tmp=v.getVersionNumber() | tmp=v.getVersionNumber() |
| lv=v | lv=v |
| logging.debug("getlastversion: got %s"%lv.getId()) | #ogging.debug("getlastversion: got %s"%lv.getId()) |
| return lv | return lv |
| def getContentObject(self): | def getContentObject(self): |
| Line 951 class extVersionedFile(CatalogAware,Fold | Line 990 class extVersionedFile(CatalogAware,Fold |
| security.declarePublic('getData') | security.declarePublic('getData') |
| def getData(self): | def getData(self): |
| """Returns the content of the last version""" | """Returns the content of the last version""" |
| logging.debug("+++++++getData2") | |
| ob = self.getContentObject() | ob = self.getContentObject() |
| if ob is not None: | if ob is not None: |
| return ob.getData() | return ob.getData() |
| Line 994 class extVersionedFile(CatalogAware,Fold | Line 1034 class extVersionedFile(CatalogAware,Fold |
| #return "File: %s Version:%i modified:%s size:%s modified by:%s"%(self.title,lastVersion.versionNumber,lastVersion.getTime(),lastVersion.getSize(),lastVersion.lastEditor()) | #return "File: %s Version:%i modified:%s size:%s modified by:%s"%(self.title,lastVersion.versionNumber,lastVersion.getTime(),lastVersion.getSize(),lastVersion.lastEditor()) |
| return self.history() | return self.history() |
| def getVersionNr(self,nr): | |
| """get version with number nr""" | |
| tmp=0 | |
| lastVersion=None | |
| for version in self.ZopeFind(self): | |
| if hasattr(version[1],'versionNumber'): | |
| if int(version[1].versionNumber) ==nr : | |
| return version[1] | |
| return None | |
| security.declarePublic('getVersion') | security.declarePublic('getVersion') |
| def getVersion(self): | def getVersion(self): |
| # TODO: this is ugly and it returns the next version number | # TODO: this is ugly and it returns the next version number |
| Line 1039 class extVersionedFile(CatalogAware,Fold | Line 1092 class extVersionedFile(CatalogAware,Fold |
| return vl | return vl |
| security.declareProtected('AUTHENTICATED_USER','forceunlock') | security.declareProtected('AUTHENTICATED_USER','forceunlock') |
| def forceunlock(self,RESPONSE=None): | def forceunlock(self,RESPONSE=None,user=None): |
| """unlock""" | """unlock""" |
| #safe who had the lock | #safe who had the lock |
| logging.debug("extVersionFile: (forceunlock)"+str(user)) | |
| if self.lockedBy: | if self.lockedBy: |
| if user is not None: | |
| if str(self.lockedBy)==user: | |
| self.brokenLock=str(self.lockedBy) | self.brokenLock=str(self.lockedBy) |
| self.lockedBy='' | |
| else: | else: |
| self.brokenLock="" | self.brokenLock="" |
| else: | |
| self.brokenLock=str(self.lockedBy) | |
| self.lockedBy='' | self.lockedBy='' |
| else: | |
| self.brokenLock="" | |
| return self.brokenLock | return self.brokenLock |
| security.declareProtected('AUTHENTICATED_USER','unlock') | security.declareProtected('AUTHENTICATED_USER','unlock') |
| Line 1054 class extVersionedFile(CatalogAware,Fold | Line 1116 class extVersionedFile(CatalogAware,Fold |
| """unlock""" | """unlock""" |
| if str(self.lockedBy) in [str(self.REQUEST['AUTHENTICATED_USER'])]: | if str(self.lockedBy) in [str(self.REQUEST['AUTHENTICATED_USER'])]: |
| self.lockedBy='' | self.lockedBy='' |
| RESPONSE.redirect(self.REQUEST['HTTP_REFERER']) | self.redirect(RESPONSE,self.REQUEST['HTTP_REFERER'],) |
| else: | else: |
| return "Sorry, not locked by you! (%s,%s)"%(self.lockedBy,self.REQUEST['AUTHENTICATED_USER']) | return "Sorry, not locked by you! (%s,%s)"%(self.lockedBy,self.REQUEST['AUTHENTICATED_USER']) |
| Line 1186 class extVersionedFile(CatalogAware,Fold | Line 1248 class extVersionedFile(CatalogAware,Fold |
| def download(self): | def download(self): |
| """download""" | """download""" |
| self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%self.getContentObject().getId()) | |
| self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream") | txt=self.REQUEST['URL1']+'/'+self.getId()+'/'+self.getContentObject().getId()+'/download' |
| self.content_type="application/octet-stream" | |
| self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'/'+self.getId()+'/'+self.getContentObject().getId()) | self.REQUEST.RESPONSE.redirect(txt) |
| security.declareProtected('AUTHENTICATED_USER','downloadLocked') | security.declareProtected('AUTHENTICATED_USER','downloadLocked') |