diff options
| author | Rucha (Open ERP) <rpa@tinyerp.com> | 2012-07-03 11:53:51 +0530 |
|---|---|---|
| committer | Rucha (Open ERP) <rpa@tinyerp.com> | 2012-07-03 11:53:51 +0530 |
| commit | 9e6f918bbee6f6a6ebfc7eba8cd310d2f08b638f (patch) | |
| tree | a4446727c5afbda668b896ccd075e332e0000f5e /addons/project_issue | |
| parent | 2558625ebab05a78d73d1b1d9596bd0d26173e44 (diff) | |
| parent | 38d7e1298ed7bb93f1a1ff9391192a9238c7cc1f (diff) | |
[MERGE]: Merge with latest trunk-addons
bzr revid: rpa@tinyerp.com-20120703062351-tazpsjb7a3usajvf
Diffstat (limited to 'addons/project_issue')
| -rw-r--r-- | addons/project_issue/project_issue.py | 93 | ||||
| -rw-r--r-- | addons/project_issue/project_issue_demo.xml | 5 | ||||
| -rw-r--r-- | addons/project_issue/project_issue_view.xml | 43 |
3 files changed, 84 insertions, 57 deletions
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 009f2b8ecf7..fea7a64d2b7 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -467,87 +467,68 @@ class project_issue(base_stage, osv.osv): # ------------------------------------------------------- def message_new(self, cr, uid, msg, custom_values=None, context=None): - """Automatically called when new email message arrives""" - if context is None: - context = {} - subject = msg.get('subject') or _('No Title') - body = msg.get('body_text') - msg_from = msg.get('from') - priority = msg.get('priority') - vals = { - 'name': subject, - 'email_from': msg_from, + """ Overrides mail_thread message_new that is called by the mailgateway + through message_process. + This override updates the document according to the email. + """ + if custom_values is None: custom_values = {} + if context is None: context = {} + context['state_to'] = 'draft' + + custom_values.update({ + 'name': msg.get('subject') or _("No Subject"), + 'description': msg.get('body_text'), + 'email_from': msg.get('from'), 'email_cc': msg.get('cc'), - 'description': body, 'user_id': False, - } - if priority: - vals['priority'] = priority - vals.update(self.message_partner_by_email(cr, uid, msg_from)) - context.update({'state_to' : 'draft'}) - - if custom_values and isinstance(custom_values, dict): - vals.update(custom_values) + }) + if msg.get('priority'): + custom_values['priority'] = msg.get('priority') + custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from'), context=context)) - res_id = self.create(cr, uid, vals, context) - self.message_append_dict(cr, uid, [res_id], msg, context=context) + res_id = super(project_issue, self).message_new(cr, uid, msg, custom_values=custom_values, context=context) self.convert_to_bug(cr, uid, [res_id], context=context) return res_id - def message_update(self, cr, uid, ids, msg, vals=None, default_act='pending', context=None): - if vals is None: - vals = {} - + def message_update(self, cr, uid, ids, msg, update_vals=None, context=None): + """ Overrides mail_thread message_update that is called by the mailgateway + through message_process. + This method updates the document according to the email. + """ if isinstance(ids, (str, int, long)): ids = [ids] + if update_vals is None: update_vals = {} - vals.update({ - 'description': msg['body_text'] - }) - if msg.get('priority', False): - vals['priority'] = msg.get('priority') - + # Update doc values according to the message + update_vals['description'] = msg.get('body_text', '') + if msg.get('priority'): + update_vals['priority'] = msg.get('priority') + # Parse 'body_text' to find values to update maps = { 'cost': 'planned_cost', 'revenue': 'planned_revenue', - 'probability': 'probability' + 'probability': 'probability', } - - # Reassign the 'open' state to the case if this one is in pending or done - for record in self.browse(cr, uid, ids, context=context): - if record.state in ('pending', 'done'): - self.case_set(cr, uid, ids, 'open', {}, context=context) - - vls = { } - for line in msg['body_text'].split('\n'): + for line in msg.get('body_text', '').split('\n'): line = line.strip() res = tools.misc.command_re.match(line) if res and maps.get(res.group(1).lower(), False): key = maps.get(res.group(1).lower()) - vls[key] = res.group(2).lower() + update_vals[key] = res.group(2).lower() - vals.update(vls) - res = self.write(cr, uid, ids, vals) - self.message_append_dict(cr, uid, ids, msg, context=context) - return res + return super(project_issue, self).message_update(cr, uid, ids, update_vals=update_vals, context=context) # ------------------------------------------------------- # 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): - 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_issue, 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 stage_set_send_note(self, cr, uid, ids, stage_id, context=None): """ Override of the (void) default notification method. """ diff --git a/addons/project_issue/project_issue_demo.xml b/addons/project_issue/project_issue_demo.xml index 7242975fdb3..8f582dbe015 100644 --- a/addons/project_issue/project_issue_demo.xml +++ b/addons/project_issue/project_issue_demo.xml @@ -227,5 +227,10 @@ <field name="stage_id" ref="project.project_tt_specification"/> </record> + <!-- Call Function to set some issues as Unread --> + <function model="project.issue" name="message_mark_as_unread" + eval="[ ref('crm_case_improvereportsinhrms0'), ref('crm_case_createnewobject0')], {}" + /> + </data> </openerp> diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 87a5a4f1f40..cdcea2cbb62 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -4,6 +4,43 @@ <menuitem id="menu_project_confi" name="Issues" parent="base.menu_definitions" sequence="2"/> + <!-- Project issue Read/Unread actions --> + <record id="actions_server_project_issue_unread" model="ir.actions.server"> + <field name="name">Mark unread</field> + <field name="condition">True</field> + <field name="type">ir.actions.server</field> + <field name="model_id" ref="model_project_issue"/> + <field name="state">code</field> + <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field> + </record> + <record id="action_project_issue_unread" model="ir.values"> + <field name="name">action_project_issue_unread</field> + <field name="action_id" ref="actions_server_project_issue_unread"/> + <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_issue_unread'))" /> + <field name="key">action</field> + <field name="model_id" ref="model_project_issue" /> + <field name="model">project.issue</field> + <field name="key2">client_action_multi</field> + </record> + + <record id="actions_server_project_issue_read" model="ir.actions.server"> + <field name="name">Mark read</field> + <field name="condition">True</field> + <field name="type">ir.actions.server</field> + <field name="model_id" ref="model_project_issue"/> + <field name="state">code</field> + <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field> + </record> + <record id="action_project_issue_read" model="ir.values"> + <field name="name">action_project_issue_read</field> + <field name="action_id" ref="actions_server_project_issue_read"/> + <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_issue_read'))" /> + <field name="key">action</field> + <field name="model_id" ref="model_project_issue" /> + <field name="model">project.issue</field> + <field name="key2">client_action_multi</field> + </record> + <record model="ir.ui.view" id="project_issue_version_search_view"> <field name="name">Issue Version</field> <field name="model">project.issue.version</field> @@ -159,9 +196,13 @@ <group> <field name="name" string="Issue" filter_domain="['|', '|',('partner_id','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/> <separator orientation="vertical"/> + <filter icon="terp-mail-message-new" + string="Inbox" help="Unread messages" + name="needaction_pending" + domain="[('needaction_pending','=',True)]"/> + <separator orientation="vertical"/> <filter string="New" icon="terp-document-new" domain="[('state','=','draft')]" help="New Issues"/> <filter string="To Do" domain="[('state','=','open')]" help="To Do Issues" icon="terp-check"/> - <filter string="Pending" domain="[('state','=','pending')]" help="Pending Issues" icon="terp-gtk-media-pause"/> <filter string="Unassigned Issues" domain="[('user_id','=',False)]" help="Unassigned Issues" icon="terp-personal-" /> <separator orientation="vertical"/> <field name="user_id"/> |
