diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 146417a7abb..9fd81712b92 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -859,11 +859,6 @@ class crm_lead(base_stage, osv.osv): # OpenChatter methods and notifications # ---------------------------------------- - def message_get_monitored_follower_fields(self, cr, uid, ids, context=None): - """ Add 'user_id' to the monitored fields """ - res = super(crm_lead, self).message_get_monitored_follower_fields(cr, uid, ids, context=context) - return res + ['user_id'] - def stage_set_send_note(self, cr, uid, ids, stage_id, context=None): """ Override of the (void) default notification method. """ stage_name = self.pool.get('crm.case.stage').name_get(cr, uid, [stage_id], context=context)[0][1] diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py index e888f9b5c3b..47ca1246240 100644 --- a/addons/hr_holidays/hr_holidays.py +++ b/addons/hr_holidays/hr_holidays.py @@ -364,12 +364,6 @@ class hr_holidays(osv.osv): dom = ['|'] + dom + [ ('state','=','validate1') ] return dom - def message_get_monitored_follower_fields(self, cr, uid, ids, context=None): - """ Add 'user_id' and 'manager' to the monitored fields """ - res = super(hr_holidays, self).message_get_monitored_follower_fields(cr, uid, ids, context=context) - # TODO: add manager - return res + ['user_id'] - def create_notificate(self, cr, uid, ids, context=None): for obj in self.browse(cr, uid, ids, context=context): self.message_append_note(cr, uid, ids, _('System notification'), diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 0ace2574d65..3d0b704b36d 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -461,11 +461,6 @@ class hr_applicant(base_stage, osv.Model): # OpenChatter methods and notifications # ------------------------------------------------------- - def message_get_monitored_follower_fields(self, cr, uid, ids, context=None): - """ Add 'user_id' to the monitored fields """ - res = super(hr_applicant, self).message_get_monitored_follower_fields(cr, uid, ids, context=context) - return res + ['user_id'] - def stage_set_send_note(self, cr, uid, ids, stage_id, context=None): """ Override of the (void) default notification method. """ if not stage_id: return True diff --git a/addons/mail/__init__.py b/addons/mail/__init__.py index 49ee9e18995..cba9cfe1fe7 100644 --- a/addons/mail/__init__.py +++ b/addons/mail/__init__.py @@ -25,7 +25,6 @@ import mail_mail import mail_followers import mail_thread import mail_group -import ir_needaction import res_partner import res_users import report diff --git a/addons/mail/mail_followers.py b/addons/mail/mail_followers.py index 24ab4a56b4d..0073ee81e41 100644 --- a/addons/mail/mail_followers.py +++ b/addons/mail/mail_followers.py @@ -24,7 +24,7 @@ from osv import fields class mail_followers(osv.Model): """ mail_followers holds the data related to the follow mechanism inside - OpenERP. Users can choose to follow documents (records) of any kind that + OpenERP. Partners can choose to follow documents (records) of any kind that inherits from mail.thread. Following documents allow to receive notifications for new messages. A subscription is characterized by: @@ -32,28 +32,26 @@ class mail_followers(osv.Model): :param: res_id: ID of resource (may be 0 for every objects) """ _name = 'mail.followers' - _rec_name = 'id' + _rec_name = 'partner_id' _log_access = False - _order = 'res_model asc' - _description = 'Mail Document Followers' + _description = 'Document Followers' _columns = { 'res_model': fields.char('Related Document Model', size=128, required=True, select=1, help='Model of the followed resource'), 'res_id': fields.integer('Related Document ID', select=1, help='Id of the followed resource'), - 'partner_id': fields.many2one('res.partner', string='Related User', + 'partner_id': fields.many2one('res.partner', string='Related Partner', ondelete='cascade', required=True, select=1), } class mail_notification(osv.Model): - """ mail_notification is a relational table modeling messages pushed to users. + """ mail_notification is a relational table modeling messages pushed to partners. """ _name = 'mail.notification' - _rec_name = 'id' + _rec_name = 'partner_id' _log_access = False - _order = 'message_id desc' - _description = 'Mail notification' + _description = 'Notifications' _columns = { 'partner_id': fields.many2one('res.partner', string='Contact', ondelete='cascade', required=True, select=1), @@ -103,9 +101,9 @@ class mail_notification(osv.Model): if email_to not in towrite['email_to']: towrite['email_to'] = towrite['email_to'] + ', ' + email_to + if towrite.get('state', False): if towrite.get('subject', False): towrite['subject'] = msg.name_get(cr, uid, [msg.id], context=context)[0][1] - if towrite.get('state', False): towrite['message_id'] = msg.id self.pool.get('mail.mail').create(cr, uid, towrite, context=context) return True diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index 6db6308d040..7de74db27c3 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -67,7 +67,7 @@ class mail_group(osv.Model): 'image': fields.binary("Photo", help="This field holds the image used as photo for the "\ "user. The image is base64 encoded, and PIL-supported. "\ - "It is limited to a 12024x1024 px image."), + "It is limited to a 1024x1024 px image."), 'image_medium': fields.function(_get_image, fnct_inv=_set_image, string="Medium-sized photo", type="binary", multi="_get_image", store = { @@ -165,17 +165,3 @@ class mail_group(osv.Model): self._subscribe_user_with_group_m2m_command(cr, uid, ids, vals.get('group_ids'), context=context) return super(mail_group, self).write(cr, uid, ids, vals, context=context) - def action_group_join(self, cr, uid, ids, context=None): - return self.message_subscribe(cr, uid, ids, context=context) - - def action_group_leave(self, cr, uid, ids, context=None): - return self.message_unsubscribe(cr, uid, ids, context=context) - - # ---------------------------------------- - # OpenChatter methods and notifications - # ---------------------------------------- - - def message_get_monitored_follower_fields(self, cr, uid, ids, context=None): - """ Add 'responsible_id' to the monitored fields """ - res = super(mail_group, self).message_get_monitored_follower_fields(cr, uid, ids, context=context) - return res + ['responsible_id'] diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index 1dac0ab9408..b1d7971e2ac 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -31,8 +31,8 @@

