import sqlalchemy import os from wizard import app, install, sql from wizard.app import php class Application(app.Application): install_schema = install.ArgSchema("mysql", "email", "title") def download(self, version): return "http://wordpress.org/wordpress-%s.tar.gz" % version def install(self, version, options): post_setup_config = { 'dbhost': options.mysql_host, 'uname': options.mysql_user, 'dbname': options.mysql_db, 'pwd': options.mysql_password, 'prefix': '', 'submit': 'Submit', 'step': '2', } post_install = { 'weblog_title': options.title, 'admin_email': options.email, 'submit': 'Continue', 'step': '2', } old_mode = os.stat(".").st_mode os.chmod(".", 0777) # XXX: squick squick install.fetch(options, "wp-admin/setup-config.php?step=2", post_setup_config) result = install.fetch(options, "wp-admin/install.php?step=2", post_install) os.chmod(".", old_mode) if "Finished" not in result: raise install.Failure() # not sure what to do about this meta = sql.mysql_connect(options) wp_options = meta.tables["wp_options"] wp_options.update().where(wp_options.c.option_name == 'siteurl').values(option_value=options.web_path).execute() wp_options.update().where(wp_options.c.option_name == 'home').values(option_value="http://%s%s" % (options.web_host, options.web_path)).execute() # XXX: what if missing leading slash; this should be put in a function