result[obj.id] = obj.image != False
return result
+ def _has_user_ids(self, cr, uid, ids, name, args, context=None):
+ result = {}
+ for obj in self.browse(cr, uid, ids, context=context):
+ result[obj.id] = bool(obj.user_ids)
+ return result
+
_order = "name"
_columns = {
'name': fields.char('Name', size=128, required=True, select=True),
'company_id': fields.many2one('res.company', 'Company', select=1),
'color': fields.integer('Color Index'),
'user_ids': fields.one2many('res.users', 'partner_id', 'Users'),
+ 'has_user_ids': fields.function(_has_user_ids, type='boolean', string='Is a user'),
'contact_address': fields.function(_address_display, type='char', string='Complete Address'),
}
# _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])]
def write(self, cr, uid, ids, vals, context=None):
+ if context is None:
+ context={}
# Update parent and siblings or children records
if isinstance(ids, (int, long)):
ids = [ids]
+ user_ids = []
for partner in self.browse(cr, uid, ids, context=context):
+ user_ids += [user.id for user in partner.user_ids]
update_ids = []
if partner.is_company:
domain_children = [('parent_id', 'child_of', partner.id), ('use_parent_address', '=', True)]
domain_siblings = [('parent_id', '=', partner.parent_id.id), ('use_parent_address', '=', True)]
update_ids = [partner.parent_id.id] + self.search(cr, uid, domain_siblings, context=context)
self.update_address(cr, uid, update_ids, vals, context)
+ if vals.get('email') and user_ids and not context.get('change_email_and_login'):
+ context.update({'change_email_and_login': True})
+ self.pool.get('res.users').write(cr, uid, user_ids, {'login': vals.get('email')}, context=context)
return super(res_partner,self).write(cr, uid, ids, vals, context=context)
def create(self, cr, uid, vals, context=None):
<group>
<field name="category_id" widget="many2many_tags" placeholder="Tags..."/>
<field name="function" placeholder="e.g. Sales Director"/>
- <field name="email" required="context.get('force_email', False)"/>
+ <field name="has_user_ids" invisible="1"/>
+ <field name="email" widget="email" required="context.get('force_email', False)" attrs="{'required': [('has_user_ids','!=', False)]}"/>
<field name="phone"/>
<field name="mobile"/>
</group>
<field name="phone" placeholder="e.g. +32.81.81.37.00"/>
<field name="mobile"/>
<field name="fax"/>
- <field name="email" widget="email"/>
+ <field name="has_user_ids" invisible="1"/>
+ <field name="email" widget="email" attrs="{'required': [('has_user_ids','!=', False)]}"/>
<field name="title" domain="[('domain', '=', 'contact')]"
options='{"no_open": True}' attrs="{'invisible': [('is_company','=', True)]}" />
</group>
<field name="view_id" ref="view_partner_tree"/>
<field name="act_window_id" ref="action_partner_form"/>
</record>
- <menuitem id="menu_partner_form" parent="base.menu_sales" action="action_partner_form" sequence="1"/>
+ <menuitem id="menu_partner_form" parent="base.menu_sales" action="action_partner_form" sequence="2"/>
<record id="action_partner_customer_form" model="ir.actions.act_window">
<field name="name">Customers</field>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
- <label for="login" class="oe_edit_only"/>
+ <label for="login" class="oe_edit_only" string="Email (= login)"/>
<h2><field name="login"/></h2>
<label for="company_id" class="oe_edit_only" groups="base.group_multi_company"/>
<field name="company_id" context="{'user_preference': 0}" groups="base.group_multi_company"/>
<field name="groups_id"/>
</group>
</page>
- <page string="Contact">
- <group>
- <field name="phone" placeholder="e.g. +32.81.81.37.00"/>
- <field name="mobile"/>
- <field name="fax"/>
- <field name="email" widget="email"/>
- </group>
- </page>
<page string="Preferences">
<group>
<group name="preferences">
<field name="image" widget='image' class="oe_right oe_avatar" options='{"preview_image": "image_small"}'/>
<h1>
<field name="name" readonly="1" class="oe_inline"/>
- (<field name="login" readonly="1" class="oe_inline"/>)
</h1>
<button name="preference_change_password" type="object" string="Change password" class="oe_link"/>
<group name="preferences" col="4">