diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml
index f8eaf6eac10..f02d302df83 100644
--- a/bin/addons/base/ir/ir.xml
+++ b/bin/addons/base/ir/ir.xml
@@ -1047,8 +1047,8 @@
tree
-
+
diff --git a/bin/addons/base/ir/ir_actions.py b/bin/addons/base/ir/ir_actions.py
index 18dc7f514d4..c8ff67c18d9 100644
--- a/bin/addons/base/ir/ir_actions.py
+++ b/bin/addons/base/ir/ir_actions.py
@@ -36,6 +36,7 @@ from report.report_sxw import report_sxw, report_rml
class actions(osv.osv):
_name = 'ir.actions.actions'
_table = 'ir_actions'
+ _order = 'name'
_columns = {
'name': fields.char('Action Name', required=True, size=64),
'type': fields.char('Action Type', required=True, size=32,readonly=True),
@@ -98,6 +99,7 @@ class report_xml(osv.osv):
_name = 'ir.actions.report.xml'
_table = 'ir_act_report_xml'
_sequence = 'ir_actions_id_seq'
+ _order = 'name'
_columns = {
'name': fields.char('Name', size=64, required=True, translate=True),
'model': fields.char('Object', size=64, required=True),
@@ -144,6 +146,7 @@ class act_window(osv.osv):
_name = 'ir.actions.act_window'
_table = 'ir_act_window'
_sequence = 'ir_actions_id_seq'
+ _order = 'name'
def _check_model(self, cr, uid, ids, context=None):
for action in self.browse(cr, uid, ids, context):
@@ -324,6 +327,7 @@ class act_wizard(osv.osv):
_inherit = 'ir.actions.actions'
_table = 'ir_act_wizard'
_sequence = 'ir_actions_id_seq'
+ _order = 'name'
_columns = {
'name': fields.char('Wizard Info', size=64, required=True, translate=True),
'type': fields.char('Action Type', size=32, required=True),
@@ -342,6 +346,7 @@ class act_url(osv.osv):
_name = 'ir.actions.url'
_table = 'ir_act_url'
_sequence = 'ir_actions_id_seq'
+ _order = 'name'
_columns = {
'name': fields.char('Action Name', size=64, translate=True),
'type': fields.char('Action Type', size=32, required=True),
@@ -436,7 +441,7 @@ class actions_server(osv.osv):
_name = 'ir.actions.server'
_table = 'ir_act_server'
_sequence = 'ir_actions_id_seq'
- _order = 'sequence'
+ _order = 'sequence,name'
_columns = {
'name': fields.char('Action Name', required=True, size=64, help="Easy to Refer action by name e.g. One Sales Order -> Many Invoices", translate=True),
'condition' : fields.char('Condition', size=256, required=True, help="Condition that is to be tested before action is executed, e.g. object.list_price > object.cost_price"),
@@ -794,7 +799,7 @@ class ir_actions_todo(osv.osv):
'sequence': 10,
'restart': 'onskip',
}
- _order="sequence,id"
+ _order="sequence,name,id"
def action_launch(self, cr, uid, ids, context=None):
""" Launch Action of Wizard"""
diff --git a/bin/addons/base/ir/ir_cron.py b/bin/addons/base/ir/ir_cron.py
index 391833d2fbe..520429d93ad 100644
--- a/bin/addons/base/ir/ir_cron.py
+++ b/bin/addons/base/ir/ir_cron.py
@@ -42,6 +42,7 @@ _intervalTypes = {
class ir_cron(osv.osv, netsvc.Agent):
_name = "ir.cron"
+ _order = 'name'
_columns = {
'name': fields.char('Name', size=60, required=True),
'user_id': fields.many2one('res.users', 'User', required=True),
diff --git a/bin/addons/base/ir/ir_exports.py b/bin/addons/base/ir/ir_exports.py
index 39477f51fbe..e05d2cc76bc 100644
--- a/bin/addons/base/ir/ir_exports.py
+++ b/bin/addons/base/ir/ir_exports.py
@@ -24,6 +24,7 @@ from osv import fields,osv
class ir_exports(osv.osv):
_name = "ir.exports"
+ _order = 'name'
_columns = {
'name': fields.char('Export Name', size=128),
'resource': fields.char('Resource', size=128, select=True),
@@ -35,6 +36,7 @@ ir_exports()
class ir_exports_line(osv.osv):
_name = 'ir.exports.line'
+ _order = 'sequence,name'
_columns = {
'name': fields.char('Field Name', size=64),
'export_id': fields.many2one('ir.exports', 'Export', select=True, ondelete='cascade'),
diff --git a/bin/addons/base/ir/ir_model.py b/bin/addons/base/ir/ir_model.py
index 80a24a45720..95b003c8a35 100644
--- a/bin/addons/base/ir/ir_model.py
+++ b/bin/addons/base/ir/ir_model.py
@@ -43,7 +43,7 @@ def _get_fields_type(self, cr, uid, context=None):
class ir_model(osv.osv):
_name = 'ir.model'
_description = "Objects"
- _rec_name = 'name'
+ _order = 'model'
def _is_osv_memory(self, cr, uid, ids, field_name, arg, context=None):
models = self.browse(cr, uid, ids, context=context)
@@ -184,7 +184,7 @@ class ir_model_fields(osv.osv):
'field_description': lambda *a: '',
'selectable': lambda *a: 1,
}
- _order = "id"
+ _order = "name"
def _size_gt_zero_msg(self, cr, user, ids, context=None):
return _('Size of the field can never be less than 1 !')
@@ -376,6 +376,7 @@ ir_model_access()
class ir_model_data(osv.osv):
_name = 'ir.model.data'
__logger = logging.getLogger('addons.base.'+_name)
+ _order = 'module,model,name'
_columns = {
'name': fields.char('XML Identifier', required=True, size=128, select=1),
'model': fields.char('Object', required=True, size=64, select=1),
diff --git a/bin/addons/base/ir/ir_rule.py b/bin/addons/base/ir/ir_rule.py
index f75528f6d47..2fc4c145002 100644
--- a/bin/addons/base/ir/ir_rule.py
+++ b/bin/addons/base/ir/ir_rule.py
@@ -28,6 +28,7 @@ from tools.safe_eval import safe_eval as eval
class ir_rule(osv.osv):
_name = 'ir.rule'
+ _order = 'name'
_MODES = ['read', 'write', 'create', 'unlink']
def _domain_force_get(self, cr, uid, ids, field_name, arg, context={}):
diff --git a/bin/addons/base/ir/ir_sequence.py b/bin/addons/base/ir/ir_sequence.py
index 1d9d5a54782..c4ea65caf6d 100644
--- a/bin/addons/base/ir/ir_sequence.py
+++ b/bin/addons/base/ir/ir_sequence.py
@@ -25,6 +25,7 @@ import pooler
class ir_sequence_type(osv.osv):
_name = 'ir.sequence.type'
+ _order = 'name'
_columns = {
'name': fields.char('Name',size=64, required=True),
'code': fields.char('Code',size=32, required=True),
@@ -37,6 +38,7 @@ def _code_get(self, cr, uid, context={}):
class ir_sequence(osv.osv):
_name = 'ir.sequence'
+ _order = 'name'
_columns = {
'name': fields.char('Name',size=64, required=True),
'code': fields.selection(_code_get, 'Code',size=64, required=True),
diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py
index 40d4be92b6a..895f0051719 100644
--- a/bin/addons/base/ir/ir_ui_view.py
+++ b/bin/addons/base/ir/ir_ui_view.py
@@ -81,7 +81,7 @@ class view(osv.osv):
'arch': '\n\n\t\n',
'priority': 16
}
- _order = "priority"
+ _order = "priority,name"
_constraints = [
(_check_xml, 'Invalid XML for View Architecture!', ['arch'])
]
@@ -221,7 +221,7 @@ class view_sc(osv.osv):
ids = self.search(cr, uid, [('user_id','=',user_id),('resource','=',model)], context=context)
return self.read(cr, uid, ids, ['res_id','name'], context=context)
- _order = 'sequence'
+ _order = 'sequence,name'
_defaults = {
'resource': lambda *a: 'ir.ui.menu',
'user_id': lambda obj, cr, uid, context: uid,
diff --git a/bin/addons/base/ir/workflow/workflow.py b/bin/addons/base/ir/workflow/workflow.py
index dda5dd46276..e5bb3f25d67 100644
--- a/bin/addons/base/ir/workflow/workflow.py
+++ b/bin/addons/base/ir/workflow/workflow.py
@@ -26,6 +26,7 @@ import netsvc
class workflow(osv.osv):
_name = "workflow"
_table = "wkf"
+ _order = "name"
# _log_access = False
_columns = {
'name': fields.char('Name', size=64, required=True),
@@ -115,6 +116,7 @@ workflow()
class wkf_activity(osv.osv):
_name = "workflow.activity"
_table = "wkf_activity"
+ _order = "name"
# _log_access = False
_columns = {
'name': fields.char('Name', size=64, required=True),
diff --git a/bin/addons/base/module/report/ir_module_reference_print.py b/bin/addons/base/module/report/ir_module_reference_print.py
index 7364499af7e..36978e21643 100644
--- a/bin/addons/base/module/report/ir_module_reference_print.py
+++ b/bin/addons/base/module/report/ir_module_reference_print.py
@@ -73,6 +73,7 @@ class ir_module_reference_print(report_sxw.rml_parse):
def _fields_find(self, obj):
modobj = self.pool.get(obj)
res = modobj.fields_get(self.cr, self.uid).items()
+ res.sort()
return res
report_sxw.report_sxw('report.ir.module.reference', 'ir.module.module',
diff --git a/bin/addons/base/res/bank.py b/bin/addons/base/res/bank.py
index 77151a9e801..f94777e4942 100644
--- a/bin/addons/base/res/bank.py
+++ b/bin/addons/base/res/bank.py
@@ -25,6 +25,7 @@ from osv import fields, osv
class Bank(osv.osv):
_description='Bank'
_name = 'res.bank'
+ _order = 'name'
_columns = {
'name': fields.char('Name', size=128, required=True),
'code': fields.char('Code', size=64),
diff --git a/bin/addons/base/res/partner/crm.py b/bin/addons/base/res/partner/crm.py
index 6d123ea7984..22ae27bcaae 100644
--- a/bin/addons/base/res/partner/crm.py
+++ b/bin/addons/base/res/partner/crm.py
@@ -29,6 +29,7 @@ from osv import fields,osv
class res_partner_canal(osv.osv):
_name = "res.partner.canal"
_description = "Channels"
+ _order = 'name'
_columns = {
'name': fields.char('Channel Name',size=64, required=True),
'active': fields.boolean('Active'),
diff --git a/bin/addons/base/res/partner/partner.py b/bin/addons/base/res/partner/partner.py
index 04d5547973b..c77fba10027 100644
--- a/bin/addons/base/res/partner/partner.py
+++ b/bin/addons/base/res/partner/partner.py
@@ -29,6 +29,7 @@ from tools.translate import _
class res_payterm(osv.osv):
_description = 'Payment term'
_name = 'res.payterm'
+ _order = 'name'
_columns = {
'name': fields.char('Payment Term (short name)', size=64),
}
@@ -254,6 +255,7 @@ res_partner()
class res_partner_address(osv.osv):
_description ='Partner Addresses'
_name = 'res.partner.address'
+ _order = 'name'
_columns = {
'partner_id': fields.many2one('res.partner', 'Partner Name', ondelete='set null', select=True, help="Keep empty for a private address, not related to partner."),
'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."),
@@ -327,6 +329,7 @@ res_partner_address()
class res_partner_bank_type(osv.osv):
_description='Bank Account Type'
_name = 'res.partner.bank.type'
+ _order = 'name'
_columns = {
'name': fields.char('Name', size=64, required=True, translate=True),
'code': fields.char('Code', size=64, required=True),
@@ -337,6 +340,7 @@ res_partner_bank_type()
class res_partner_bank_type_fields(osv.osv):
_description='Bank type fields'
_name = 'res.partner.bank.type.field'
+ _order = 'name'
_columns = {
'name': fields.char('Field Name', size=64, required=True, translate=True),
'bank_type_id': fields.many2one('res.partner.bank.type', 'Bank Type', required=True, ondelete='cascade'),
@@ -352,7 +356,7 @@ class res_partner_bank(osv.osv):
_name = "res.partner.bank"
_rec_name = "acc_number"
_description = __doc__
- _order = 'sequence'
+ _order = 'sequence,name'
def _bank_type_get(self, cr, uid, context=None):
bank_type_obj = self.pool.get('res.partner.bank.type')
diff --git a/bin/addons/base/res/res_company.py b/bin/addons/base/res/res_company.py
index 7361d1871d3..c2d8d2c8324 100644
--- a/bin/addons/base/res/res_company.py
+++ b/bin/addons/base/res/res_company.py
@@ -72,6 +72,7 @@ multi_company_default()
class res_company(osv.osv):
_name = "res.company"
_description = 'Companies'
+ _order = 'name'
_columns = {
'name': fields.char('Company Name', size=64, required=True),
'parent_id': fields.many2one('res.company', 'Parent Company', select=True),
diff --git a/bin/addons/base/res/res_user.py b/bin/addons/base/res/res_user.py
index 72ec45e3e76..4cd80b7db5f 100644
--- a/bin/addons/base/res/res_user.py
+++ b/bin/addons/base/res/res_user.py
@@ -97,6 +97,7 @@ class users(osv.osv):
__admin_ids = {}
_uid_cache = {}
_name = "res.users"
+ _order = 'name'
WELCOME_MAIL_SUBJECT = u"Welcome to OpenERP"
WELCOME_MAIL_BODY = u"An OpenERP account has been created for you, "\