diff options
| author | Olivier Dony <odo@openerp.com> | 2012-07-03 18:01:55 +0200 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2012-07-03 18:01:55 +0200 |
| commit | f66753362b5d83ba0bef5cb7da2be8d257e5fbb3 (patch) | |
| tree | 74a1a9244693ea1ce0ffb7b90f8e1c754e5af1dd /addons/project | |
| parent | 234118ddb76f6d72a773fd5dda086522aba3ae6a (diff) | |
| parent | 790f64cca643d6ef2a259c56552a3b17895f3b87 (diff) | |
[MERGE] Implementation of mail.alias by Jigar Amin
bzr revid: odo@openerp.com-20120703160155-gw8po01vmm0q30ow
Diffstat (limited to 'addons/project')
| -rw-r--r-- | addons/project/project.py | 52 | ||||
| -rw-r--r-- | addons/project/project_demo.xml | 5 | ||||
| -rw-r--r-- | addons/project/project_view.xml | 7 |
3 files changed, 58 insertions, 6 deletions
diff --git a/addons/project/project.py b/addons/project/project.py index ab02cc870bb..aa32fbb16e2 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -55,7 +55,7 @@ class project_task_type(osv.osv): class project(osv.osv): _name = "project.project" _description = "Project" - _inherits = {'account.analytic.account': "analytic_account_id"} + _inherits = {'account.analytic.account': "analytic_account_id","mail.alias":"alias_id"} _inherit = ['ir.needaction_mixin', 'mail.thread'] def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False): @@ -164,6 +164,8 @@ class project(osv.osv): for task in self.pool.get('project.task').browse(cr, uid, task_ids, context): res[task.project_id.id] += 1 return res + def _get_alias_model(self, cr, uid, context=None): + return [('model_project_task', "Tasks")] def _get_followers(self, cr, uid, ids, name, arg, context=None): ''' @@ -215,12 +217,13 @@ class project(osv.osv): 'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'task_count': fields.function(_task_count, type='integer', string="Open Tasks"), 'color': fields.integer('Color Index'), + 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True), + 'alias_model': fields.selection(_get_alias_model, "Alias Model",select="1", required=True), 'privacy_visibility': fields.selection([('public','Public'), ('followers','Followers Only')], 'Privacy / Visibility'), 'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'), ('cancelled', 'Cancelled'),('pending','Pending'),('close','Closed')], 'Status', required=True,), 'followers': fields.function(_get_followers, method=True, fnct_search=_search_followers, type='many2many', relation='res.users', string='Followers'), } - def dummy(self, cr, uid, ids, context): return True @@ -236,6 +239,7 @@ class project(osv.osv): 'priority': 1, 'sequence': 10, 'type_ids': _get_type_common, + 'alias_model':'model_project_task', } # TODO: Why not using a SQL contraints ? @@ -250,6 +254,26 @@ class project(osv.osv): (_check_dates, 'Error! project start-date must be lower then project end-date.', ['date_start', 'date']) ] + def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): + res = super(project,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu) + if view_type == 'form' or view_type == 'kanban': + domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "mail.catchall.domain", context=context) + if not domain: + doc = etree.XML(res['arch']) + alias_node = doc.xpath("//field[@name='alias_id']")[0] + parent = alias_node.getparent() + parent.remove(alias_node) + if view_type == "form": + model_node = doc.xpath("//field[@name='alias_model']")[0] + parent = model_node.getparent() + parent.remove(model_node) + else: + model_node = doc.xpath("//field[@name='alias_id']")[0] + parent = model_node.getparent() + parent.remove(model_node) + res['arch'] = etree.tostring(doc) + return res + def set_template(self, cr, uid, ids, context=None): res = self.setActive(cr, uid, ids, value=False, context=context) return res @@ -497,9 +521,17 @@ def Project(): return self.pool.get('res.users').read(cr, uid, sub_ids, context=context) def create(self, cr, uid, vals, context=None): - obj_id = super(project, self).create(cr, uid, vals, context=context) - self.create_send_note(cr, uid, [obj_id], context=context) - return obj_id + 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) + 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) + self.create_send_note(cr, uid, [res], context=context) + return res def create_send_note(self, cr, uid, ids, context=None): return self.message_append_note(cr, uid, ids, body=_("Project has been <b>created</b>."), context=context) @@ -520,6 +552,16 @@ def Project(): message = _("Project has been <b>closed</b>.") return self.message_append_note(cr, uid, ids, body=message, context=context) + def write(self, cr, uid, ids, vals, context=None): + model_pool = self.pool.get('ir.model.data') + alias_pool = self.pool.get('mail.alias') + # if alias_model have been changed then change alias_model_id of alias also. + if vals.get('alias_model'): + model, res_id = model_pool.get_object_reference( cr, uid, "project", vals.get('alias_model','model_project_task')) + alias_id = self.browse(cr, uid, ids[0], context).alias_id + alias_pool.write(cr, uid, [alias_id.id], {'alias_model_id': res_id}, context=context) + return super(project, self).write(cr, uid, ids, vals, context=context) + class task(base_stage, osv.osv): _name = "project.task" diff --git a/addons/project/project_demo.xml b/addons/project/project_demo.xml index 07951280dc7..889cc285af3 100644 --- a/addons/project/project_demo.xml +++ b/addons/project/project_demo.xml @@ -66,6 +66,7 @@ ref('base.user_vad')])]" name="members"/> <field name="user_id" ref="base.user_al"/> <field name="name">Integrate a Sale and Warehouse Management.</field> + <field name="alias_model">model_project_task</field> </record> <!-- Tasks --> @@ -290,6 +291,7 @@ <field name="parent_id" ref="all_projects_account"/> <field name="user_id" ref="base.user_root"/> <field eval="[(6, 0, [ref('project_tt_specification'),ref('project_tt_development'),ref('project_tt_testing'),ref('project_tt_merge')])]" name="type_ids"/> + <field name="alias_model">model_project_task</field> </record> <record id="project_project_21" model="project.project"> <field name="priority">10</field> @@ -298,6 +300,7 @@ <field name="user_id" ref="base.user_root"/> <field eval="[(6, 0, [ref('project_tt_specification'),ref('project_tt_development')])]" name="type_ids"/> <field eval="[(6, 0, [ref('base.user_root'),ref('base.user_demo')])]" name="members"/> + <field name="alias_model">model_project_task</field> </record> <record id="project_project_22" model="project.project"> <field name="priority">20</field> @@ -306,6 +309,7 @@ <field name="user_id" ref="base.user_root"/> <field eval="[(6, 0, [ref('project_tt_specification'), ref('project_tt_development')])]" name="type_ids"/> <field eval="[(6, 0, [ref('base.user_root'),ref('base.user_demo')])]" name="members"/> + <field name="alias_model">model_project_task</field> </record> <record id="project_project_23" model="project.project"> <field name="priority">30</field> @@ -313,6 +317,7 @@ <field name="name">Install, data import, configuration</field> <field eval="[(6, 0, [ref('project_tt_development')])]" name="type_ids"/> <field eval="[(6, 0, [ref('base.user_root'),ref('base.user_demo')])]" name="members"/> + <field name="alias_model">model_project_task</field> </record> <!-- Tasks --> diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 6662e46c79f..8024e4e8c63 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -55,6 +55,8 @@ <field name="analytic_account_id" invisible="1" required="0"/> <field name="parent_id" invisible="1" string="Parent" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/> <field name="privacy_visibility"/> + <field name="alias_id" required="0" domain="[('alias_model_id','in',('project.task','project.issue'))]"/> + <field name="alias_model"/> </group> <group> <table> @@ -192,6 +194,7 @@ <field name="date"/> <field name="color"/> <field name="task_count"/> + <field name="alias_id"/> <templates> <t t-name="kanban-box"> <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_project oe_kanban_auto_height oe_kanban_global_click"> @@ -216,7 +219,9 @@ <div>Deadline</div> <div><field name="date"/></div> </div> - + <div t-if="record.alias_id.raw_value"> + <a t-attf-href="mailto:#{record.alias_id.raw_value}"><field name="alias_id"/></a> + </div> <div class="oe_kanban_project_fields oe_kanban_project_progress"> <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> |
