diff --git a/marabunta/config.py b/marabunta/config.py index aa890d6..49f9767 100644 --- a/marabunta/config.py +++ b/marabunta/config.py @@ -60,6 +60,7 @@ def from_parse_args(cls, args): mode=args.mode, allow_serie=args.allow_serie, force_version=args.force_version, + i18n_override=args.i18n_override, web_host=args.web_host, web_port=args.web_port, web_resp_status=args.web_resp_status, @@ -148,6 +149,10 @@ def get_args_parser(): default=os.environ.get('MARABUNTA_FORCE_VERSION'), help='Force upgrade of a version, even if it has ' 'already been applied.') + parser.add_argument('--i18n-override', + required=False, + default=os.environ.get('MARABUNTA_I18N_OVERRIDE'), + help='Force override of translations.') group = parser.add_argument_group( title='Web', diff --git a/marabunta/model.py b/marabunta/model.py index 391904a..705e14c 100644 --- a/marabunta/model.py +++ b/marabunta/model.py @@ -119,6 +119,7 @@ def __init__(self, number, options): self._version_modes = {} self.options = options self.backup = False + self.override_translations = False def is_processed(self, db_versions): """Check if version is already applied in the database. @@ -210,7 +211,7 @@ def upgrade_addons_operation(self, addons_state, mode=None): to_install = addons_list - installed to_upgrade = installed & addons_list - return UpgradeAddonsOperation(self.options, to_install, to_upgrade) + return UpgradeAddonsOperation(self.options, to_install, to_upgrade, self.override_translations) def remove_addons_operation(self): raise NotImplementedError @@ -252,10 +253,11 @@ def add_remove_addons(self, addons): class UpgradeAddonsOperation(object): - def __init__(self, options, to_install, to_upgrade): + def __init__(self, options, to_install, to_upgrade, override_translations=False): self.options = options self.to_install = set(to_install) self.to_upgrade = set(to_upgrade) + self.override_translations = override_translations def operation(self, exclude_addons=None): if exclude_addons is None: @@ -263,6 +265,8 @@ def operation(self, exclude_addons=None): install_command = self.options.install_command install_args = self.options.install_args[:] or [] install_args += [u'--workers=0', u'--stop-after-init', u'--no-xmlrpc'] + if self.override_translations: + install_args += [u'--i18n-override'] to_install = self.to_install - exclude_addons if to_install: diff --git a/marabunta/parser.py b/marabunta/parser.py index 0216ca9..efd089a 100644 --- a/marabunta/parser.py +++ b/marabunta/parser.py @@ -58,6 +58,7 @@ - version: 0.0.2 backup: false + override_translations: true # nothing to do - version: 0.0.3 @@ -198,9 +199,14 @@ def _parse_backup(self, version, backup=True, mode=None): raise ParseError(u"'backup' key must be a boolean", YAML_EXAMPLE) version.backup = backup + def _parse_i18n_override(self, version, override_translations=False, mode=None): + if not isinstance(override_translations, bool): + raise ParseError(u"'override_translations' key must be a boolean", YAML_EXAMPLE) + version.override_translations = override_translations + def _parse_version(self, parsed_version, options): self.check_dict_expected_keys( - {'version', 'operations', 'addons', 'modes', 'backup'}, + {'version', 'operations', 'addons', 'modes', 'backup', 'override_translations'}, parsed_version, 'versions', ) number = parsed_version.get('version') @@ -237,4 +243,7 @@ def _parse_version(self, parsed_version, options): backup = True self._parse_backup(version, backup) + # If translations needs to be overriden + self._parse_i18n_override(version, parsed_version.get('override_translations')) + return version