]> scripts.mit.edu Git - wizard.git/blobdiff - wizard/app/mediawiki.py
When MediaWiki installs fail due to bad user input, give useful errors.
[wizard.git] / wizard / app / mediawiki.py
index cf9fa01b570d535012bbba1d05aae840c37e7986..4e36c9c3e86d504a0ab43d5468565b44f62f2679 100644 (file)
@@ -1,6 +1,9 @@
 import re
 import distutils.version
 import os
+import lxml.cssselect
+import lxml.etree
+import StringIO
 
 from wizard import app, install, resolve, shell, util
 from wizard.app import php
@@ -66,9 +69,14 @@ class Application(app.Application):
             'SysopPass2': options.admin_password,
             }
         result = install.fetch(options, '/config/index.php', post=postdata)
+        result_etree = lxml.etree.parse(StringIO.StringIO(result), lxml.etree.HTMLParser())
+        selector = lxml.cssselect.CSSSelector(".error")
+        error_messages = [e.text for e in selector(result_etree)]
         if options.verbose or options.debug: print result
         if result.find("Installation successful") == -1:
-            raise install.Failure()
+            if not error_messages:
+                raise install.Failure()
+            raise app.NonfatalFailure(error_messages)
         os.rename('config/LocalSettings.php', 'LocalSettings.php')
     def upgrade(self, d, version, options):
         sh = shell.Shell()