def delete_attachfile(request, pagename, aname, log=False): try: fpath, exists = check_attachfile(request, pagename, aname) if not exists: return False os.unlink(fpath) if log: _addLogEntry(request, 'ATTDEL', pagename, aname) except: return False return True
def save_attachfile(request, pagename, content, aname, overwrite=False, log=False): try: fpath, exists = check_attachfile(request, pagename, aname) if not overwrite and exists: return False # Save the data to a file under the desired name stream = open(fpath, 'wb') stream.write(content) stream.close() if log: _addLogEntry(request, 'ATTNEW', pagename, aname) except: return False return True
def package(self): """ Calls collectpackage() with the arguments specified. """ _ = self.request.getText form = self.request.form # Get new name from form and normalize. pagelist = form.get('pagelist', [u''])[0] packagename = form.get('packagename', [u''])[0] include_attachments = form.get('include_attachments', [False])[0] if not form.get('submit', [None])[0]: self.request.theme.add_msg(self.makeform(), "dialog") raise ActionError target = wikiutil.taintfilename(packagename) if not target: self.request.theme.add_msg(self.makeform(_('Invalid filename "%s"!') % wikiutil.escape(packagename)), "error") raise ActionError # get directory, and possibly create it attach_dir = Page(self.request, self.page.page_name).getPagePath("attachments", check_create=1) fpath = os.path.join(attach_dir, target).encode(config.charset) if os.path.exists(fpath): self.request.theme.add_msg(_("Attachment '%(target)s' (remote name '%(filename)s') already exists.") % { 'target': wikiutil.escape(target), 'filename': wikiutil.escape(target)}, "error") raise ActionError # Generate a package output = open(fpath, "wb") package = self.collectpackage(unpackLine(pagelist, ","), output, target, include_attachments) if package: self.request.theme.add_msg(self.makeform(), "dialog") raise ActionError _addLogEntry(self.request, 'ATTNEW', self.pagename, target) self.request.theme.add_msg(_("Created the package %s containing the pages %s.") % (wikiutil.escape(target), wikiutil.escape(pagelist))) raise ActionError