Files
mayan-edms/fabfile/mayan_edms/__init__.py

51 lines
1.8 KiB
Python

from distutils.version import LooseVersion
import importlib
from fabric.api import env, task, cd, sudo, settings
from fabric.colors import green, red
from ..conf import setup_environment
@task
def upgrade():
"""
Upgrade a Mayan EDMS installation, but doing incremental upgrades
"""
setup_environment()
print(green('Upgrading Mayan EDMS database', bold=True))
with settings(warn_only=True):
with cd(env.virtualenv_path):
version = sudo('source bin/activate; python -c "import os;os.environ[\'DJANGO_SETTINGS_MODULE\']=\'mayan.settings\';from django.core.management import setup_environ;import settings;setup_environ(settings);import main;print main.__version__"')
if version.failed:
print(red('Unable to determined the current version.', bold=True))
exit()
current_verision = 'v%s' % version
print(green('Current version: %s' % version, bold=True))
with settings(warn_only=True):
with cd(env.repository_name):
tags = sudo('git tag').split('\r\n')
if tags.failed:
print(red('Upgrading is only support on git based installations.', bold=True))
exit()
tags.sort(key=LooseVersion)
latest_version = tags[-1]
print(green('Latest version: %s' % latest_version, bold=True))
upgrade_steps = tags.index(latest_version) - tags.index(current_verision)
if not upgrade_steps:
print(green('Already in the latest version, no need to upgrade.', bold=True))
exit()
else:
print(green('Upgrade steps needed until latest version: %d' % (), bold=True))
version_module_name = current_verision.replace('.', '_')
module = importlib.import_module('fabfile.mayan_edms.upgrades.%s' % version_module_name)
module.upgrade()