diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py
index 66d676088f7..e5fe94d4e5a 100644
--- a/openerp/addons/base/ir/ir_actions.py
+++ b/openerp/addons/base/ir/ir_actions.py
@@ -22,17 +22,16 @@
import logging
import os
import re
-import time
-import tools
-
-import netsvc
-from osv import fields,osv
-from report.report_sxw import report_sxw, report_rml
-from tools.config import config
-from tools.safe_eval import safe_eval as eval
-from tools.translate import _
from socket import gethostname
+import time
+
from openerp import SUPERUSER_ID
+from openerp import netsvc, tools
+from openerp.osv import fields, osv
+from openerp.report.report_sxw import report_sxw, report_rml
+from openerp.tools.config import config
+from openerp.tools.safe_eval import safe_eval as eval
+from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
diff --git a/openerp/addons/base/ir/ir_attachment.py b/openerp/addons/base/ir/ir_attachment.py
index c80e1cf8a6e..1e84dadd15c 100644
--- a/openerp/addons/base/ir/ir_attachment.py
+++ b/openerp/addons/base/ir/ir_attachment.py
@@ -18,12 +18,9 @@
# along with this program. If not, see .
#
##############################################################################
-
import itertools
-from osv import fields,osv
-from osv.orm import except_orm
-import tools
+from openerp.osv import fields,osv
class ir_attachment(osv.osv):
def check(self, cr, uid, ids, mode, context=None, values=None):
diff --git a/openerp/addons/base/ir/ir_config_parameter.py b/openerp/addons/base/ir/ir_config_parameter.py
index 3c88a3fbc31..50af5732001 100644
--- a/openerp/addons/base/ir/ir_config_parameter.py
+++ b/openerp/addons/base/ir/ir_config_parameter.py
@@ -22,11 +22,12 @@
Store database-specific configuration parameters
"""
-from osv import osv,fields
import uuid
import datetime
-from tools import misc, config
+
from openerp import SUPERUSER_ID
+from openerp.osv import osv, fields
+from openerp.tools import misc, config
"""
A dictionary holding some configuration parameters to be initialized when the database is created.
diff --git a/openerp/addons/base/ir/ir_cron.py b/openerp/addons/base/ir/ir_cron.py
index aaff5b3510b..790b4a43de0 100644
--- a/openerp/addons/base/ir/ir_cron.py
+++ b/openerp/addons/base/ir/ir_cron.py
@@ -18,23 +18,18 @@
# along with this program. If not, see .
#
##############################################################################
-
-import calendar
import time
import logging
-import threading
import psycopg2
from datetime import datetime
from dateutil.relativedelta import relativedelta
-import netsvc
import openerp
-import pooler
-import tools
-from osv import fields, osv
-from tools import DEFAULT_SERVER_DATETIME_FORMAT
-from tools.safe_eval import safe_eval as eval
-from tools.translate import _
+from openerp import netsvc
+from openerp.osv import fields, osv
+from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
+from openerp.tools.safe_eval import safe_eval as eval
+from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
diff --git a/openerp/addons/base/ir/ir_default.py b/openerp/addons/base/ir/ir_default.py
index 2378551153d..21c66c0972b 100644
--- a/openerp/addons/base/ir/ir_default.py
+++ b/openerp/addons/base/ir/ir_default.py
@@ -19,7 +19,7 @@
#
##############################################################################
-from osv import fields,osv
+from openerp.osv import fields, osv
class ir_default(osv.osv):
_name = 'ir.default'
diff --git a/openerp/addons/base/ir/ir_exports.py b/openerp/addons/base/ir/ir_exports.py
index a53f63383da..972a21c9047 100644
--- a/openerp/addons/base/ir/ir_exports.py
+++ b/openerp/addons/base/ir/ir_exports.py
@@ -19,7 +19,7 @@
#
##############################################################################
-from osv import fields,osv
+from openerp.osv import fields,osv
class ir_exports(osv.osv):
diff --git a/openerp/addons/base/ir/ir_fields.py b/openerp/addons/base/ir/ir_fields.py
index 105176bbd9c..302b11eb526 100644
--- a/openerp/addons/base/ir/ir_fields.py
+++ b/openerp/addons/base/ir/ir_fields.py
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
-import collections
import datetime
import functools
import operator
diff --git a/openerp/addons/base/ir/ir_filters.py b/openerp/addons/base/ir/ir_filters.py
index 96021ee5d05..74665a1ffe3 100644
--- a/openerp/addons/base/ir/ir_filters.py
+++ b/openerp/addons/base/ir/ir_filters.py
@@ -20,8 +20,8 @@
##############################################################################
from openerp import exceptions
-from osv import osv, fields
-from tools.translate import _
+from openerp.osv import osv, fields
+from openerp.tools.translate import _
class ir_filters(osv.osv):
_name = 'ir.filters'
diff --git a/openerp/addons/base/ir/ir_mail_server.py b/openerp/addons/base/ir/ir_mail_server.py
index b30efef1b14..0134cd5f197 100644
--- a/openerp/addons/base/ir/ir_mail_server.py
+++ b/openerp/addons/base/ir/ir_mail_server.py
@@ -31,8 +31,7 @@ import re
import smtplib
import threading
-from osv import osv
-from osv import fields
+from openerp.osv import osv, fields
from openerp.tools.translate import _
from openerp.tools import html2text
import openerp.tools as tools
diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py
index 042283fcea0..1f51f4667e6 100644
--- a/openerp/addons/base/ir/ir_needaction.py
+++ b/openerp/addons/base/ir/ir_needaction.py
@@ -19,7 +19,7 @@
#
##############################################################################
-from osv import osv
+from openerp.osv import osv
class ir_needaction_mixin(osv.AbstractModel):
diff --git a/openerp/addons/base/ir/ir_rule.py b/openerp/addons/base/ir/ir_rule.py
index ba4665ddd69..7a6c79d5f51 100644
--- a/openerp/addons/base/ir/ir_rule.py
+++ b/openerp/addons/base/ir/ir_rule.py
@@ -18,15 +18,13 @@
# along with this program. If not, see .
#
##############################################################################
-
-from osv import fields, osv, expression
import time
-from operator import itemgetter
-from functools import partial
-import tools
-from tools.safe_eval import safe_eval as eval
-from tools.misc import unquote as unquote
+
from openerp import SUPERUSER_ID
+from openerp import tools
+from openerp.osv import fields, osv, expression
+from openerp.tools.safe_eval import safe_eval as eval
+from openerp.tools.misc import unquote as unquote
class ir_rule(osv.osv):
_name = 'ir.rule'
diff --git a/openerp/addons/base/ir/ir_sequence.py b/openerp/addons/base/ir/ir_sequence.py
index 13035f41cec..8ba94d37006 100644
--- a/openerp/addons/base/ir/ir_sequence.py
+++ b/openerp/addons/base/ir/ir_sequence.py
@@ -22,10 +22,9 @@
import logging
import time
-from osv import osv, fields
-from tools.translate import _
-
import openerp
+from openerp.osv import osv
+from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
diff --git a/openerp/addons/base/ir/ir_translation.py b/openerp/addons/base/ir/ir_translation.py
index a9712756b88..35547fe6f75 100644
--- a/openerp/addons/base/ir/ir_translation.py
+++ b/openerp/addons/base/ir/ir_translation.py
@@ -19,12 +19,12 @@
#
##############################################################################
-import tools
import logging
+from openerp import tools
import openerp.modules
from openerp.osv import fields, osv
-from tools.translate import _
+from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py
index 04f9a7a7a96..5da85c43577 100644
--- a/openerp/addons/base/ir/ir_ui_menu.py
+++ b/openerp/addons/base/ir/ir_ui_menu.py
@@ -23,11 +23,11 @@
import base64
import re
import threading
-from tools.safe_eval import safe_eval as eval
-import tools
+from openerp.tools.safe_eval import safe_eval as eval
+from openerp import tools
import openerp.modules
-from osv import fields, osv
-from tools.translate import _
+from openerp.osv import fields, osv
+from openerp.tools.translate import _
from openerp import SUPERUSER_ID
def one_in(setA, setB):
diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py
index 83a1a9a8bcb..0b8ff4ee66f 100644
--- a/openerp/addons/base/ir/ir_ui_view.py
+++ b/openerp/addons/base/ir/ir_ui_view.py
@@ -19,14 +19,15 @@
#
##############################################################################
-from osv import fields,osv
-from lxml import etree
-from tools import graph
-from tools.safe_eval import safe_eval as eval
-import tools
-from tools.view_validation import valid_view
-import os
import logging
+from lxml import etree
+import os
+
+from openerp import tools
+from openerp.osv import fields,osv
+from openerp.tools import graph
+from openerp.tools.safe_eval import safe_eval as eval
+from openerp.tools.view_validation import valid_view
_logger = logging.getLogger(__name__)
diff --git a/openerp/addons/base/ir/ir_values.py b/openerp/addons/base/ir/ir_values.py
index 8b9d44da6f7..9e0c8e5ab9b 100644
--- a/openerp/addons/base/ir/ir_values.py
+++ b/openerp/addons/base/ir/ir_values.py
@@ -18,11 +18,10 @@
# along with this program. If not, see .
#
##############################################################################
-
-from osv import osv,fields
-from osv.orm import except_orm
import pickle
-from tools.translate import _
+
+from openerp.osv import osv, fields
+from openerp.osv.orm import except_orm
EXCLUDED_FIELDS = set((
'report_sxw_content', 'report_rml_content', 'report_sxw', 'report_rml',
diff --git a/openerp/addons/base/ir/wizard/wizard_menu.py b/openerp/addons/base/ir/wizard/wizard_menu.py
index 17f0fc13f1d..a374b3dad2d 100644
--- a/openerp/addons/base/ir/wizard/wizard_menu.py
+++ b/openerp/addons/base/ir/wizard/wizard_menu.py
@@ -18,7 +18,8 @@
# along with this program. If not, see .
#
##############################################################################
-from osv import fields,osv
+
+from openerp.osv import fields, osv
class wizard_model_menu(osv.osv_memory):
_name = 'wizard.ir.model.menu.create'
diff --git a/openerp/addons/base/ir/workflow/print_instance.py b/openerp/addons/base/ir/workflow/print_instance.py
index 4e2f30ca03a..706ee09d129 100644
--- a/openerp/addons/base/ir/workflow/print_instance.py
+++ b/openerp/addons/base/ir/workflow/print_instance.py
@@ -18,13 +18,11 @@
# along with this program. If not, see .
#
##############################################################################
-
import logging
-import time, os
-
-import netsvc
-import report,pooler,tools
from operator import itemgetter
+import os
+
+from openerp import report, tools
_logger = logging.getLogger(__name__)
diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py
index b35e36c5553..a10b38cf586 100644
--- a/openerp/addons/base/module/module.py
+++ b/openerp/addons/base/module/module.py
@@ -18,9 +18,7 @@
# along with this program. If not, see .
#
##############################################################################
-
-import base64
-from docutils import io, nodes
+from docutils import nodes
from docutils.core import publish_string
from docutils.transforms import Transform, writer_aux
from docutils.writers.html4css1 import Writer
diff --git a/openerp/addons/base/module/report/ir_module_reference_print.py b/openerp/addons/base/module/report/ir_module_reference_print.py
index 36978e21643..bb95dd7b2b8 100644
--- a/openerp/addons/base/module/report/ir_module_reference_print.py
+++ b/openerp/addons/base/module/report/ir_module_reference_print.py
@@ -20,7 +20,8 @@
##############################################################################
import time
-from report import report_sxw
+
+from openerp.report import report_sxw
class ir_module_reference_print(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
diff --git a/openerp/addons/base/module/wizard/base_export_language.py b/openerp/addons/base/module/wizard/base_export_language.py
index 882831af646..eb9004b9abe 100644
--- a/openerp/addons/base/module/wizard/base_export_language.py
+++ b/openerp/addons/base/module/wizard/base_export_language.py
@@ -19,12 +19,13 @@
#
##############################################################################
-import tools
import base64
import cStringIO
-from osv import fields,osv
-from tools.translate import _
-from tools.misc import get_iso_codes
+
+from openerp import tools
+from openerp.osv import fields,osv
+from openerp.tools.translate import _
+from openerp.tools.misc import get_iso_codes
NEW_LANG_KEY = '__new__'
diff --git a/openerp/addons/base/module/wizard/base_import_language.py b/openerp/addons/base/module/wizard/base_import_language.py
index 9c36c9d7c54..0af1279e909 100644
--- a/openerp/addons/base/module/wizard/base_import_language.py
+++ b/openerp/addons/base/module/wizard/base_import_language.py
@@ -19,10 +19,11 @@
#
##############################################################################
-import tools
import base64
from tempfile import TemporaryFile
-from osv import osv, fields
+
+from openerp import tools
+from openerp.osv import osv, fields
class base_language_import(osv.osv_memory):
""" Language Import """
diff --git a/openerp/addons/base/module/wizard/base_language_install.py b/openerp/addons/base/module/wizard/base_language_install.py
index fd25a84f196..4e33dbeb344 100644
--- a/openerp/addons/base/module/wizard/base_language_install.py
+++ b/openerp/addons/base/module/wizard/base_language_install.py
@@ -19,9 +19,9 @@
#
##############################################################################
-import tools
-from osv import osv, fields
-from tools.translate import _
+from openerp import tools
+from openerp.osv import osv, fields
+from openerp.tools.translate import _
class base_language_install(osv.osv_memory):
""" Install Language"""
diff --git a/openerp/addons/base/module/wizard/base_module_configuration.py b/openerp/addons/base/module/wizard/base_module_configuration.py
index f38023294f9..cbd4656baea 100644
--- a/openerp/addons/base/module/wizard/base_module_configuration.py
+++ b/openerp/addons/base/module/wizard/base_module_configuration.py
@@ -19,8 +19,8 @@
#
##############################################################################
-from osv import osv
-from tools.translate import _
+from openerp.osv import osv
+from openerp.tools.translate import _
class base_module_configuration(osv.osv_memory):
diff --git a/openerp/addons/base/module/wizard/base_module_import.py b/openerp/addons/base/module/wizard/base_module_import.py
index 8734a5e0032..67408b60669 100644
--- a/openerp/addons/base/module/wizard/base_module_import.py
+++ b/openerp/addons/base/module/wizard/base_module_import.py
@@ -19,14 +19,14 @@
#
##############################################################################
-import os
-import tools
-
-import zipfile
-from StringIO import StringIO
import base64
-from tools.translate import _
-from osv import osv, fields
+import os
+from StringIO import StringIO
+import zipfile
+
+from openerp import tools
+from openerp.osv import osv, fields
+from openerp.tools.translate import _
ADDONS_PATH = tools.config['addons_path'].split(",")[-1]
diff --git a/openerp/addons/base/module/wizard/base_module_scan.py b/openerp/addons/base/module/wizard/base_module_scan.py
new file mode 100644
index 00000000000..7ddd580d284
--- /dev/null
+++ b/openerp/addons/base/module/wizard/base_module_scan.py
@@ -0,0 +1,74 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+import os
+import glob
+import imp
+import zipfile
+
+from openerp import tools
+from openerp.osv import osv
+
+class base_module_scan(osv.osv_memory):
+ """ scan module """
+
+ _name = "base.module.scan"
+ _description = "scan module"
+
+ def watch_dir(self, cr, uid, ids, context):
+ mod_obj = self.pool.get('ir.module.module')
+ all_mods = mod_obj.read(cr, uid, mod_obj.search(cr, uid, []), ['name', 'state'])
+ known_modules = [x['name'] for x in all_mods]
+ ls_ad = glob.glob(os.path.join(tools.config['addons_path'], '*', '__terp__.py'))
+ modules = [module_name_re.match(name).group(1) for name in ls_ad]
+ for fname in os.listdir(tools.config['addons_path']):
+ if zipfile.is_zipfile(fname):
+ modules.append( fname.split('.')[0])
+ for module in modules:
+ if module in known_modules:
+ continue
+ terp = mod_obj.get_module_info(module)
+ if not terp.get('installable', True):
+ continue
+
+ # XXX check if this code is correct...
+ fm = imp.find_module(module)
+ try:
+ imp.load_module(module, *fm)
+ finally:
+ if fm[0]:
+ fm[0].close()
+
+ values = mod_obj.get_values_from_terp(terp)
+ mod_id = mod_obj.create(cr, uid, dict(name=module, state='uninstalled', **values))
+ dependencies = terp.get('depends', [])
+ for d in dependencies:
+ cr.execute('insert into ir_module_module_dependency (module_id,name) values (%s, %s)', (mod_id, d))
+ for module in known_modules:
+ terp = mod_obj.get_module_info(module)
+ if terp.get('installable', True):
+ for mod in all_mods:
+ if mod['name'] == module and mod['state'] == 'uninstallable':
+ mod_obj.write(cr, uid, [mod['id']], {'state': 'uninstalled'})
+ return {}
+
+base_module_scan()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/addons/base/module/wizard/base_module_update.py b/openerp/addons/base/module/wizard/base_module_update.py
index fc9b0749cb3..e2d8ce01d4a 100644
--- a/openerp/addons/base/module/wizard/base_module_update.py
+++ b/openerp/addons/base/module/wizard/base_module_update.py
@@ -18,7 +18,8 @@
# along with this program. If not, see .
#
##############################################################################
-from osv import osv, fields
+
+from openerp.osv import osv, fields
class base_module_update(osv.osv_memory):
""" Update Module """
@@ -54,4 +55,4 @@ class base_module_update(osv.osv_memory):
}
return res
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/addons/base/module/wizard/base_update_translations.py b/openerp/addons/base/module/wizard/base_update_translations.py
index abfbc445316..470557c3712 100644
--- a/openerp/addons/base/module/wizard/base_update_translations.py
+++ b/openerp/addons/base/module/wizard/base_update_translations.py
@@ -19,10 +19,11 @@
#
##############################################################################
-from osv import osv, fields
-import tools
import cStringIO
-from tools.translate import _
+
+from openerp import tools
+from openerp.osv import osv, fields
+from openerp.tools.translate import _
class base_update_translations(osv.osv_memory):
def _get_languages(self, cr, uid, context):
diff --git a/openerp/addons/base/report/preview_report.py b/openerp/addons/base/report/preview_report.py
index 32a0e07668b..137bebb72b7 100644
--- a/openerp/addons/base/report/preview_report.py
+++ b/openerp/addons/base/report/preview_report.py
@@ -19,7 +19,7 @@
#
##############################################################################
-from report import report_sxw
+from openerp.report import report_sxw
class rmlparser(report_sxw.rml_parse):
def set_context(self, objects, data, ids, report_type = None):
diff --git a/openerp/addons/base/res/__init__.py b/openerp/addons/base/res/__init__.py
index e8adecc1d1a..752bb03033a 100644
--- a/openerp/addons/base/res/__init__.py
+++ b/openerp/addons/base/res/__init__.py
@@ -19,8 +19,6 @@
#
##############################################################################
-import tools
-
import res_country
import res_lang
import res_partner
diff --git a/openerp/addons/base/res/ir_property.py b/openerp/addons/base/res/ir_property.py
index 4768ba1e0d0..07875e5efd0 100644
--- a/openerp/addons/base/res/ir_property.py
+++ b/openerp/addons/base/res/ir_property.py
@@ -19,10 +19,11 @@
#
##############################################################################
-from osv import osv,fields
-from tools.misc import attrgetter
import time
+from openerp.osv import osv,fields
+from openerp.tools.misc import attrgetter
+
# -------------------------------------------------------------------------
# Properties
# -------------------------------------------------------------------------
diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py
index 5dec91990b4..fa8516bece2 100644
--- a/openerp/addons/base/res/res_bank.py
+++ b/openerp/addons/base/res/res_bank.py
@@ -19,8 +19,8 @@
#
##############################################################################
-from osv import fields, osv
-from tools.translate import _
+from openerp.osv import fields, osv
+from openerp.tools.translate import _
class Bank(osv.osv):
_description='Bank'
diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py
index bb429a9e754..9e01e9a4f94 100644
--- a/openerp/addons/base/res/res_company.py
+++ b/openerp/addons/base/res/res_company.py
@@ -18,15 +18,15 @@
# along with this program. If not, see .
#
##############################################################################
+
import os
import openerp
-from openerp import SUPERUSER_ID
-from openerp.osv import osv, fields
-from openerp import tools
+from openerp import SUPERUSER_ID, tools
+from openerp.osv import fields, osv
+from openerp.tools.translate import _
+from openerp.tools.safe_eval import safe_eval as eval
from openerp.tools import image_resize_image
-from tools.translate import _
-from tools.safe_eval import safe_eval as eval
class multi_company_default(osv.osv):
"""
diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py
index 98c5ca7e6af..9513f48a27e 100644
--- a/openerp/addons/base/res/res_config.py
+++ b/openerp/addons/base/res/res_config.py
@@ -19,13 +19,12 @@
#
##############################################################################
import logging
-from operator import attrgetter, itemgetter
+from operator import attrgetter
-from osv import osv, fields
-from tools.translate import _
-import netsvc
-from tools import ustr
-import pooler
+from openerp import pooler
+from openerp.osv import osv, fields
+from openerp.tools import ustr
+from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
diff --git a/openerp/addons/base/res/res_country.py b/openerp/addons/base/res/res_country.py
index 98a3b769a11..a1b8ad29ac0 100644
--- a/openerp/addons/base/res/res_country.py
+++ b/openerp/addons/base/res/res_country.py
@@ -19,7 +19,7 @@
#
##############################################################################
-from osv import fields, osv
+from openerp.osv import fields, osv
def location_name_search(self, cr, user, name='', args=None, operator='ilike',
context=None, limit=100):
diff --git a/openerp/addons/base/res/res_currency.py b/openerp/addons/base/res/res_currency.py
index a95ac454057..9e5eec6cfed 100644
--- a/openerp/addons/base/res/res_currency.py
+++ b/openerp/addons/base/res/res_currency.py
@@ -18,14 +18,14 @@
# along with this program. If not, see .
#
##############################################################################
+
import re
import time
-import netsvc
-from osv import fields, osv
-import tools
-from tools import float_round, float_is_zero, float_compare
-from tools.translate import _
+from openerp import tools
+from openerp.osv import fields, osv
+from openerp.tools import float_round, float_is_zero, float_compare
+from openerp.tools.translate import _
CURRENCY_DISPLAY_PATTERN = re.compile(r'(\w+)\s*(?:\((.*)\))?')
diff --git a/openerp/addons/base/res/res_lang.py b/openerp/addons/base/res/res_lang.py
index 5f39a7cb703..01d501fe80f 100644
--- a/openerp/addons/base/res/res_lang.py
+++ b/openerp/addons/base/res/res_lang.py
@@ -20,14 +20,14 @@
##############################################################################
import locale
+from locale import localeconv
import logging
import re
-from osv import fields, osv
-from locale import localeconv
-import tools
-from tools.safe_eval import safe_eval as eval
-from tools.translate import _
+from openerp import tools
+from openerp.osv import fields, osv
+from openerp.tools.safe_eval import safe_eval as eval
+from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py
index 4018a981512..d236d867795 100644
--- a/openerp/addons/base/res/res_partner.py
+++ b/openerp/addons/base/res/res_partner.py
@@ -20,17 +20,16 @@
##############################################################################
import datetime
-import math
-import openerp
-from osv import osv, fields
-from openerp import SUPERUSER_ID
-import re
-import tools
-from tools.translate import _
-import logging
-import pooler
-import pytz
from lxml import etree
+import math
+import pytz
+import re
+
+import openerp
+from openerp import SUPERUSER_ID
+from openerp import pooler, tools
+from openerp.osv import osv, fields
+from openerp.tools.translate import _
class format_address(object):
def fields_view_get_address(self, cr, uid, arch, context={}):
diff --git a/openerp/addons/base/res/res_request.py b/openerp/addons/base/res/res_request.py
index 25db0e43b2e..e91ebacbe2a 100644
--- a/openerp/addons/base/res/res_request.py
+++ b/openerp/addons/base/res/res_request.py
@@ -19,9 +19,10 @@
#
##############################################################################
-from osv import osv, fields
import time
+from openerp.osv import osv, fields
+
def _links_get(self, cr, uid, context=None):
obj = self.pool.get('res.request.link')
ids = obj.search(cr, uid, [], context=context)
diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py
index ca70724f263..0ee7c9b3d6b 100644
--- a/openerp/addons/base/res/res_users.py
+++ b/openerp/addons/base/res/res_users.py
@@ -19,23 +19,18 @@
# along with this program. If not, see .
#
##############################################################################
-
-
from functools import partial
import logging
from lxml import etree
from lxml.builder import E
-import netsvc
-from openerp import SUPERUSER_ID
+
import openerp
+from openerp import SUPERUSER_ID
+from openerp import pooler, tools
import openerp.exceptions
-from osv import fields,osv
-from osv.orm import browse_record
-import pooler
-import random
-from service import security
-import tools
-from tools.translate import _
+from openerp.osv import fields,osv
+from openerp.osv.orm import browse_record
+from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
diff --git a/openerp/addons/base/tests/test_menu.py b/openerp/addons/base/tests/test_menu.py
index 364cbc7b6f7..a4b5315dc82 100644
--- a/openerp/addons/base/tests/test_menu.py
+++ b/openerp/addons/base/tests/test_menu.py
@@ -1,5 +1,3 @@
-import unittest2
-
import openerp.tests.common as common
class test_menu(common.TransactionCase):
diff --git a/openerp/addons/base_quality_interrogation.py b/openerp/addons/base_quality_interrogation.py
index e89d2206e1f..1795db7e13f 100755
--- a/openerp/addons/base_quality_interrogation.py
+++ b/openerp/addons/base_quality_interrogation.py
@@ -20,14 +20,11 @@
##############################################################################
import xmlrpclib
-import ConfigParser
import optparse
import sys
-import thread
import threading
import os
import time
-import pickle
import base64
import socket
import string
diff --git a/openerp/tests/test_fields.py b/openerp/tests/test_fields.py
index efa7c67126d..774bbf41fb2 100644
--- a/openerp/tests/test_fields.py
+++ b/openerp/tests/test_fields.py
@@ -1,11 +1,8 @@
#
# test cases for fields access, etc.
#
-
-import unittest2
import common
-import openerp
from openerp.osv import fields
class TestRelatedField(common.TransactionCase):
diff --git a/openerp/tests/test_ir_filters.py b/openerp/tests/test_ir_filters.py
index c6582db1cb2..daf58a380e1 100644
--- a/openerp/tests/test_ir_filters.py
+++ b/openerp/tests/test_ir_filters.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
import functools
-import openerp
from openerp import exceptions
from . import common
@@ -261,4 +260,4 @@ class TestGlobalDefaults(common.TransactionCase):
self.assertItemsEqual(map(noid, filters), [
dict(name='a', user_id=False, is_default=False, domain='[]', context='{}'),
dict(name='b', user_id=False, is_default=True, domain='[]', context=context_value),
- ])
\ No newline at end of file
+ ])
diff --git a/openerp/tests/test_orm.py b/openerp/tests/test_orm.py
index 7d64df119b0..d2ec96846df 100644
--- a/openerp/tests/test_orm.py
+++ b/openerp/tests/test_orm.py
@@ -1,4 +1,3 @@
-from openerp import exceptions
from openerp.tools import mute_logger
import common
diff --git a/openerp/tests/test_uninstall.py b/openerp/tests/test_uninstall.py
index 1f74b660ce0..2425249afa4 100644
--- a/openerp/tests/test_uninstall.py
+++ b/openerp/tests/test_uninstall.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
# This assumes an existing but uninitialized database.
-import psycopg2
import unittest2
import openerp
diff --git a/openerp/tests/test_view_validation.py b/openerp/tests/test_view_validation.py
index 9c19e7b41d2..362bdc5d851 100644
--- a/openerp/tests/test_view_validation.py
+++ b/openerp/tests/test_view_validation.py
@@ -1,11 +1,9 @@
# This test can be run stand-alone with something like:
# > PYTHONPATH=. python2 openerp/tests/test_view_validation.py
-
from lxml import etree
from StringIO import StringIO
import unittest2
-import openerp
from openerp.tools.view_validation import *
invalid_form = etree.parse(StringIO('''\
diff --git a/openerp/tests/test_xmlrpc.py b/openerp/tests/test_xmlrpc.py
index 37655e72718..1198c0fa2f2 100644
--- a/openerp/tests/test_xmlrpc.py
+++ b/openerp/tests/test_xmlrpc.py
@@ -10,7 +10,6 @@ import time
import unittest2
import xmlrpclib
-import openerp
import common
DB = None
diff --git a/openerp/tools/convert.py b/openerp/tools/convert.py
index 26561fc01f7..a64aabf2df6 100644
--- a/openerp/tools/convert.py
+++ b/openerp/tools/convert.py
@@ -46,7 +46,6 @@ except:
from datetime import datetime, timedelta
from lxml import etree
import misc
-import openerp.loglevels as loglevels
import openerp.pooler as pooler
from config import config
from translate import _
diff --git a/openerp/tools/image.py b/openerp/tools/image.py
index 7f160994ba9..3dfe429f8c1 100644
--- a/openerp/tools/image.py
+++ b/openerp/tools/image.py
@@ -23,7 +23,7 @@ import io
import StringIO
from PIL import Image
-from PIL import ImageEnhance, ImageOps
+from PIL import ImageOps
from random import random
# ----------------------------------------
diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py
index 372b048c4d9..47a2ae4faac 100644
--- a/openerp/tools/misc.py
+++ b/openerp/tools/misc.py
@@ -42,6 +42,7 @@ from itertools import islice, izip
from lxml import etree
from which import which
from threading import local
+
try:
from html2text import html2text
except ImportError:
diff --git a/openerp/tools/safe_eval.py b/openerp/tools/safe_eval.py
index 1c3870004a7..b99de385af3 100644
--- a/openerp/tools/safe_eval.py
+++ b/openerp/tools/safe_eval.py
@@ -34,7 +34,6 @@ condition/math builtins.
from opcode import HAVE_ARGUMENT, opmap, opname
from types import CodeType
import logging
-import os
__all__ = ['test_expr', 'safe_eval', 'const_eval']
diff --git a/openerp/workflow/instance.py b/openerp/workflow/instance.py
index 298548288f5..eed3e984f42 100644
--- a/openerp/workflow/instance.py
+++ b/openerp/workflow/instance.py
@@ -18,13 +18,8 @@
# along with this program. If not, see .
#
##############################################################################
-
-import wkf_logs
import workitem
-import openerp.netsvc as netsvc
-import openerp.pooler as pooler
-
def create(cr, ident, wkf_id):
(uid,res_type,res_id) = ident
cr.execute('insert into wkf_instance (res_type,res_id,uid,wkf_id) values (%s,%s,%s,%s) RETURNING id', (res_type,res_id,uid,wkf_id))
diff --git a/openerp/workflow/wkf_expr.py b/openerp/workflow/wkf_expr.py
index b4d6c5b9ccc..8e93a99f038 100644
--- a/openerp/workflow/wkf_expr.py
+++ b/openerp/workflow/wkf_expr.py
@@ -19,9 +19,6 @@
#
##############################################################################
-import sys
-import openerp.netsvc as netsvc
-import openerp.osv as base
import openerp.pooler as pooler
from openerp.tools.safe_eval import safe_eval as eval
diff --git a/openerp/workflow/wkf_logs.py b/openerp/workflow/wkf_logs.py
index 560aae87170..9463fe61814 100644
--- a/openerp/workflow/wkf_logs.py
+++ b/openerp/workflow/wkf_logs.py
@@ -22,7 +22,6 @@
#
# May be uncommented to logs workflows modifications
#
-import openerp.netsvc as netsvc
def log(cr,ident,act_id,info=''):
return
diff --git a/openerp/workflow/wkf_service.py b/openerp/workflow/wkf_service.py
index a8d829aa546..2b3ce435e60 100644
--- a/openerp/workflow/wkf_service.py
+++ b/openerp/workflow/wkf_service.py
@@ -18,13 +18,8 @@
# along with this program. If not, see .
#
##############################################################################
-
-import wkf_logs
-import workitem
import instance
-
import openerp.netsvc as netsvc
-import openerp.pooler as pooler
class workflow_service(netsvc.Service):
"""
diff --git a/openerp/workflow/workitem.py b/openerp/workflow/workitem.py
index 60c03ea9da5..0f94dfa788d 100644
--- a/openerp/workflow/workitem.py
+++ b/openerp/workflow/workitem.py
@@ -24,7 +24,6 @@
# cr.execute('delete from wkf_triggers where model=%s and res_id=%s', (res_type,res_id))
#
-import openerp.netsvc as netsvc
import instance
import wkf_expr