From 8f0e5e9a8165e11cc1e9e441fb73b17bfe16dd0e Mon Sep 17 00:00:00 2001
From: "nch@tinyerp.com" <>
Date: Fri, 14 May 2010 14:04:02 +0530
Subject: [PATCH 1/4] [IMP,REF]:user can change view type(simple/extended) from
user preferences also.Refactored the code from interface configuration wizard
bzr revid: nch@tinyerp.com-20100514083402-6q0i4lz0s6ueqk60
---
bin/addons/base/base_update.xml | 1 +
bin/addons/base/res/res_user.py | 50 +++++++++++++++++++++++++++------
2 files changed, 42 insertions(+), 9 deletions(-)
diff --git a/bin/addons/base/base_update.xml b/bin/addons/base/base_update.xml
index b3503211424..f89614c7440 100644
--- a/bin/addons/base/base_update.xml
+++ b/bin/addons/base/base_update.xml
@@ -87,6 +87,7 @@
+
diff --git a/bin/addons/base/res/res_user.py b/bin/addons/base/res/res_user.py
index 1542b58935c..72be48dcf0a 100644
--- a/bin/addons/base/res/res_user.py
+++ b/bin/addons/base/res/res_user.py
@@ -166,6 +166,39 @@ class users(osv.osv):
body=self.get_welcome_mail_body(
cr, uid, context=context) % user)
+ def update_user_group(self, cr, uid, ids, name, value, arg, context):
+ """ update User groups according to the interface.
+ @param name: Name of the field
+ @param arg: User defined argument
+ @param value: new value returned
+ @return: True/False
+ """
+ if not value: return False
+ if not isinstance(ids, list):
+ ids = [ids]
+ group_obj = self.pool.get('res.groups')
+ extended_group = group_obj.search(cr,uid,[('name','ilike','Extended')])[0]
+ user_groups = self.read(cr, uid, ids, ['groups_id'])[0]['groups_id']
+ if value == 'simple':
+ cr.execute(""" delete from res_groups_users_rel where gid=%s and uid=ANY(%s)""",(extended_group, ids))
+ else:
+ self.write(cr, uid, ids,{'groups_id':[(6, 0, list(set([extended_group] + user_groups)))]})
+ return True
+
+ def _set_interface(self, cr, uid, ids, name, args, context=None):
+ """ Sets interface for the User.
+ @param field_name: Name of the field
+ @param arg: User defined argument
+ @return: Dictionary of values
+ """
+ group_obj = self.pool.get('res.groups')
+ extended_group = group_obj.search(cr,uid,[('name','ilike','Extended')])[0]
+ user_groups = self.read(cr, uid, ids, ['groups_id'])[0]['groups_id']
+ if extended_group not in user_groups:
+ return {ids[0]:'simple'}
+ else:
+ return {ids[0]:'extended'}
+
_columns = {
'name': fields.char('Name', size=64, required=True, select=True,
help="The new user's real name, used for searching"
@@ -194,7 +227,11 @@ class users(osv.osv):
'context_tz': fields.selection(_tz_get, 'Timezone', size=64,
help="The user's timezone, used to perform timezone conversions "
"between the server and the client."),
+ 'view': fields.function(_set_interface, method=True, type='selection', fnct_inv=update_user_group,
+ selection=[('simple','Simplified'),('extended','Extended')],
+ string='Interface', help="Choose between the simplified interface and the extended one"),
}
+
def read(self,cr, uid, ids, fields=None, context=None, load='_classic_read'):
def override_password(o):
if 'password' in o and ( 'id' not in o or o['id'] != uid ):
@@ -446,15 +483,10 @@ class res_config_view(osv.osv_memory):
}
def execute(self, cr, uid, ids, context=None):
- res=self.read(cr,uid,ids)[0]
- users_obj = self.pool.get('res.users')
- group_obj=self.pool.get('res.groups')
- if 'view' in res and res['view'] and res['view']=='extended':
- group_ids=group_obj.search(cr,uid,[('name','ilike','Extended')])
- if group_ids and len(group_ids):
- users_obj.write(cr, uid, [uid],{
- 'groups_id':[(4,group_ids[0])]
- }, context=context)
+ res = self.read(cr, uid, ids)[0]
+ self.pool.get('res.users').write(cr, uid, [uid],
+ {'view':res['view']}, context=context)
+
res_config_view()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
From 75681e3efaac363cd387112dce0fffafc09788a7 Mon Sep 17 00:00:00 2001
From: rga
Date: Fri, 14 May 2010 15:27:41 +0530
Subject: [PATCH 2/4] [IMP] Change res.partner.address 'function'
field(many2one to char)
bzr revid: rga@rga-desktop-20100514095741-a6e96zbag79w5iyh
---
bin/addons/base/res/partner/partner.py | 29 ++++------------
bin/addons/base/res/partner/partner_data.xml | 13 --------
bin/addons/base/res/partner/partner_view.xml | 35 --------------------
3 files changed, 7 insertions(+), 70 deletions(-)
diff --git a/bin/addons/base/res/partner/partner.py b/bin/addons/base/res/partner/partner.py
index 3e890e6efed..e5bb6a4f1cb 100644
--- a/bin/addons/base/res/partner/partner.py
+++ b/bin/addons/base/res/partner/partner.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
@@ -27,21 +27,6 @@ import ir
import pooler
from tools.translate import _
-class res_partner_function(osv.osv):
- _name = 'res.partner.function'
- _description = 'Function of the contact'
- _columns = {
- 'name': fields.char('Function Name', size=64, required=True),
- 'code': fields.char('Code', size=8, required=True),
- 'ref':fields.char('Notes', size=32,),
- }
- _order = 'name'
- _sql_constraints = [
- ('code_uniq', 'unique (code)', 'The Code of the Partner Function must be unique !')
- ]
-res_partner_function()
-
-
class res_payterm(osv.osv):
_description = 'Payment term'
_name = 'res.payterm'
@@ -149,12 +134,12 @@ class res_partner(osv.osv):
'active': fields.boolean('Active'),
'customer': fields.boolean('Customer', help="Check this box if the partner is a customer."),
'supplier': fields.boolean('Supplier', help="Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."),
- 'city': fields.related('address', 'city', type='char', string='City'),
- 'phone': fields.related('address', 'phone', type='char', string='Phone'),
+ 'city': fields.related('address', 'city', type='char', string='City'),
+ 'phone': fields.related('address', 'phone', type='char', string='Phone'),
'country': fields.related('address', 'country_id', type='many2one', relation='res.country', string='Country'),
'employee': fields.boolean('Employee', help="Check this box if the partner is an Employee."),
'email': fields.related('address', 'email', type='char', size=240, string='E-mail'),
- 'company_id': fields.many2one('res.company', 'Company', select=1),
+ 'company_id': fields.many2one('res.company', 'Company', select=1),
}
def _default_category(self, cr, uid, context={}):
@@ -291,7 +276,7 @@ class res_partner_address(osv.osv):
_columns = {
'partner_id': fields.many2one('res.partner', 'Partner', 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."),
- 'function': fields.many2one('res.partner.function', 'Function'),
+ 'function': fields.char('Function', size=64),
'title': fields.selection(_contact_title_get, 'Title', size=32),
'name': fields.char('Contact Name', size=64, select=1),
'street': fields.char('Street', size=128),
@@ -469,7 +454,7 @@ class res_partner_category(osv.osv):
_columns = {
'partner_ids': fields.many2many('res.partner', 'res_partner_category_rel', 'category_id', 'partner_id', 'Partners'),
}
-
+
res_partner_category()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/bin/addons/base/res/partner/partner_data.xml b/bin/addons/base/res/partner/partner_data.xml
index 407a541b17a..642c4cc46bf 100644
--- a/bin/addons/base/res/partner/partner_data.xml
+++ b/bin/addons/base/res/partner/partner_data.xml
@@ -33,19 +33,6 @@
M.
-
- Director
- CEO
-
-
- Chief Technical Officer
- CTO
-
-
- Salesman
- SAL
-
-
Bank account
diff --git a/bin/addons/base/res/partner/partner_view.xml b/bin/addons/base/res/partner/partner_view.xml
index 840ee132481..55a98112506 100644
--- a/bin/addons/base/res/partner/partner_view.xml
+++ b/bin/addons/base/res/partner/partner_view.xml
@@ -9,41 +9,6 @@
-
-
- res.partner.function.form
- res.partner.function
- form
-
-
-
-
-
- res.partner.function.tree
- res.partner.function
- tree
-
-
-
-
-
-
-
-
- Contact Functions
- ir.actions.act_window
- res.partner.function
- form
-
-
-