[MERGE] mail.alias: updated views and simplified models
authorOlivier Dony <odo@openerp.com>
Thu, 5 Jul 2012 13:56:26 +0000 (15:56 +0200)
committerOlivier Dony <odo@openerp.com>
Thu, 5 Jul 2012 13:56:26 +0000 (15:56 +0200)
bzr revid: odo@openerp.com-20120705135626-xxqch4uabq418ekf

12 files changed:
1  2 
addons/crm/crm_view.xml
addons/hr_recruitment/hr_recruitment.py
addons/hr_recruitment/hr_recruitment_view.xml
addons/mail/mail_group.py
addons/mail/mail_group_view.xml
addons/mail/res_config.py
addons/mail/res_users.py
addons/mail/res_users_view.xml
addons/project/project.py
addons/project/project_view.xml
addons/project_issue/project_issue.py
addons/project_issue/project_issue_view.xml

                      <notebook colspan="4">
                          <page string="Sales Team">
                              <group col="4">
 -                                <field name="reply_to"/>
 -                                <field name="allow_unlink"/>
 -                                <field name="change_responsible"/>
 -                                <field name="member_ids"/>
 +                                <group>
 +                                    <field name="reply_to"/>
 +                                </group>
 +                                <group>
 +                                    <field name="change_responsible"/>
 +                                    <field name="allow_unlink"/>
 +                                </group>
                              </group>
+                             <group attrs="{'invisible': [('alias_domain', '=', False)]}">
+                                 <div name="alias_box">
+                                     <label for="alias_name"/>
 -                                    <field name="alias_name" class="oe_inline" required="0"/>@<field name="alias_domain" class="oe_inline"/>
++                                    <field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline"/>
+                                 </div>
+                             </group>
 +                            <separator string="Team Members"/>
 +                            <field name="member_ids"/>
                          </page>
                          <page string="Stages">
                              <separator string="Select Stages for this Sales Team"/>
                  </div>
              </field>
              <field name="company_id" version="7.0" position="after">
-                 <field name="alias_id" required="0" domain="[('alias_model_id','=','hr.applicant')]"/>
 -                <group colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}">
 -                    <div name="alias_box">
 -                        <label for="alias_name"/>
 -                        <field name="alias_name" required="0" class="oe_inline"/>@
 -                        <field name="alias_domain" class="oe_inline"/>
 -                    </div>
 -                </group>
++                <div colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}">
++                    <field name="alias_name" nolabel="1" class="oe_inline"/>@<field name="alias_domain" nolabel="1" class="oe_inline"/>
++                </div>
              </field>
          </field>
      </record>
Simple merge
              <field name="priority" eval="10"/>
              <field name="arch" type="xml">
                  <form string="Group Form" version="7.0">
 -                    <div style="padding: 8px">
 -                        <div class="oe_right">
 -                            <field name="photo" widget='image' on_change="onchange_photo(photo)"/>
 -                        </div>
 -                        <div class="oe_title">
 -                            <div class="oe_edit_only">
 -                                <label for="name"/> 
 -                            </div>
 -                            <h1><field name="name"/></h1>
 -                            <div class="oe_edit_only">
 -                                <label for="responsible_id"/> 
 -                            </div>
 -                            <field name="responsible_id" class="oe_inline"/>
 -                            <div class="oe_edit_only">
 -                                <label for="public"/> 
 -                                <field name="public" class="oe_inline"/>
 -                            </div>
 -                            <group colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}">
 -                                <div name="alias_box">
 -                                    <label for="alias_name"/>
 -                                    <field name="alias_name" required="0" class="oe_inline"/>@<field name="alias_domain" class="oe_inline"/>
 +                    <sheet class="openerp_mail_group_sheet">
 +                        <group colspan="4" col="8">
 +                            <group colspan="1" col="2">
 +                                <field name="photo" widget='image' nolabel="1" on_change="onchange_photo(photo)"/>
 +                            </group>
 +                            <group colspan="7" col="6">
 +                                <div class="oe_edit_only">
 +                                    <label for="name"/> 
 +                                </div> 
-                                 <h2><field name="name" colspan="4"/></h2>
++                                <div>
++                                    <h2><field name="name" colspan="4"/></h2>
++                                    <div name="alias_box" colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}" class="oe_edit_only">
++                                        <field name="alias_name" nolabel="1" class="oe_inline"/>@<field name="alias_domain" nolabel="1" class="oe_inline"/>
++                                    </div>
+                                 </div>
 +                                <newline/>
 +                                <group colspan="4" col="4">
 +                                    <field name="description" colspan="4" nolabel="1"/>
-                                     <div class="oe_edit_only">
-                                         <field name="alias_id" required="0" domain="[('alias_model_id','=','mail.group')]" />
-                                     </div>
 +                                </group>
 +                                <group colspan="2" col="2" class="oe_edit_only">
 +                                    <field name="responsible_id" colspan="2"/>
 +                                    <field name="public" colspan="2"/>
 +                                </group>
                              </group>
 -                            <field name="description" colspan="4" nolabel="1"/>
 -                        </div>
 -                    </div>
 -                    <footer>
 -                        <field name="message_ids" colspan="4" widget="ThreadView" options='{"thread_level": 1}'/>
 +                        </group>
 +                    </sheet>
 +                    <footer class="openerp_mail_group_footer">
 +                        <field name="message_ids" widget="mail_thread"
 +                                options='{"thread_level": 1}'/>
                      </footer>
                  </form>
              </field>
