summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Morel <xmo@tinyerp.com>2010-01-26 15:08:30 +0100
committerXavier Morel <xmo@tinyerp.com>2010-01-26 15:08:30 +0100
commit2e49aaa7ce33b601b983ec6bb368535426cdc148 (patch)
treeb725d7327d6a2ed823c41f9dc5c1799730ddf17d
parent349c2471aef6aea429464c62ccdb85f6c1411c09 (diff)
[imp] account, base_setup: move chart of accounts selection from base_setup installer to account's
Also remove it from account's config item as it's redundant Rationale: account can be installed due to dependency chains, not just direct installation from base_setup: project, stock, purchase and profile_auction all depend on account, mrp depends on stock which depends on account, so from base_setup's installer alone there are 5 different ways to end up with account installed and need to configure charts of accounts. Therefore having chart of accounts config in base_setup's installer is dumb (as we need a second one anyway), and since it's (in a way) a problem of module installation, the most coherent way is to move it to account/installer.py, and remove it from the config screen where it was (which becomes redundant). Made it required, because it was required in the config item, not sure it's actually mandatory to install a chart of accounts but whatever. bzr revid: xmo@tinyerp.com-20100126140830-h4c7hlvmzzos69ls
-rw-r--r--addons/account/account.py19
-rw-r--r--addons/account/account_installer.xml1
-rw-r--r--addons/account/account_view.xml2
-rw-r--r--addons/account/installer.py29
-rw-r--r--addons/base_setup/base_setup_installer.xml9
-rw-r--r--addons/base_setup/installer.py23
6 files changed, 34 insertions, 49 deletions
diff --git a/addons/account/account.py b/addons/account/account.py
index 3772a660de9..47c00ddb21a 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -1749,15 +1749,6 @@ class account_config_wizard(osv.osv_memory):
_name = 'account.config.wizard'
_inherit = 'res.config'
- def _get_charts(self, cr, uid, context):
- module_obj=self.pool.get('ir.module.module')
- ids=module_obj.search(cr, uid, [('category_id', '=', 'Account Charts'),
- ('state', '<>', 'installed')])
- res=[(m.id, m.shortdesc) for m in module_obj.browse(cr, uid, ids)]
- res.append((-1, 'None'))
- res.sort(key=lambda x: x[1])
- return res
-
_columns = {
'name':fields.char(
'Name', required=True, size=64,
@@ -1769,7 +1760,6 @@ class account_config_wizard(osv.osv_memory):
'date2': fields.date('End Date', required=True),
'period':fields.selection([('month','Month'), ('3months','3 Months')],
'Periods', required=True),
- 'charts' : fields.selection(_get_charts, 'Charts of Account',required=True)
}
_defaults = {
'code': lambda *a: time.strftime('%Y'),
@@ -1778,14 +1768,6 @@ class account_config_wizard(osv.osv_memory):
'date2': lambda *a: time.strftime('%Y-12-31'),
'period':lambda *a:'month',
}
- def install_account_chart(self, cr, uid, ids, context=None):
- for res in self.read(cr,uid,ids):
- chart_id = res['charts']
- if chart_id > 0:
- mod_obj = self.pool.get('ir.module.module')
- mod_obj.button_install(cr, uid, [chart_id], context=context)
- cr.commit()
- db, pool = pooler.restart_pool(cr.dbname, update_module=True)
def execute(self, cr, uid, ids, context=None):
for res in self.read(cr,uid,ids):
@@ -1805,7 +1787,6 @@ class account_config_wizard(osv.osv_memory):
res_obj.create_period(cr,uid,[new_id])
elif res['period']=='3months':
res_obj.create_period3(cr,uid,[new_id])
- self.install_account_chart(cr,uid,ids)
account_config_wizard()
diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml
index fc96db128cf..d943bb452c7 100644
--- a/addons/account/account_installer.xml
+++ b/addons/account/account_installer.xml
@@ -23,6 +23,7 @@
<group colspan="8">
<separator string="Accounting" colspan="4"/>
+ <field name="charts"/>
<field name="account_analytic_default"/>
<field name="account_analytic_plans"/>
<field name="account_payment"/>
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index ee2047bca88..c3b059950ad 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -1460,8 +1460,6 @@
<field name="date1"/>
<field name="date2"/>
<field name="period" colspan="4"/>
- <separator col="4" colspan="4" string="Select Chart of Accounts"/>
- <field name="charts"/>
</group>
<xpath expr='//button[@name="action_skip"]' position="replace"/>
</data>
diff --git a/addons/account/installer.py b/addons/account/installer.py
index 3122fe77350..35a09406891 100644
--- a/addons/account/installer.py
+++ b/addons/account/installer.py
@@ -18,14 +18,30 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
+from operator import itemgetter
+
from osv import fields, osv
+import netsvc
class account_installer(osv.osv_memory):
_name = 'account.installer'
_inherit = 'res.config.installer'
+ def _get_charts(self, cr, uid, context=None):
+ modules = self.pool.get('ir.module.module')
+ ids = modules.search(cr, uid, [('category_id','=','Account Charts')])
+ return list(
+ sorted(((m.name, m.shortdesc)
+ for m in modules.browse(cr, uid, ids)),
+ key=itemgetter(1)))
+
_columns = {
# Accounting
+ 'charts':fields.selection(_get_charts, 'Chart of Accounts',
+ required=True,
+ help="Installs localized accounting charts to match as closely as "
+ "possible the accounting needs of your company based on your "
+ "country."),
'account_analytic_default':fields.boolean('Analytic Accounting',
help="Automatically selects analytic accounts based on various "
"criteria."),
@@ -46,4 +62,17 @@ class account_installer(osv.osv_memory):
_defaults = {
'account_analytic_default':True,
}
+
+ def modules_to_install(self, cr, uid, ids, context=None):
+ modules = super(account_installer, self).modules_to_install(
+ cr, uid, ids, context=context)
+
+ chart = self.read(cr, uid, ids, ['charts'],
+ context=context)[0]['charts']
+ self.logger.notifyChannel(
+ 'installer', netsvc.LOG_DEBUG,
+ 'Installing chart of accounts %s'%chart)
+ return modules | set([chart])
+
+
account_installer()
diff --git a/addons/base_setup/base_setup_installer.xml b/addons/base_setup/base_setup_installer.xml
index bf359ec306e..f9b490c2e98 100644
--- a/addons/base_setup/base_setup_installer.xml
+++ b/addons/base_setup/base_setup_installer.xml
@@ -25,11 +25,10 @@ If you don't think you need any of these right now, you can easily install them
<field name="crm"/> <field name="sale"/>
<field name="project"/> <field name="knowledge"/>
<field name="stock"/> <field name="mrp"/>
- <field name="account"/>
- <field name="charts" attrs="{'readonly':[('account','=',False)]}"/>
- <field name="purchase"/> <field name="hr"/>
- <field name="point_of_sale"/> <field name="marketing"/>
- <field name="misc_tools"/> <field name="report_designer"/>
+ <field name="account"/> <field name="purchase"/>
+ <field name="hr"/> <field name="point_of_sale"/>
+ <field name="marketing"/> <field name="misc_tools"/>
+ <field name="report_designer"/>
<separator string="Vertical Modules" colspan="4"/>
<field name="profile_association"/>
<field name="profile_training"/>
diff --git a/addons/base_setup/installer.py b/addons/base_setup/installer.py
index 3bdc34c48fa..2c1ba113e47 100644
--- a/addons/base_setup/installer.py
+++ b/addons/base_setup/installer.py
@@ -19,31 +19,12 @@
#
##############################################################################
from osv import fields, osv
-from itertools import chain
-from operator import itemgetter
import netsvc
class base_setup_installer(osv.osv_memory):
_name = 'base.setup.installer'
_inherit = 'res.config.installer'
- def _get_charts(self, cr, uid, context=None):
- modules = self.pool.get('ir.module.module')
- ids = modules.search(cr, uid, [('category_id','=','Account Charts'),
- ('state','!=','installed')])
- return list(
- sorted(((m.name, m.shortdesc)
- for m in modules.browse(cr, uid, ids)),
- key=itemgetter(1)))
-
- def _if_account(self, cr, uid, ids, context=None):
- chart = self.read(cr, uid, ids, ['charts'],
- context=context)[0]['charts']
- self.logger.notifyChannel(
- 'installer', netsvc.LOG_DEBUG,
- 'Addon "account" selected, installing chart of accounts %s'%chart)
- return [chart]
-
_install_if = {
('sale','crm'): ['sale_crm'],
('sale','project'): ['project_mrp'],
@@ -73,10 +54,6 @@ class base_setup_installer(osv.osv_memory):
'account':fields.boolean('Financial & Accounting',
help="Helps you handle your accounting needs, as well as create "
"and track your budgets."),
- 'charts':fields.selection(_get_charts, 'Chart of Accounts',
- help="Installs localized accounting charts to match as closely as "
- "possible the accounting needs of your company based on your "
- "country."),
'purchase':fields.boolean('Purchase Management',
help="Helps you manage your purchase-related processes such as "
"requests for quotations, supplier invoices, etc..."),