diff --git a/addons/mail/mail_mail.py b/addons/mail/mail_mail.py index 1112bf8d76a..4599209c305 100644 --- a/addons/mail/mail_mail.py +++ b/addons/mail/mail_mail.py @@ -22,6 +22,7 @@ class mail_mail(osv.Model): _columns = { 'message_id': fields.many2one('mail.message', 'Message', required=True, ondelete='cascade'), 'mail_server_id': fields.many2one('ir.mail_server', 'Outgoing mail server', readonly=1), + 'subject': fields.char('Subject', size=128), 'state': fields.selection([ ('outgoing', 'Outgoing'), ('sent', 'Sent'), diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 689bbc2f27f..a86eaec2896 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -194,27 +194,6 @@ class mail_thread(osv.Model): self.message_subscribe(cr, uid, [thread_id], [uid], context=context) return thread_id - # FP Note: not sure we need this? - #def write(self, cr, uid, ids, vals, context=None): - # """ Override of write to subscribe : - # - the writer - # - followers given by the monitored fields - # """ - # if isinstance(ids, (int, long)): - # ids = [ids] - # for id in ids: - # # copy original vals because we are going to modify it - # specific_vals = dict(vals) - # # we modify followers: do not subscribe the uid - # if specific_vals.get('message_follower_ids'): - # followers_command = self.message_get_automatic_followers(cr, uid, id, specific_vals, add_uid=False, context=context) - # specific_vals['message_follower_ids'] += followers_command - # else: - # followers_command = self.message_get_automatic_followers(cr, uid, id, specific_vals, context=context) - # specific_vals['message_follower_ids'] = followers_command - # write_res = super(mail_thread, self).write(cr, uid, ids, specific_vals, context=context) - # return True - def unlink(self, cr, uid, ids, context=None): """Override unlink, to automatically delete messages that are linked with res_model and res_id, not through @@ -227,51 +206,6 @@ class mail_thread(osv.Model): msg_obj.unlink(cr, uid, msg_to_del_ids, context=context) return super(mail_thread, self).unlink(cr, uid, ids, context=context) - def message_get_automatic_followers(self, cr, uid, id, record_vals, add_uid=True, fetch_missing=False, context=None): - """ Return the command for the many2many follower_ids field to manage - followers. Behavior : - - get the monitored fields (ex: ['user_id', 'responsible_id']); those - fields should be relationships to res.users (#TODO: res.partner) - - if this field is in the record_vals: it means it has been modified - thus add its value to the followers - - if this fields is not in record_vals, but fetch_missing paramter - is set to True: fetch the value in the record (use: at creation - for default values, not present in record_vals) - - if add_uid: add the current user (for example: writer is follower) - - generate the command and return it - This method has to be used on 1 id, because otherwise it would imply - to track which user.id is used for which record.id. - - :param record_vals: values given to the create method of the new - record, or values updated in a write. - :param monitored_fields: a list of fields that are monitored. Those - fields must be many2one fields to the res.users model. - :param fetch_missing: is set to True, the method will read the - record to find values that are not present in record_vals. - - #TODO : UPDATE WHEN MERGING TO PARTNERS - """ - # get monitored fields - monitored_fields = self.message_get_monitored_follower_fields(cr, uid, [id], context=context) - modified_fields = [field for field in monitored_fields if field in record_vals.iterkeys()] - other_fields = [field for field in monitored_fields if field not in record_vals.iterkeys()] if fetch_missing else [] - # for each monitored field: if in record_vals, it has been modified/added - follower_ids = [] - for field in modified_fields: - # do not add 'False' - if record_vals.get(fields): - follower_ids.append(record_vals.get(field)) - # for other fields: read in record if fetch_missing (otherwise list is void) - for field in other_fields: - record = self.browse(cr, uid, id, context=context) - value = getattr(record, field) - if value: - follower_ids.append(value) - # add uid if asked and not already present - if add_uid and uid not in follower_ids: - follower_ids.append(uid) - return self.message_subscribe_get_command(cr, uid, follower_ids, context=context) - #------------------------------------------------------ # mail.message wrappers and tools #------------------------------------------------------ @@ -987,12 +921,6 @@ class mail_thread(osv.Model): return True return False - def message_get_monitored_follower_fields(self, cr, uid, ids, context=None): - """ Returns a list of fields containing a res.user.id. Those fields - will be checked to automatically subscribe those users. - """ - return [] - def message_subscribe(self, cr, uid, ids, partner_ids=None, context=None): """ :param user_ids: a list of user_ids; if not set, subscribe diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 7b8442b4c46..16c66655b3c 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -1046,11 +1046,6 @@ class mrp_production(osv.osv): # OpenChatter methods and notifications # --------------------------------------------------- - def message_get_monitored_follower_fields(self, cr, uid, ids, context=None): - """ Add 'user_id' to the monitored fields """ - res = super(mrp_production, self).message_get_monitored_follower_fields(cr, uid, ids, context=context) - return res + ['user_id'] - def create_send_note(self, cr, uid, ids, context=None): self.message_append_note(cr, uid, ids, body=_("Manufacturing order has been created."), context=context) return True diff --git a/addons/project/project.py b/addons/project/project.py index 1a8f8c8bfe5..caea3c6f23b 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -514,11 +514,6 @@ def Project(): # OpenChatter methods and notifications # ------------------------------------------------ - def message_get_monitored_follower_fields(self, cr, uid, ids, context=None): - """ Add 'user_id' to the monitored fields """ - res = super(project, self).message_get_monitored_follower_fields(cr, uid, ids, context=context) - return res + ['user_id'] - def create(self, cr, uid, vals, context=None): if context is None: context = {} # Prevent double project creation when 'use_tasks' is checked! diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 5c440976b5c..a8a1e617ecb 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -499,11 +499,6 @@ class project_issue(base_stage, osv.osv): # OpenChatter methods and notifications # ------------------------------------------------------- - def message_get_monitored_follower_fields(self, cr, uid, ids, context=None): - """ Add 'user_id' to the monitored fields """ - res = super(project_issue, self).message_get_monitored_follower_fields(cr, uid, ids, context=context) - return res + ['user_id'] - def stage_set_send_note(self, cr, uid, ids, stage_id, context=None): """ Override of the (void) default notification method. """ stage_name = self.pool.get('project.task.type').name_get(cr, uid, [stage_id], context=context)[0][1] diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 1d904383718..350d40526ab 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -734,11 +734,6 @@ class purchase_order(osv.osv): def needaction_domain_get(self, cr, uid, ids, context=None): return [('state','=','draft')] - def message_get_monitored_follower_fields(self, cr, uid, ids, context=None): - """ Add 'validator' to the monitored fields """ - res = super(purchase_order, self).message_get_monitored_follower_fields(cr, uid, ids, context=context) - return res + ['validator'] - def create_send_note(self, cr, uid, ids, context=None): return self.message_append_note(cr, uid, ids, body=_("Request for quotation created."), context=context)