[IMP] add user wizard on res.partner
authorRaphael Collet <rco@openerp.com>
Wed, 27 Apr 2011 07:53:06 +0000 (09:53 +0200)
committerRaphael Collet <rco@openerp.com>
Wed, 27 Apr 2011 07:53:06 +0000 (09:53 +0200)
bzr revid: rco@openerp.com-20110427075306-ns4tpzooswvuz0ma

addons/portal/wizard.py
addons/portal/wizard_view.xml

index 3c5a598..7d91cf5 100644 (file)
@@ -77,20 +77,31 @@ class user_wizard(osv.osv_memory):
     ]
 
     def default_get(self, cr, uid, fields, context=None):
-        """ define the default name, login, email, address_id from the active
-            res.partner.address record """
+        """ determine default name, email, address_id and lang from the active
+            record """
         # get existing defaults
         defs = super(user_wizard, self).default_get(cr, uid, fields, context)
         
-        # override name, login, email, address_id, and lang
-        if context and ('active_id' in context):
+        # determine a res.partner.address depending on current context
+        address = None
+        if context.get('active_model') == 'res.partner.address':
             address_obj = self.pool.get('res.partner.address')
-            address = address_obj.browse(cr, uid, context['active_id'], context)
+            address = address_obj.browse(cr, uid, context.get('active_id'), context)
+        
+        elif context.get('active_model') == 'res.partner':
+            partner_obj = self.pool.get('res.partner')
+            partner = partner_obj.browse(cr, uid, context.get('active_id'), context)
+            if partner and partner.address:
+                # take default address if present, or any address otherwise
+                addresses = filter(lambda a: a.type == 'default', partner.address)
+                address = addresses[0] if addresses else partner.address[0]
+        
+        # override name, email, address_id, and lang
+        if address:
             defs['name'] = address.name
             defs['email'] = address.email
             defs['address_id'] = address.id
-            if address.partner_id and address.partner_id.lang:
-                defs['lang'] = address.partner_id.lang
+            defs['lang'] = address.partner_id and address.partner_id.lang
         
         return defs
 
index f77d55f..cefd311 100644 (file)
@@ -1,8 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
     <data>
-        <!-- User Wizard on res.partner.address -->
-        <act_window id="portal_user_wizard_action"
+        <!-- wizard action on res.partner -->
+        <act_window id="partner_user_wizard_action"
+            name="Create Portal User"
+            src_model="res.partner"
+            res_model="res.portal.user_wizard"
+            view_type="form" view_mode="form"
+            key2="client_action_multi" target="new"/>
+
+        <!-- wizard action on res.partner.address -->
+        <act_window id="address_user_wizard_action"
             name="Create Portal User"
             src_model="res.partner.address"
             res_model="res.portal.user_wizard"
@@ -10,7 +18,7 @@
             key2="client_action_multi" target="new"/>
 
         <!-- user_wizard view -->
-        <record id="portal_user_wizard_view" model="ir.ui.view">
+        <record id="user_wizard_view" model="ir.ui.view">
             <field name="name">Create Portal User</field>
             <field name="model">res.portal.user_wizard</field>
             <field name="type">form</field>