1 diff -r d0f5d4b70647 MoinMoin/packages.py 2 --- a/MoinMoin/packages.py Sat Jul 20 00:03:25 2013 +0200 3 +++ b/MoinMoin/packages.py Fri Nov 01 21:04:48 2013 +0100 4 @@ -96,6 +96,10 @@ 5 """ 6 return (string.lower() in ('yes', 'true', '1')) 7 8 +class IAmRoot(object): 9 + def __getattr__(self, name): 10 + return lambda *args, **kwargs: True 11 + 12 class ScriptEngine: 13 """ 14 The script engine supplies the needed commands to execute the installation 15 @@ -118,7 +122,7 @@ 16 self.msg = getattr(self, "msg", "") 17 self.request = getattr(self, "request", None) 18 19 - def do_addattachment(self, zipname, filename, pagename, author=u"Scripting Subsystem", comment=u""): 20 + def do_addattachment(self, zipname, filename, pagename, author=u"Scripting Subsystem", comment=u"", mtime=None): 21 """ 22 Installs an attachment 23 24 @@ -133,7 +137,7 @@ 25 filename = wikiutil.taintfilename(filename) 26 zipname = wikiutil.taintfilename(zipname) 27 target = os.path.join(attachments, filename) 28 - page = PageEditor(self.request, pagename, do_editor_backup=0, uid_override=author) 29 + page = PageEditor(self.request, pagename, do_editor_backup=0, uid_override=author, mtime=mtime) 30 rev = page.current_rev() 31 path = page.getPagePath(check_create=0) 32 if not os.path.exists(target): 33 @@ -286,7 +290,7 @@ 34 35 self.msg += package.msg 36 37 - def do_addrevision(self, filename, pagename, author=u"Scripting Subsystem", comment=u"", trivial=u"No"): 38 + def do_addrevision(self, filename, pagename, author=u"Scripting Subsystem", comment=u"", trivial=u"No", mtime=None): 39 """ Adds a revision to a page. 40 41 @param filename: name of the file in this package 42 @@ -298,7 +302,7 @@ 43 _ = self.request.getText 44 trivial = str2boolean(trivial) 45 if self.request.user.may.write(pagename): 46 - page = PageEditor(self.request, pagename, do_editor_backup=0) 47 + page = PageEditor(self.request, pagename, do_editor_backup=0, uid_override=author, mtime=mtime) 48 try: 49 page.saveText(self.extract_file(filename).decode("utf-8"), 0, trivial=trivial, comment=comment) 50 except PageEditor.Unchanged: 51 @@ -555,6 +559,7 @@ 52 # Setup MoinMoin environment 53 from MoinMoin.web.contexts import ScriptContext 54 request = ScriptContext(url=request_url) 55 + request.user.may = IAmRoot() 56 57 package = ZipPackage(request, packagefile) 58 if not package.isPackage():