|
|
| version 1.9, 2007/09/10 19:27:55 | version 1.17, 2007/11/23 18:51:39 |
|---|---|
| Line 135 class extVersionedFileFolder(Folder,ECHO | Line 135 class extVersionedFileFolder(Folder,ECHO |
| {'label':'Generate Index.html','action':'generateIndexHTML'}, | {'label':'Generate Index.html','action':'generateIndexHTML'}, |
| {'label':'Generate Image Index.html','action':'generateIndexHTML_image'}, | {'label':'Generate Image Index.html','action':'generateIndexHTML_image'}, |
| {'label':'Generate history_template.html','action':'generateHistoryHTML'}, | {'label':'Generate history_template.html','action':'generateHistoryHTML'}, |
| {'label':'Import Folder','action':'importFolderForm'}, | {'label':'Import directory','action':'importFolderForm'}, |
| {'label':'Export Folder','action':'exportFolder'}, | {'label':'Export as file','action':'exportFolder'}, |
| {'label':'Import versionedFileFolder','action':'importVersionedFileFolderForm'}, | |
| {'label':'Position of version number','action':'changeHistoryFileNamesForm'}, | {'label':'Position of version number','action':'changeHistoryFileNamesForm'}, |
| ) | ) |
| Line 197 class extVersionedFileFolder(Folder,ECHO | Line 198 class extVersionedFileFolder(Folder,ECHO |
| if RESPONSE: | if RESPONSE: |
| RESPONSE.redirect(self.REQUEST['URL1']) | RESPONSE.redirect(self.REQUEST['URL1']) |
| def importVersionedFileFolderForm(self): | |
| """form fuer versionedFileFolder import""" | |
| pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','importVersionedFileFolderForm.zpt')).__of__(self) | |
| return pt() | |
| def importVersionedFileFolder(self,path,RESPONSE=None): | |
| """import contents of a versionedFileFolder on the server""" | |
| vff = getattr(self.aq_parent, path, None) | |
| if vff is None: | |
| return "SORRY, unable to import %s"%path | |
| tmpPath=tempfile.mktemp() | |
| if not os.path.exists(tempfile.tempdir): | |
| os.mkdir(tempfile.tempdir) | |
| if not os.path.exists(tmpPath): | |
| os.mkdir(tmpPath) | |
| for (vfn, vf) in vff.getVersionedFiles(): | |
| if vf.meta_type == 'versionedFile': | |
| logging.error("importvff: importing %s of type %s!"%(vfn,vf.meta_type)) | |
| title = vf.title | |
| fob = vf.getLastVersion() | |
| author = fob.getLastEditor() | |
| vc = fob.getVersionComment() | |
| # save file to filesystem | |
| savePath=os.path.join(tmpPath,title) | |
| fh=file(savePath,"w") | |
| data = vf.getLastVersion().data | |
| if isinstance(data, str): | |
| # simple data object | |
| fh.write(data) | |
| else: | |
| # chained data objects | |
| while data is not None: | |
| fh.write(data.data) | |
| data = data.next | |
| fh.close() | |
| # and read in again | |
| fh = file(savePath) | |
| logging.error("importvff: comment=%s author=%s!"%(vc,author)) | |
| self.addFile(vC=vc, file=fh, author=author) | |
| # copy more fields | |
| newfob = getattr(self, vfn).getContentObject() | |
| newfob.vComment = fob.vComment | |
| newfob.time = fob.time | |
| logging.error("importvff: vc=%s time=%s of %s!"%(fob.vComment,fob.time,fob.getId())) | |
| else: | |
| logging.error("importvff: unable to import %s of type %s!"%(vfn,vf.meta_type)) | |
| shutil.rmtree(tmpPath) | |
| if RESPONSE: | |
| RESPONSE.redirect(self.REQUEST['URL1']) | |
| zipThreads={} | zipThreads={} |
| zipThreads2={} | zipThreads2={} |
| Line 452 class extVersionedFileFolder(Folder,ECHO | Line 509 class extVersionedFileFolder(Folder,ECHO |
| else: | else: |
| id=newName | id=newName |
| if not vC: | if vC is None: |
| vC=self.REQUEST.form['vC'] | vC=self.REQUEST.form['vC'] |
| # get new extVersionedFile | # get new extVersionedFile |
| Line 498 class extVersionedFileFolder(Folder,ECHO | Line 555 class extVersionedFileFolder(Folder,ECHO |
| """fix last version number of all files""" | """fix last version number of all files""" |
| for (id,vf) in self.getVersionedFiles(): | for (id,vf) in self.getVersionedFiles(): |
| vf.fixVersionNumbers() | vf.fixVersionNumbers() |
| # recursively | |
| for (id,vf) in self.objectItems(self.meta_type): | |
| vf.fixVersionNumbers() | |
| manage_addextVersionedFileFolderForm=DTMLFile('dtml/extfolderAdd', globals()) | manage_addextVersionedFileFolderForm=DTMLFile('dtml/extfolderAdd', globals()) |
| Line 713 class extVersionedFile(CatalogAware,Fold | Line 773 class extVersionedFile(CatalogAware,Fold |
| meta_type = 'extVersionedFile' | meta_type = 'extVersionedFile' |
| # meta_type of contained objects | # meta_type of contained objects |
| content_meta_type = ['extVersionedFileObject'] | content_meta_type = ['extVersionedFileObject'] |
| # default catalog for extVersionedFile objects | |
| default_catalog = 'fileCatalog' | default_catalog = 'fileCatalog' |
| manage_options = Folder.manage_options+({'label':'Main Config','action':'changeVersionedFileForm'},) | |
| security=ClassSecurityInfo() | security=ClassSecurityInfo() |
| def __init__(self, id, title, lockedBy,author): | def __init__(self, id, title, lockedBy,author): |
| Line 861 class extVersionedFile(CatalogAware,Fold | Line 925 class extVersionedFile(CatalogAware,Fold |
| def getContentObject(self): | def getContentObject(self): |
| """returns the last version object""" | """returns the last version object""" |
| if not self.lastVersionId: | if not hasattr(self, 'lastVersionId'): |
| # find last version and save it | |
| lv = self.findLastVersion() | lv = self.findLastVersion() |
| if lv is None: | if lv is None: |
| return None | return None |
| Line 1063 class extVersionedFile(CatalogAware,Fold | Line 1128 class extVersionedFile(CatalogAware,Fold |
| return ob | return ob |
| changeVersionedFileForm = PageTemplateFile('zpt/changeVersionedFile', globals()) | |
| def manage_changeVersionedFile(self,title,vC,author,comment,RESPONSE=None): | |
| """Change VersionedFile metadata""" | |
| self.title = title | |
| self.author = author | |
| cob = self.getContentObject() | |
| if cob: | |
| if vC: | |
| cob.vComment=vC | |
| if comment=='': | |
| cob.versionComment=None | |
| else: | |
| cob.versionComment=comment | |
| if RESPONSE: | |
| RESPONSE.redirect('manage_main') | |
| def download(self): | def download(self): |
| """download and lock""" | """download""" |
| self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%self.getContentObject().getId()) | self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%self.getContentObject().getId()) |
| self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream") | self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream") |
| self.content_type="application/octet-stream" | self.content_type="application/octet-stream" |
| self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'/'+self.getId()+'/'+self.getContentObject().getId()) | self.REQUEST.RESPONSE.redirect(self.REQUEST['URL1']+'/'+self.getId()+'/'+self.getContentObject().getId()) |
| security.declareProtected('AUTHENTICATED_USER','downloadLocked') | security.declareProtected('AUTHENTICATED_USER','downloadLocked') |
| def downloadLocked(self): | def downloadLocked(self): |
| """download and lock""" | """download and lock""" |