Use activate instead of install for module activation
issue1456 review28931002
This commit is contained in:
1 parent
6410cd00d5
commit
ccbb43cb1d
29 files changed
+164
-163
No files matched your search
@@ -76,8 +76,8 @@ def register():
|
||||
ModuleConfigWizardFirst,
|
||||
ModuleConfigWizardOther,
|
||||
ModuleConfigWizardDone,
|
||||
ModuleInstallUpgradeStart,
|
||||
ModuleInstallUpgradeDone,
|
||||
ModuleActivateUpgradeStart,
|
||||
ModuleActivateUpgradeDone,
|
||||
Cache,
|
||||
Date,
|
||||
Trigger,
|
||||
@@ -93,7 +93,7 @@ def register():
|
||||
ShowView,
|
||||
PrintModelGraph,
|
||||
ModuleConfigWizard,
|
||||
ModuleInstallUpgrade,
|
||||
ModuleActivateUpgrade,
|
||||
ModuleConfig,
|
||||
module='ir', type_='wizard')
|
||||
Pool.register(
|
||||
|
||||
+67
-66
@@ -20,8 +20,8 @@ __all__ = [
|
||||
'Module', 'ModuleDependency', 'ModuleConfigWizardItem',
|
||||
'ModuleConfigWizardFirst', 'ModuleConfigWizardOther',
|
||||
'ModuleConfigWizardDone', 'ModuleConfigWizard',
|
||||
'ModuleInstallUpgradeStart', 'ModuleInstallUpgradeDone',
|
||||
'ModuleInstallUpgrade', 'ModuleConfig',
|
||||
'ModuleActivateUpgradeStart', 'ModuleActivateUpgradeDone',
|
||||
'ModuleActivateUpgrade', 'ModuleConfig',
|
||||
]
|
||||
|
||||
|
||||
@@ -47,11 +47,11 @@ class Module(ModelSQL, ModelView):
|
||||
childs = fields.Function(fields.One2Many('ir.module', None, 'Childs'),
|
||||
'get_childs')
|
||||
state = fields.Selection([
|
||||
('uninstalled', 'Not Installed'),
|
||||
('installed', 'Installed'),
|
||||
('not activated', 'Not Activated'),
|
||||
('activated', 'Activated'),
|
||||
('to upgrade', 'To be upgraded'),
|
||||
('to remove', 'To be removed'),
|
||||
('to install', 'To be installed'),
|
||||
('to activate', 'To be activated'),
|
||||
], string='State', readonly=True)
|
||||
|
||||
@classmethod
|
||||
@@ -67,27 +67,27 @@ class Module(ModelSQL, ModelView):
|
||||
'on_write': RPC(instantiate=0),
|
||||
})
|
||||
cls._error_messages.update({
|
||||
'delete_state': ('You can not remove a module that is installed '
|
||||
'or will be installed'),
|
||||
'delete_state': ('You can not remove a module that is activated '
|
||||
'or will be activated'),
|
||||
'missing_dep': 'Missing dependencies %s for module "%s"',
|
||||
'uninstall_dep': ('The modules you are trying to uninstall '
|
||||
'depends on installed modules:'),
|
||||
'deactivate_dep': ('The modules you are trying to deactivate '
|
||||
'depends on activated modules:'),
|
||||
})
|
||||
cls._buttons.update({
|
||||
'install': {
|
||||
'invisible': Eval('state') != 'uninstalled',
|
||||
'activate': {
|
||||
'invisible': Eval('state') != 'not activated',
|
||||
},
|
||||
'install_cancel': {
|
||||
'invisible': Eval('state') != 'to install',
|
||||
'activate_cancel': {
|
||||
'invisible': Eval('state') != 'to activate',
|
||||
},
|
||||
'uninstall': {
|
||||
'invisible': Eval('state') != 'installed',
|
||||
'deactivate': {
|
||||
'invisible': Eval('state') != 'activated',
|
||||
},
|
||||
'uninstall_cancel': {
|
||||
'deactivate_cancel': {
|
||||
'invisible': Eval('state') != 'to remove',
|
||||
},
|
||||
'upgrade': {
|
||||
'invisible': Eval('state') != 'installed',
|
||||
'invisible': Eval('state') != 'activated',
|
||||
},
|
||||
'upgrade_cancel': {
|
||||
'invisible': Eval('state') != 'to upgrade',
|
||||
@@ -107,7 +107,7 @@ class Module(ModelSQL, ModelView):
|
||||
|
||||
@staticmethod
|
||||
def default_state():
|
||||
return 'uninstalled'
|
||||
return 'not activated'
|
||||
|
||||
def get_version(self, name):
|
||||
return get_module_info(self.name).get('version', '')
|
||||
@@ -140,10 +140,10 @@ class Module(ModelSQL, ModelView):
|
||||
def delete(cls, records):
|
||||
for module in records:
|
||||
if module.state in (
|
||||
'installed',
|
||||
'activated',
|
||||
'to upgrade',
|
||||
'to remove',
|
||||
'to install',
|
||||
'to activate',
|
||||
):
|
||||
cls.raise_user_error('delete_state')
|
||||
return super(Module, cls).delete(records)
|
||||
@@ -171,9 +171,9 @@ class Module(ModelSQL, ModelView):
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@filter_state('uninstalled')
|
||||
def install(cls, modules):
|
||||
modules_install = set(modules)
|
||||
@filter_state('not activated')
|
||||
def activate(cls, modules):
|
||||
modules_activated = set(modules)
|
||||
graph, packages, later = create_graph(get_module_list())
|
||||
|
||||
def get_parents(module):
|
||||
@@ -190,17 +190,17 @@ class Module(ModelSQL, ModelView):
|
||||
missings = [x for x in deps if x not in graph]
|
||||
cls.raise_user_error('missing_dep', (missings, module.name))
|
||||
|
||||
modules_install.update((m for m in get_parents(module)
|
||||
if m.state == 'uninstalled'))
|
||||
cls.write(list(modules_install), {
|
||||
'state': 'to install',
|
||||
modules_activated.update((m for m in get_parents(module)
|
||||
if m.state == 'not activated'))
|
||||
cls.write(list(modules_activated), {
|
||||
'state': 'to activate',
|
||||
})
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@filter_state('installed')
|
||||
@filter_state('activated')
|
||||
def upgrade(cls, modules):
|
||||
modules_installed = set(modules)
|
||||
modules_activated = set(modules)
|
||||
graph, packages, later = create_graph(get_module_list())
|
||||
|
||||
def get_childs(module):
|
||||
@@ -217,24 +217,24 @@ class Module(ModelSQL, ModelView):
|
||||
missings = [x for x in deps if x not in graph]
|
||||
cls.raise_user_error('missing_dep', (missings, module.name))
|
||||
|
||||
modules_installed.update((m for m in get_childs(module)
|
||||
if m.state == 'installed'))
|
||||
cls.write(list(modules_installed), {
|
||||
modules_activated.update((m for m in get_childs(module)
|
||||
if m.state == 'activated'))
|
||||
cls.write(list(modules_activated), {
|
||||
'state': 'to upgrade',
|
||||
})
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@filter_state('to install')
|
||||
def install_cancel(cls, modules):
|
||||
@filter_state('to activate')
|
||||
def activate_cancel(cls, modules):
|
||||
cls.write(modules, {
|
||||
'state': 'uninstalled',
|
||||
'state': 'not activated',
|
||||
})
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@filter_state('installed')
|
||||
def uninstall(cls, modules):
|
||||
@filter_state('activated')
|
||||
def deactivate(cls, modules):
|
||||
pool = Pool()
|
||||
Module = pool.get('ir.module')
|
||||
Dependency = pool.get('ir.module.dependency')
|
||||
@@ -246,25 +246,26 @@ class Module(ModelSQL, ModelView):
|
||||
condition=(dep_table.module == module_table.id)
|
||||
).select(module_table.state, module_table.name,
|
||||
where=(dep_table.name == module.name)
|
||||
& NotIn(module_table.state, ['uninstalled', 'to remove'])))
|
||||
& NotIn(
|
||||
module_table.state, ['not activated', 'to remove'])))
|
||||
res = cursor.fetchall()
|
||||
if res:
|
||||
cls.raise_user_error('uninstall_dep',
|
||||
cls.raise_user_error('deactivate_dep',
|
||||
error_description='\n'.join(
|
||||
'\t%s: %s' % (x[0], x[1]) for x in res))
|
||||
cls.write(modules, {'state': 'to remove'})
|
||||
cls.write(modules, {'state': 'not activated'})
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@filter_state('to remove')
|
||||
def uninstall_cancel(cls, modules):
|
||||
cls.write(modules, {'state': 'installed'})
|
||||
def deactivate_cancel(cls, modules):
|
||||
cls.write(modules, {'state': 'not activated'})
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@filter_state('to upgrade')
|
||||
def upgrade_cancel(cls, modules):
|
||||
cls.write(modules, {'state': 'installed'})
|
||||
cls.write(modules, {'state': 'activated'})
|
||||
|
||||
@classmethod
|
||||
def update_list(cls):
|
||||
@@ -275,7 +276,7 @@ class Module(ModelSQL, ModelView):
|
||||
modules = cls.search([])
|
||||
name2module = dict((m.name, m) for m in modules)
|
||||
|
||||
# iterate through installed modules and mark them as being so
|
||||
# iterate through activated modules and mark them as being so
|
||||
for name in module_names:
|
||||
if name in name2module:
|
||||
module = name2module[name]
|
||||
@@ -288,7 +289,7 @@ class Module(ModelSQL, ModelView):
|
||||
continue
|
||||
module, = cls.create([{
|
||||
'name': name,
|
||||
'state': 'uninstalled',
|
||||
'state': 'not activated',
|
||||
}])
|
||||
count += 1
|
||||
cls._update_dependencies(module, tryton.get('depends', []))
|
||||
@@ -323,11 +324,11 @@ class ModuleDependency(ModelSQL, ModelView):
|
||||
module = fields.Many2One('ir.module', 'Module', select=True,
|
||||
ondelete='CASCADE', required=True)
|
||||
state = fields.Function(fields.Selection([
|
||||
('uninstalled', 'Not Installed'),
|
||||
('installed', 'Installed'),
|
||||
('not activated', 'Not Activated'),
|
||||
('activated', 'Activated'),
|
||||
('to upgrade', 'To be upgraded'),
|
||||
('to remove', 'To be removed'),
|
||||
('to install', 'To be installed'),
|
||||
('to activate', 'To be activated'),
|
||||
('unknown', 'Unknown'),
|
||||
], 'State', readonly=True), 'get_state')
|
||||
|
||||
@@ -364,7 +365,7 @@ class ModuleDependency(ModelSQL, ModelView):
|
||||
|
||||
|
||||
class ModuleConfigWizardItem(ModelSQL, ModelView):
|
||||
"Config wizard to run after installing module"
|
||||
"Config wizard to run after activating a module"
|
||||
__name__ = 'ir.module.config_wizard.item'
|
||||
_rec_name = 'action'
|
||||
action = fields.Many2One('ir.action', 'Action', required=True,
|
||||
@@ -502,45 +503,45 @@ class ModuleConfigWizard(Wizard):
|
||||
return 'reload menu'
|
||||
|
||||
|
||||
class ModuleInstallUpgradeStart(ModelView):
|
||||
'Module Install Upgrade Start'
|
||||
__name__ = 'ir.module.install_upgrade.start'
|
||||
class ModuleActivateUpgradeStart(ModelView):
|
||||
'Module Activate Upgrade Start'
|
||||
__name__ = 'ir.module.activate_upgrade.start'
|
||||
module_info = fields.Text('Modules to update', readonly=True)
|
||||
|
||||
|
||||
class ModuleInstallUpgradeDone(ModelView):
|
||||
'Module Install Upgrade Done'
|
||||
__name__ = 'ir.module.install_upgrade.done'
|
||||
class ModuleActivateUpgradeDone(ModelView):
|
||||
'Module Activate Upgrade Done'
|
||||
__name__ = 'ir.module.activate_upgrade.done'
|
||||
|
||||
|
||||
class ModuleInstallUpgrade(Wizard):
|
||||
"Install / Upgrade modules"
|
||||
__name__ = 'ir.module.install_upgrade'
|
||||
class ModuleActivateUpgrade(Wizard):
|
||||
"Activate / Upgrade modules"
|
||||
__name__ = 'ir.module.activate_upgrade'
|
||||
|
||||
start = StateView('ir.module.install_upgrade.start',
|
||||
'ir.module_install_upgrade_start_view_form', [
|
||||
start = StateView('ir.module.activate_upgrade.start',
|
||||
'ir.module_activate_upgrade_start_view_form', [
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('Start Upgrade', 'upgrade', 'tryton-ok', default=True),
|
||||
])
|
||||
upgrade = StateTransition()
|
||||
done = StateView('ir.module.install_upgrade.done',
|
||||
'ir.module_install_upgrade_done_view_form', [
|
||||
done = StateView('ir.module.activate_upgrade.done',
|
||||
'ir.module_activate_upgrade_done_view_form', [
|
||||
Button('OK', 'config', 'tryton-ok', default=True),
|
||||
])
|
||||
config = StateAction('ir.act_module_config_wizard')
|
||||
|
||||
@classmethod
|
||||
def check_access(cls):
|
||||
# Use new transaction to prevent lock when installing modules
|
||||
# Use new transaction to prevent lock when activating modules
|
||||
with Transaction().new_transaction():
|
||||
super(ModuleInstallUpgrade, cls).check_access()
|
||||
super(ModuleActivateUpgrade, cls).check_access()
|
||||
|
||||
@staticmethod
|
||||
def default_start(fields):
|
||||
pool = Pool()
|
||||
Module = pool.get('ir.module')
|
||||
modules = Module.search([
|
||||
('state', 'in', ['to upgrade', 'to remove', 'to install']),
|
||||
('state', 'in', ['to upgrade', 'to remove', 'to activate']),
|
||||
])
|
||||
return {
|
||||
'module_info': '\n'.join(x.name + ': ' + x.state
|
||||
@@ -559,7 +560,7 @@ class ModuleInstallUpgrade(Wizard):
|
||||
Lang = pool.get('ir.lang')
|
||||
with Transaction().new_transaction():
|
||||
modules = Module.search([
|
||||
('state', 'in', ['to upgrade', 'to remove', 'to install']),
|
||||
('state', 'in', ['to upgrade', 'to remove', 'to activate']),
|
||||
])
|
||||
update = [m.name for m in modules]
|
||||
langs = Lang.search([
|
||||
|
||||
+14
-14
@@ -95,32 +95,32 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="name">module_config_wizard_done_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_module_install_upgrade">
|
||||
<field name="name">Perform Pending Installation/Upgrade</field>
|
||||
<field name="wiz_name">ir.module.install_upgrade</field>
|
||||
<record model="ir.action.wizard" id="act_module_activate_upgrade">
|
||||
<field name="name">Perform Pending Activation/Upgrade</field>
|
||||
<field name="wiz_name">ir.module.activate_upgrade</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_module_install_upgrade_keyword1">
|
||||
<field name="action" ref="act_module_install_upgrade"/>
|
||||
<record model="ir.action.keyword" id="act_module_activate_upgrade_keyword1">
|
||||
<field name="action" ref="act_module_activate_upgrade"/>
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">ir.module,-1</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="module_install_upgrade_start_view_form">
|
||||
<field name="model">ir.module.install_upgrade.start</field>
|
||||
<record model="ir.ui.view" id="module_activate_upgrade_start_view_form">
|
||||
<field name="model">ir.module.activate_upgrade.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">module_install_upgrade_start_form</field>
|
||||
<field name="name">module_activate_upgrade_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="module_install_upgrade_done_view_form">
|
||||
<field name="model">ir.module.install_upgrade.done</field>
|
||||
<record model="ir.ui.view" id="module_activate_upgrade_done_view_form">
|
||||
<field name="model">ir.module.activate_upgrade.done</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">module_install_upgrade_done_form</field>
|
||||
<field name="name">module_activate_upgrade_done_form</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Perform Pending Installation/Upgrade"
|
||||
<menuitem name="Perform Pending Activation/Upgrade"
|
||||
parent="menu_modules"
|
||||
action="act_module_install_upgrade"
|
||||
id="menu_module_install_upgrade"/>
|
||||
action="act_module_activate_upgrade"
|
||||
id="menu_module_activate_upgrade"/>
|
||||
|
||||
<record model="ir.action.wizard" id="act_module_config">
|
||||
<field name="name">Configure Modules</field>
|
||||
|
||||
+20
-20
@@ -526,8 +526,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="rule_group" ref="rule_group_action_url"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action-res.group" id="act_module_install_upgrade_group_admin">
|
||||
<field name="action" ref="ir.act_module_install_upgrade"/>
|
||||
<record model="ir.action-res.group" id="act_module_activate_upgrade_group_admin">
|
||||
<field name="action" ref="ir.act_module_activate_upgrade"/>
|
||||
<field name="group" ref="group_admin"/>
|
||||
</record>
|
||||
<record model="ir.action-res.group" id="act_translation_update_group_admin">
|
||||
@@ -691,8 +691,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="menu" ref="ir.menu_config_wizard_item_form"/>
|
||||
<field name="group" ref="group_admin"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_module_install_upgrade_group_admin">
|
||||
<field name="menu" ref="ir.menu_module_install_upgrade"/>
|
||||
<record model="ir.ui.menu-res.group" id="menu_module_activate_upgrade_group_admin">
|
||||
<field name="menu" ref="ir.menu_module_activate_upgrade"/>
|
||||
<field name="group" ref="group_admin"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_trigger_form_group_admin">
|
||||
@@ -700,43 +700,43 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="group" ref="group_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="module_install_button">
|
||||
<field name="name">install</field>
|
||||
<record model="ir.model.button" id="module_activate_button">
|
||||
<field name="name">activate</field>
|
||||
<field name="model" search="[('model', '=', 'ir.module')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group"
|
||||
id="module_install_button_group_admin">
|
||||
<field name="button" ref="module_install_button"/>
|
||||
id="module_activate_button_group_admin">
|
||||
<field name="button" ref="module_activate_button"/>
|
||||
<field name="group" ref="group_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="module_install_cancel_button">
|
||||
<field name="name">install_cancel</field>
|
||||
<record model="ir.model.button" id="module_activate_cancel_button">
|
||||
<field name="name">activate_cancel</field>
|
||||
<field name="model" search="[('model', '=', 'ir.module')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group"
|
||||
id="module_install_cancel_button_group_admin">
|
||||
<field name="button" ref="module_install_cancel_button"/>
|
||||
id="module_activate_cancel_button_group_admin">
|
||||
<field name="button" ref="module_activate_cancel_button"/>
|
||||
<field name="group" ref="group_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="module_uninstall_button">
|
||||
<field name="name">uninstall</field>
|
||||
<record model="ir.model.button" id="module_deactivate_button">
|
||||
<field name="name">deactivate</field>
|
||||
<field name="model" search="[('model', '=', 'ir.module')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group"
|
||||
id="module_uninstall_button_group_admin">
|
||||
<field name="button" ref="module_uninstall_button"/>
|
||||
id="module_deactivate_button_group_admin">
|
||||
<field name="button" ref="module_deactivate_button"/>
|
||||
<field name="group" ref="group_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="module_uninstall_cancel_button">
|
||||
<field name="name">uninstall_cancel</field>
|
||||
<record model="ir.model.button" id="module_deactivate_cancel_button">
|
||||
<field name="name">deactivate_cancel</field>
|
||||
<field name="model" search="[('model', '=', 'ir.module')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group"
|
||||
id="module_uninstall_cancel_button_group_admin">
|
||||
<field name="button" ref="module_uninstall_cancel_button"/>
|
||||
id="module_deactivate_cancel_button_group_admin">
|
||||
<field name="button" ref="module_deactivate_cancel_button"/>
|
||||
<field name="group" ref="group_admin"/>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import unittest
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond.exceptions import UserError
|
||||
@@ -15,7 +15,7 @@ class ModelAccessTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction(context=_context)
|
||||
def test_perm_read(self):
|
||||
@@ -352,7 +352,7 @@ class ModelFieldAccessTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction(context=_context)
|
||||
def test0010perm_read(self):
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import unittest
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ class CopyTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_one2many(self):
|
||||
|
||||
@@ -12,7 +12,7 @@ except ImportError:
|
||||
import unittest
|
||||
from decimal import Decimal
|
||||
import datetime
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class ExportDataTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_boolean(self):
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import unittest
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ class FieldContextTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_context(self):
|
||||
|
||||
@@ -15,7 +15,7 @@ import shutil
|
||||
import tempfile
|
||||
|
||||
from decimal import Decimal
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.exceptions import UserError
|
||||
from trytond.model import fields
|
||||
@@ -28,7 +28,7 @@ class FieldsTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
def setUp(self):
|
||||
path = config.get('database', 'path')
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
import unittest
|
||||
import datetime
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond.exceptions import UserError
|
||||
@@ -15,7 +15,7 @@ class HistoryTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def tearDown(self):
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import unittest
|
||||
from decimal import InvalidOperation
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond.exceptions import UserError
|
||||
@@ -15,7 +15,7 @@ class ImportDataTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_boolean(self):
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
import unittest
|
||||
import urllib
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond.url import HOSTNAME
|
||||
@@ -16,7 +16,7 @@ class UrlTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def testModelURL(self):
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import unittest
|
||||
|
||||
from trytond.pool import Pool
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
|
||||
|
||||
class ModelTestCase(unittest.TestCase):
|
||||
@@ -12,7 +12,7 @@ class ModelTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_repr(self):
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import unittest
|
||||
from datetime import datetime
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
@@ -13,7 +13,7 @@ class ModelSingletonTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_read(self):
|
||||
|
||||
@@ -11,7 +11,7 @@ from trytond import backend
|
||||
from trytond.exceptions import UserError, ConcurrencyException
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
|
||||
|
||||
class ModelSQLTestCase(unittest.TestCase):
|
||||
@@ -19,7 +19,7 @@ class ModelSQLTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@unittest.skipIf(backend.name() == 'sqlite',
|
||||
'SQLite not concerned because tryton don\'t set "NOT NULL"'
|
||||
|
||||
@@ -6,7 +6,7 @@ import unittest
|
||||
from trytond.error import UserError
|
||||
from trytond.pool import Pool
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
|
||||
|
||||
class ModelStorageTestCase(unittest.TestCase):
|
||||
@@ -14,7 +14,7 @@ class ModelStorageTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_search_read_order(self):
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import unittest
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond.exceptions import UserError
|
||||
|
||||
@@ -13,7 +13,7 @@ class ModelView(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_changed_values(self):
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import sys
|
||||
import unittest
|
||||
from mock import patch
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
@@ -14,7 +14,7 @@ class MPTTTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
def check_tree(self, parent_id=None, left=-1, right=sys.maxint):
|
||||
pool = Pool()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import unittest
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ class SequenceOrderedMixinTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_order(self):
|
||||
|
||||
@@ -8,7 +8,7 @@ from mock import Mock, patch, call
|
||||
from trytond.sendmail import (
|
||||
sendmail_transactional, sendmail, SMTPDataManager, get_smtp_server)
|
||||
from trytond.transaction import Transaction
|
||||
from .test_tryton import with_transaction, install_module
|
||||
from .test_tryton import with_transaction, activate_module
|
||||
|
||||
|
||||
class SendmailTestCase(unittest.TestCase):
|
||||
@@ -16,7 +16,7 @@ class SendmailTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_sendmail_transactional(self):
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import unittest
|
||||
import datetime
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond.exceptions import UserError
|
||||
@@ -14,7 +14,7 @@ class SequenceTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_incremental(self):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import unittest
|
||||
from mock import Mock
|
||||
from trytond.tests.test_tryton import DB_NAME, USER, CONTEXT, install_module
|
||||
from trytond.tests.test_tryton import DB_NAME, USER, CONTEXT, activate_module
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ class TransactionTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
def test_nonexistdb(self):
|
||||
'''Attempt opening a transaction with a non existant DB
|
||||
|
||||
@@ -6,7 +6,7 @@ import time
|
||||
import datetime
|
||||
from itertools import combinations
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.tests.trigger import TRIGGER_LOGS
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
@@ -19,7 +19,7 @@ class TriggerTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_constraints(self):
|
||||
|
||||
@@ -24,7 +24,7 @@ from trytond.cache import Cache
|
||||
from trytond.config import config, parse_uri
|
||||
|
||||
__all__ = ['POOL', 'DB_NAME', 'USER', 'CONTEXT',
|
||||
'install_module', 'ModuleTestCase', 'with_transaction',
|
||||
'activate_module', 'ModuleTestCase', 'with_transaction',
|
||||
'doctest_setup', 'doctest_teardown', 'doctest_checker',
|
||||
'suite', 'all_suite', 'modules_suite']
|
||||
|
||||
@@ -38,9 +38,9 @@ Pool.test = True
|
||||
POOL = Pool(DB_NAME)
|
||||
|
||||
|
||||
def install_module(name):
|
||||
def activate_module(name):
|
||||
'''
|
||||
Install module for the tested database
|
||||
Activate module for the tested database
|
||||
'''
|
||||
if not db_exist(DB_NAME) and restore_db_cache(name):
|
||||
return
|
||||
@@ -55,19 +55,19 @@ def install_module(name):
|
||||
|
||||
modules = Module.search([
|
||||
('name', '=', name),
|
||||
('state', '!=', 'installed'),
|
||||
('state', '!=', 'activated'),
|
||||
])
|
||||
|
||||
if modules:
|
||||
Module.install(modules)
|
||||
Module.activate(modules)
|
||||
transaction.commit()
|
||||
|
||||
InstallUpgrade = POOL.get('ir.module.install_upgrade',
|
||||
ActivateUpgrade = POOL.get('ir.module.activate_upgrade',
|
||||
type='wizard')
|
||||
instance_id, _, _ = InstallUpgrade.create()
|
||||
instance_id, _, _ = ActivateUpgrade.create()
|
||||
transaction.commit()
|
||||
InstallUpgrade(instance_id).transition_upgrade()
|
||||
InstallUpgrade.delete(instance_id)
|
||||
ActivateUpgrade(instance_id).transition_upgrade()
|
||||
ActivateUpgrade.delete(instance_id)
|
||||
transaction.commit()
|
||||
backup_db_cache(name)
|
||||
|
||||
@@ -179,7 +179,7 @@ class ModuleTestCase(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
drop_db()
|
||||
install_module(cls.module)
|
||||
activate_module(cls.module)
|
||||
super(ModuleTestCase, cls).setUpClass()
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import unittest
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ class UnionMixinTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_union(self):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# repository contains the full copyright notices and license terms.
|
||||
|
||||
import unittest
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.pool import Pool
|
||||
from trytond.res.user import bcrypt
|
||||
from trytond.config import config
|
||||
@@ -13,7 +13,7 @@ class UserTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('res')
|
||||
activate_module('res')
|
||||
|
||||
def setUp(self):
|
||||
methods = config.get('session', 'authentications')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of this
|
||||
# repository contains the full copyright notices and license terms.
|
||||
import unittest
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
@@ -10,7 +10,7 @@ class WizardTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
@with_transaction()
|
||||
def test_create(self):
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import unittest
|
||||
|
||||
from trytond.tests.test_tryton import install_module, with_transaction
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.pool import Pool
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ class WorkflowTestCase(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
install_module('tests')
|
||||
activate_module('tests')
|
||||
|
||||
# TODO add test for Workflow.transition
|
||||
@with_transaction()
|
||||
|
||||
@@ -5,7 +5,7 @@ from proteus import config, Model, Wizard
|
||||
from .test_tryton import restore_db_cache, backup_db_cache, drop_create
|
||||
|
||||
|
||||
def install_modules(modules):
|
||||
def activate_modules(modules):
|
||||
if isinstance(modules, basestring):
|
||||
modules = [modules]
|
||||
cache_name = '-'.join(modules)
|
||||
@@ -18,8 +18,8 @@ def install_modules(modules):
|
||||
modules = Module.find([
|
||||
('name', 'in', modules),
|
||||
])
|
||||
Module.click(modules, 'install')
|
||||
Wizard('ir.module.install_upgrade').execute('upgrade')
|
||||
Module.click(modules, 'activate')
|
||||
Wizard('ir.module.activate_upgrade').execute('upgrade')
|
||||
|
||||
backup_db_cache(cache_name)
|
||||
return cfg
|
||||
|
||||
Reference in new issue
Block a user