@@@ -25,7 -25,7 +25,7 @@@ class project_configuration(osv.Transie
      _inherit = 'base.config.settings'
  
      _columns = {
--        'alias_domain' : fields.char('Catch-all Mail Alias Domain', size=None,
++        'alias_domain' : fields.char('Alias Domain', size=None,
                                       help="If you have setup a catch-all mail domain redirected to "
                                            "the OpenERP server, enter the domain name here."),
      }
@@@ -40,7 -40,9 +40,9 @@@ class res_users(osv.osv)
                          ('none', 'Never')
                          ], 'Receive Feeds by Email', required=True,
                          help="Choose in which case you want to receive an email when you receive new feeds."),
-         'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True),
 -        'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="restrict", required=True, 
++        'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="restrict", required=True, 
+                                     help="This Unique Mail Box Alias of the User allows to manage the Seamless email communication between Mail Box and OpenERP," 
+                                          "This Alias MailBox manage the Users email communication."),
      }
      
      _defaults = {
                      </div>
                  </xpath>
                  <field name="active" position="after">
-                     <field name="alias_id" readonly="1" required="0"/>
+                     <group colspan="2" attrs="{'invisible': [('alias_domain', '=', False)]}">
 -                        <div name="alias_box">
 -                            <label for="alias_name"/>
 -                            <field name="alias_name" readonly="1" required="0" class="oe_inline"/>@<field name="alias_domain" class="oe_inline"/>
 -                        </div>
++                        <field name="alias_id" readonly="1"/><field name="alias_domain" invisible="1"/>
+                     </group>
                  </field>
              </data>
              </field>
@@@ -504,25 -488,33 +488,26 @@@ def Project()
      # ------------------------------------------------
      # OpenChatter methods and notifications
      # ------------------------------------------------
 -    
 -    def get_needaction_user_ids(self, cr, uid, ids, context=None):
 -        result = dict.fromkeys(ids)
 -        for obj in self.browse(cr, uid, ids, context=context):
 -            result[obj.id] = []
 -            if obj.state == 'draft' and obj.user_id:
 -                result[obj.id] = [obj.user_id.id]
 -        return result
  
      def message_get_subscribers(self, cr, uid, ids, context=None):
 -        sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
 +        """ Override to add responsible user. """
 +        user_ids = super(project, self).message_get_subscribers(cr, uid, ids, context=context)
          for obj in self.browse(cr, uid, ids, context=context):
 -            if obj.user_id:
 -                sub_ids.append(obj.user_id.id)
 -        return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
 +            if obj.user_id and not obj.user_id.id in user_ids:
 +                user_ids.append(obj.user_id.id)
 +        return user_ids
  
      def create(self, cr, uid, vals, context=None):
-         model_pool = self.pool.get('ir.model.data')
          alias_pool = self.pool.get('mail.alias')
-         model, res_id = model_pool.get_object_reference( cr, uid, "project", vals.get('alias_model','model_project_task'))
-         vals.update({'alias_name':"project",
-                      'alias_model_id': res_id})
-         alias_pool.create_unique_alias(cr, uid, vals, context=context)
+         if not vals.get('alias_id'):
+             name = vals.get('alias_name') or vals['name']
+             alias_id = alias_pool.create_unique_alias(cr, uid, 
+                     {'alias_name': "project_"+name, 
+                     'alias_model_id': self._name}, context=context)
+             alias = alias_pool.read(cr, uid, alias_id, ['alias_name'],context)
+             vals.update({'alias_id': alias_id, 'alias_name': alias['alias_name']})
          res = super( project, self).create(cr, uid, vals, context)
-         record = self.read(cr, uid, res, context)
-         alias_pool.write(cr, uid, [record['alias_id']], {'alias_defaults':{'project_id': record['id']}}, context)
+         alias_pool.write(cr, uid, [vals['alias_id']], {'alias_defaults':{'project_id': res}}, context)
          self.create_send_note(cr, uid, [res], context=context)
          return res
  
                                      <field name="resource_calendar_id"/>
                                  </group>
                                  <group string="Miscellaneous" name="misc">
 -                                    <field name="company_id" select="1" groups="base.group_multi_company" widget="selection" required="1"/>
 +                                    <field name="company_id" groups="base.group_multi_company" widget="selection" required="1"/>
                                      <field name="priority"/>
                                      <field name="active" attrs="{'invisible':[('state','in',['open', 'pending', 'template'])]}"/>
 -                                    <field name="currency_id" select="1" groups="base.group_multi_company" required="1"/>
 +                                    <field name="currency_id" groups="base.group_multi_company" required="1"/>
                                  </group>
+                                 <group string="Mailbox Alias" colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}">
+                                    <div>
+                                         <label for="alias_name"/>
+                                         <field name="alias_name" required="0" class="oe_inline"/>@
+                                         <field name="alias_domain" class="oe_inline"/>
+                                     </div>
+                                     <field name="alias_model" invisible="1"/>
+                                 </group>
                              </group>
                          </page>
                          <page string="Tasks Stages">
                                          <div>Progress</div>
                                          <div><t t-esc="Math.round(record.effective_hours.raw_value)"/> / <t t-esc="Math.round(record.planned_hours.raw_value)"/> <field name="company_uom_id"/></div>
                                      </div>
+                                     <div name="alias_box" t-if="record.alias_domain.raw_value" class="oe_kanban_ellipsis">
 -                                        Mailbox Alias :
 -                                        <a t-attf-href="mailto:#{record.alias_id.raw_value}"><field name="alias_id"/></a>
++                                        <a t-attf-href="mailto:#{record.alias_id.value}"><field name="alias_id"/></a>
+                                     </div>
                                      <div class="oe_kanban_project_avatars">
                                          <t t-foreach="record.members.raw_value" t-as="member">
                                              <img t-att-src="kanban_image('res.users', 'avatar', member)" t-att-data-member_id="member"/>
Simple merge