def mysql_create_dbuser(name, user, password): q1 = "GRANT USAGE ON " + name + ".* TO '" + user + "'@'localhost';" q2 = "CREATE USER '" + user + "'@'localhost' IDENTIFIED BY '" + password + "';" q3 = "FLUSH PRIVILEGES;" root_password = input("Please, enter root password") run("mysql --user=root --password="******" -e \"" + q1 + " " + q2 + " " + q3 + "\" mysql")
def mysql_admin(env, command): """Runs a mysql command without specifying which database to run it on. Badly named.""" run('mysql --default-character-set=utf8 -u%s -p%s -e "%s"' % ( env.db.user, env.db.password, command, ))
def configure_mysql(): sudo("apt-get install mysql-server python-mysqldb") with cd("project"): run("rm -rf local*") run("./django-create-local-settings") run("./django-add-db") run("./mysql-create-djangouser") run("python manage.py syncdb")
def test(module="", verbose=0): verbose = int(verbose) if verbose == 1: grep_filter = "" else: grep_filter = "| grep '\(Assertion\)\|\(\.\.\.\.\)\|\(Ran\)'" with cd("project"): run("python manage.py test %s 2>&1 %s " % (module, grep_filter))
def test(module="",verbose=0): verbose = int(verbose) if verbose == 1: grep_filter = "" else: grep_filter = "| grep '\(Assertion\)\|\(\.\.\.\.\)\|\(Ran\)'" with cd("project"): run("python manage.py test %s 2>&1 %s " % (module, grep_filter))
def install_npm(): with settings(warn_only=True): result = run("npm --version") if result.failed: sudo("apt-get install curl") run("curl http://npmjs.org/install.sh | sh") else: print "npm already installed"
def mysql_dump(env): """Dumps the db of the given env to a random temporary file, and returns path to said file.""" tmp_file = random_tmp_file() run("mysqldump --default-character-set=utf8 %s > %s" % ( envs.production.db.info, tmp_file, )) return tmp_file
def mysql_reset_db_from_file(env, file): """Drops, creates and the loads the content from a file into the given env""" mysql_admin(env, 'DROP DATABASE IF EXISTS %s;' % env.db.name) mysql_admin(env, 'CREATE DATABASE %s;' % env.db.name) run("mysql --default-character-set=utf8 %s < %s" %( env.db.info, file ))
def db_drop_djangouser(): import project.settings as settings dbname = settings.DATABASES['default']['NAME'] dbuser = settings.DATABASES['default']['USER'] dbpass = settings.DATABASES['default']['PASSWORD'] q1 = "GRANT USAGE ON "+dbname+".* TO '"+dbuser+"'@'localhost';" q2 = "DROP USER "+dbuser+"@localhost;" q3 = "FLUSH PRIVILEGES;" sql = q1+" "+q2+" "+q3 password = input("Please, enter root password") run("mysql --user=root --password="******" -e \""+sql+"\" mysql")
def db_create(): import project.settings as settings dbname = settings.DATABASES['default']['NAME'] dbuser = settings.DATABASES['default']['USER'] dbpass = settings.DATABASES['default']['PASSWORD'] q1 = "GRANT USAGE ON "+dbname+".* TO '"+dbuser+"'@'localhost';" q2="CREATE DATABASE "+dbname+";" q3="GRANT ALL ON $dbname.* TO '$dbuser'@'localhost' WITH GRANT OPTION;" q4="FLUSH PRIVILEGES;" sql = q1+" "+q2+" "+q3+" "+q4 password = input("Please, enter root password") run("mysql --user=root --password="******" -e \""+sql+"\" mysql")
def db_drop_djangouser(): import project.settings as settings dbname = settings.DATABASES['default']['NAME'] dbuser = settings.DATABASES['default']['USER'] dbpass = settings.DATABASES['default']['PASSWORD'] q1 = "GRANT USAGE ON " + dbname + ".* TO '" + dbuser + "'@'localhost';" q2 = "DROP USER " + dbuser + "@localhost;" q3 = "FLUSH PRIVILEGES;" sql = q1 + " " + q2 + " " + q3 password = input("Please, enter root password") run("mysql --user=root --password="******" -e \"" + sql + "\" mysql")
def db_create(): import project.settings as settings dbname = settings.DATABASES['default']['NAME'] dbuser = settings.DATABASES['default']['USER'] dbpass = settings.DATABASES['default']['PASSWORD'] q1 = "GRANT USAGE ON " + dbname + ".* TO '" + dbuser + "'@'localhost';" q2 = "CREATE DATABASE " + dbname + ";" q3 = "GRANT ALL ON $dbname.* TO '$dbuser'@'localhost' WITH GRANT OPTION;" q4 = "FLUSH PRIVILEGES;" sql = q1 + " " + q2 + " " + q3 + " " + q4 password = input("Please, enter root password") run("mysql --user=root --password="******" -e \"" + sql + "\" mysql")
def install_coffee(): with settings(warn_only=True): result = run("coffee --version") if result.failed: sudo("npm install -g coffee-script") else: print "Coffeescript already installed"
def install_nodejs(): NODE_VERSION = "v0.6.5" with settings(warn_only=True): result = run("node --version") if result.failed: with cd("lib/node"): run("git checkout %s" % NODE_VERSION) sudo("apt-get install libssl-dev openssl") run("./configure") run("make") sudo("make install") else: print "Node.js already installed" install_npm()
def db_flush(): import project.settings as settings dbconfig = settings.DATABASES['default'] dbengine = dbconfig['ENGINE'].split(".")[-1] if dbengine == 'sqlite3': dbfile = settings.DATABASES['default']['NAME'].split("/") dbfile = dbfile[1] with cd("project"): run("rm "+dbfile+" -rf") elif dbengine == 'mysql': cmd = "mysqldump -u%s -p%s --add-drop-table --no-data %s | grep ^DROP | mysql -u%s -p%s %s" cmd %= (dbconfig['USER'], dbconfig['PASSWORD'], dbconfig['NAME'], dbconfig['USER'], dbconfig['PASSWORD'], dbconfig['NAME']) run(cmd) with cd("project"): run("echo 'no' | python manage.py syncdb") load_superuser()
def db_flush(): import project.settings as settings dbconfig = settings.DATABASES['default'] dbengine = dbconfig['ENGINE'].split(".")[-1] if dbengine == 'sqlite3': dbfile = settings.DATABASES['default']['NAME'].split("/") dbfile = dbfile[1] with cd("project"): run("rm " + dbfile + " -rf") elif dbengine == 'mysql': cmd = "mysqldump -u%s -p%s --add-drop-table --no-data %s | grep ^DROP | mysql -u%s -p%s %s" cmd %= (dbconfig['USER'], dbconfig['PASSWORD'], dbconfig['NAME'], dbconfig['USER'], dbconfig['PASSWORD'], dbconfig['NAME']) run(cmd) with cd("project"): run("echo 'no' | python manage.py syncdb") load_superuser()
def mysql_create_dbuser(name,user,password): q1 = "GRANT USAGE ON "+name+".* TO '"+user+"'@'localhost';" q2 = "CREATE USER '"+user+"'@'localhost' IDENTIFIED BY '"+password+"';" q3 = "FLUSH PRIVILEGES;" root_password = input("Please, enter root password") run("mysql --user=root --password="******" -e \""+q1+" "+q2+" "+q3+"\" mysql")
def mysql(env, command): """Runs a mysql command on the given env.""" run('mysql --default-character-set=utf8 %s -e "%s"' % ( env.db.info, command, ))
def init_submodules(): run("git submodule init") run("git submodule update")
def test(): with cd("project"): run("python manage.py test")
def run_development(): with cd("project"): run("python manage.py runserver 0.0.0.0:8000")
def mysql_copy_db(from_env, to_env): """Copy a database from one env to another.""" tmp_file = mysql_dump(from_env) mysql_reset_db_from_file(to_env, tmp_file) run("rm %s" % tmp_file)
def load_superuser(): with cd("project"): run("python manage.py loaddata superuser")