def get_version(dir, v): try: sys.path.append("%s/.." % dir) sys.path.append("%s/" % dir) sys.path.reverse() if v == "old": os.environ['DJANGO_SETTINGS_MODULE'] = 'mx30_backup.settings' from mx30_backup.pmx.pmx import get_version else: os.environ['DJANGO_SETTINGS_MODULE'] = 'mx30.settings' from mx30.pmx.pmx import get_version except: sys.exit("Could not get the mx30 version") return get_version()
def update(old, new, options): print "Starting update..." print "Backing up the data..." try: os.chdir('%s/mx30' % old) dt = datetime.datetime.now() exec_string = "python manage.pyc dumpdata --indent=4 --format=xml > backups/update_%s_%s_%s.aupaace.xml" % (dt.month, dt.day, dt.year) os.system(exec_string) except: sys.exit("Failed to backup the data.") print "Your data was backed up." print "Updating your version..." try: print "Copying the new version..." shutil.rmtree("%s/mx30_backup" % old) os.renames("%s/mx30" % old, "%s/mx30_backup" % old) shutil.copytree("%s/mx30" % new, "%s/mx30" % old) print "Configuring settings..." os.chdir("%s/mx30" % old) edit_settings(options, old) file = open ("%s/mx30_backup/settings.py" % old, "r") line = file.readline() while line and line.find('DATABASE_NAME') == -1: line = file.readline() db = line.split("'")[1] file.close() file = open ("%s/mx30_backup/settings.py" % old, "r") line = file.readline() while line and line.find('MEDIA_ROOT') == -1: line = file.readline() media_dir = line.split("'")[1] file.close() file = open ("%s/mx30/settings.py" % old, "r") text = file.read() file.close() file = open ("%s/mx30/settings.py" % old, "w") file.write(text.replace("DATABASE_NAME = 'peer_center'", "DATABASE_NAME = '%s'" % db)) file.close() shutil.rmtree("%s/mx30/backups" % old) shutil.copytree("%s/mx30_backup/backups" % old, "%s/mx30/backups" % old) print "Copying media..." copy_media(old, media_dir) except: sys.exit("Failed to copy and configure mx30 directory") try: os.system("python %s/mx30/manage.pyc syncdb --noinput >> /dev/null" % old) old_version = get_version("%s/mx30_backup" % old, "old") new_version = get_version("%s/mx30" % old, "new") run_upgrades_scripts(old, old_version, new_version) os.system("sudo python %s/mx30/manage.pyc syncdb --noinput >> /dev/null" % old) except: sys.exit("Failed to upgrade your version") print "New version was copied and configured" print "Restoring your data..." backups = os.listdir('%s/mx30/backups' % old) temp = [b for b in os.listdir('%s/mx30/backups' % old) if b.startswith('update')] temp.sort() data = temp[-1] try: os.system("python %s/mx30/manage.pyc loaddata %s/mx30/backups/%s" % (old, old, data)) except: sys.exit("Failed to restore your data your version. In any case, it's saved in %s/mx30/backups/%s" % (old, data)) configure_ip_and_prefix(options, old) print "Restarting apache..." try: os.system('/etc/init.d/apache2 restart') except: sys.exit("Failed to restart apache") print "Apache was restarted" sys.exit("Your version was successfully updated.")