From 8df078bdba258914f6742724ba5db8bcae8730b7 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Mon, 2 Jul 2012 17:09:13 +0530 Subject: [PATCH 01/20] [ADD] added tooltip. bzr revid: tpa@tinyerp.com-20120702113913-q8dxbswpj8vf2832 --- addons/crm/crm.py | 4 +++- addons/hr_recruitment/hr_recruitment.py | 4 +++- addons/mail/mail_group.py | 4 +++- addons/mail/res_users.py | 4 +++- addons/project/project.py | 7 +++++-- addons/project_issue/project_issue.py | 3 ++- 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 238029a3f58..1a22952b7ac 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -122,7 +122,9 @@ class crm_case_section(osv.osv): 'note': fields.text('Description'), 'working_hours': fields.float('Working Hours', digits=(16,2 )), 'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'), - 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True), + 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True, + help="This Unique Mail Box Alias of the Sales Team allows to manage the Seamless email communication between Mail Box and OpenERP," + "This Alias MailBox also create and Manage the new Email Leads for this Sales Team and also manage the existing Lead email communication."), } def _get_stage_common(self, cr, uid, context): diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index d000c0c07ae..dc59b1b0fb4 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -552,7 +552,9 @@ class hr_job(osv.osv): _inherits = {'mail.alias': 'alias_id'} _columns = { 'survey_id': fields.many2one('survey', 'Interview Form', help="Choose an interview form for this job position and you will be able to print/answer this interview from all applicants who apply for this job"), - 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True), + 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True, + help="This Unique Mail Box Alias of the Job allows to manage the Seamless email communication between Mail Box and OpenERP," + "This Alias MailBox also create and Manage the new Email applicant for this job and also manage the existing applicant email communication."), } def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index 41d2d0a148e..3e34a71f33d 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -130,7 +130,9 @@ class mail_group(osv.osv): 'member_count': fields.function(get_member_ids, type='integer', string='Member count', multi='get_member_ids'), 'is_subscriber': fields.function(get_member_ids, type='boolean', string='Joined', multi='get_member_ids'), 'last_month_msg_nbr': fields.function(get_last_month_msg_nbr, type='integer', string='Messages count for last month'), - 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True) + 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True, + help="This Unique Mail Box Alias of the Group allows to manage the Seamless email communication between Mail Box and OpenERP," + "This Alias MailBox manage the Group email communication.") } _defaults = { diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index e9a9d1222b7..ea0c3a05005 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -40,7 +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="cascade", 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 = { diff --git a/addons/project/project.py b/addons/project/project.py index aa32fbb16e2..0856c31b221 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -217,8 +217,11 @@ 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), + 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True, + help="This Unique Mail Box Alias of the Project allows to manage the Seamless email communication between Mail Box and OpenERP," + "This Alias MailBox also create and Manage the new Email Tasks/Issues for this Project and also manage the existing Task/Issue email communication."), + 'alias_model': fields.selection(_get_alias_model, "Alias Model",select="1", required=True, + help="Allows to select Model for the Mail alias .Based on selected model Task/issue will created for fetched mails or it will maintain communication for related Task/Issue."), '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, diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index a7322959e70..1543be3fd2a 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -595,7 +595,8 @@ class project(osv.osv): 'project_escalation_id' : fields.many2one('project.project','Project Escalation', help='If any issue is escalated from the current Project, it will be listed under the project selected here.', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'reply_to' : fields.char('Reply-To Email Address', size=256), 'issue_count': fields.function(_issue_count, type='integer'), - 'alias_model': fields.selection(_get_alias_model, "Alias Model"), + 'alias_model': fields.selection(_get_alias_model, "Alias Model",select="1", required=True, + help="Allows to select Model for the Mail alias .Based on selected model Task/issue will created for fetched mails or it will maintain communication for related Task/Issue."), } def _check_escalation(self, cr, uid, ids, context=None): From 37ad1cb6839b2752f8eb93ca9369e44bee5412d0 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 4 Jul 2012 10:52:12 +0530 Subject: [PATCH 02/20] [IMP] added the mail model field and improved the name_Getr bzr revid: jam@tinyerp.com-20120704052212-3z4mhsmuj6038v7r --- addons/mail/mail_alias.py | 21 +++++++++++++-------- addons/mail/mail_alias_view.xml | 1 + 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index 292b2f742cd..a39f99ae571 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -39,6 +39,14 @@ class mail_alias(osv.Model): _description = "Mail Alias" _rec_name = 'alias_name' + def _get_alias_domain(self, cr, uid, ids, name, args, context=None): + res = {} + config_parameter_pool = self.pool.get("ir.config_parameter") + domain = config_parameter_pool.get_param(cr, uid, "mail.catchall.domain", context=context) + for alias in self.browse(cr, uid, ids, context=context): + res[alias.id] = domain or "" + return res + _columns = { 'alias_name': fields.char('Mailbox Alias', size=255, required=True, help="The name of the mailbox alias, e.g. 'jobs' " @@ -63,7 +71,8 @@ class mail_alias(osv.Model): 'alias_force_thread_id': fields.integer('Record Thread ID', help="Optional ID of the thread (record) to which all " "messages will be attached, even if they did not reply to it. " - "If set, this will disable the creation of new records completely.") + "If set, this will disable the creation of new records completely."), + 'alias_domain': fields.function(_get_alias_domain, string="Alias Doamin", type='char', size=None), } _defaults = { 'alias_defaults': '{}', @@ -82,9 +91,9 @@ class mail_alias(osv.Model): for record in self.browse(cr, uid, ids, context=context): try: dict(eval(record.alias_defaults)) - return True except: return False + return True _constraints = [ (_check_alias_defaults, "Default Values are in wrong format.\nIt must be in python dictionary format e.g.{'field_name': 'value' or {}}", ['alias_defaults']), @@ -96,13 +105,9 @@ class mail_alias(osv.Model): Email Alias Domain from config. e.g. `jobs@openerp.my.openerp.com` or `sales@openerp.my.openerp.com` """ - if context is None: - context = {} res = [] - config_parameter_pool = self.pool.get("ir.config_parameter") - domain = config_parameter_pool.get_param(cr, uid, "mail.catchall.domain", context=context) - for record in self.read(cr, uid, ids, ['alias_name'], context=context): - domain_alias = "%s@%s"%(record['alias_name'], domain) + for record in self.read(cr, uid, ids, ['alias_name', 'alias_domain'], context=context): + domain_alias = "%s@%s"%(record['alias_name'], record['alias_domain']) res.append((record['id'], domain_alias)) return res diff --git a/addons/mail/mail_alias_view.xml b/addons/mail/mail_alias_view.xml index e72143bdb9a..57ff5efe32f 100644 --- a/addons/mail/mail_alias_view.xml +++ b/addons/mail/mail_alias_view.xml @@ -13,6 +13,7 @@ + From 0d3049f1b6c7221e56d05ca5ad51a4a93c62b6eb Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 4 Jul 2012 11:50:24 +0530 Subject: [PATCH 03/20] [FIX] create_unique_alias shoud create alis_id and return the new alias id bzr revid: jam@tinyerp.com-20120704062024-t5k5rivheh4zzg8i --- addons/mail/mail_alias.py | 26 ++++++++++++++++---------- addons/mail/mail_group.py | 14 ++++++-------- addons/mail/res_users.py | 8 +++----- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index a39f99ae571..c4328fa49d7 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -111,15 +111,21 @@ class mail_alias(osv.Model): res.append((record['id'], domain_alias)) return res - def create_unique_alias(self, cr, uid, values, sequence=1 ,context=None): - if sequence: - prob_alias = "%s%s"%(values['alias_name'], sequence) - search_alias = self.search(cr, uid, [('alias_name', '=', prob_alias)]) - if search_alias: - values = self.create_unique_alias(cr, uid, values, sequence+1, context) - else: - values.update({'alias_name': prob_alias}) - return values + def _generate_alias(self, cr, uid, name, sequence=1 ,context=None): + new_name = "%s%s"%(name, sequence) + search_alias = self.search(cr, uid, [('alias_name', '=', new_name)]) + if search_alias: + self._generate_alias(cr, uid, name, sequence+1 ,context=None) else: - return values.update({'alias_name': "%s"%(values['alias_name'])}) + return new_name + + def create_unique_alias(self, cr, uid, vals, context=None): + model_pool = self.pool.get('ir.model') + values = {'alias_name': vals['alias_name']} + if self.search(cr, uid, [('alias_name', '=', vals['alias_name'])]): + values.update({'alias_name': self._generate_alias(cr, uid, vals['alias_name'], sequence=1, context=context)}) + model_sids = model_pool.search(cr, uid, [('model', '=', vals['alias_model_id'])]) + values.update({'alias_model_id': model_sids[0]}) + return self.create(cr, uid, values, context=context) + diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index 41d2d0a148e..6019b66c55e 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -152,13 +152,11 @@ class mail_group(osv.osv): return res 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, "mail", "model_mail_group") - vals.update({'alias_name': "mailing-group", - 'alias_model_id': res_id}) - alias_pool.create_unique_alias(cr, uid, vals, context=context) - res = super( mail_group, self).create(cr, uid, vals, context) - record = self.read(cr, uid, res, context) - alias_pool.write(cr, uid, [record['alias_id']], {"alias_force_thread_id":record['id']}, context) + if not vals['alias_id']: + alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "mail_group."+vals['name'], 'alias_model_id': self._name}, context=context) + vals.update({'alias_id': alias_id}) + res = super(mail_group, self).create(cr, uid, vals, context) + alias_pool.write(cr, uid, [vals['alias_id']], {"alias_force_thread_id": res}, context) return res + diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index e9a9d1222b7..702c36cfe37 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -72,14 +72,12 @@ class res_users(osv.osv): def create(self, cr, uid, data, context=None): # create default alias same as the login - model_pool = self.pool.get('ir.model.data') alias_pool = self.pool.get('mail.alias') - res_id = model_pool.get_object( cr, uid, "mail", "model_res_users") - data.update({'alias_name': data.get('login'), - 'alias_model_id': res_id.id}) + alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': data['name'], 'alias_model_id': self._name}, context=context) + data.update({'alias_id': alias_id}) user_id = super(res_users, self).create(cr, uid, data, context=context) + alias_pool.write(cr, uid, [alias_id], {"alias_force_thread_id": user_id}, context) user = self.browse(cr, uid, user_id, context=context) - alias_pool.write(cr, uid, [user.alias_id.id], {"alias_force_thread_id": user.id}, context) # make user follow itself self.message_subscribe(cr, uid, [user_id], [user_id], context=context) # create a welcome message to broadcast From f6a310b499454765f505ca99443386ebc013321d Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 4 Jul 2012 12:00:42 +0530 Subject: [PATCH 04/20] [FIX] alias better from view bzr revid: jam@tinyerp.com-20120704063042-n22iu8xj6o20e0ti --- addons/mail/mail_alias_view.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/mail/mail_alias_view.xml b/addons/mail/mail_alias_view.xml index 57ff5efe32f..adbc8f0033c 100644 --- a/addons/mail/mail_alias_view.xml +++ b/addons/mail/mail_alias_view.xml @@ -11,13 +11,15 @@
+
From 4aeda05b974346de3187e8ca2479f9bf429ab86b Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 4 Jul 2012 12:49:02 +0530 Subject: [PATCH 05/20] [FIX] code imp for better tolerance bzr revid: jam@tinyerp.com-20120704071902-7uvh0afucsqzvu1g --- addons/mail/mail_group.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index 6019b66c55e..5688e78255b 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -153,7 +153,7 @@ class mail_group(osv.osv): def create(self, cr, uid, vals, context=None): alias_pool = self.pool.get('mail.alias') - if not vals['alias_id']: + if not vals.get('alias_id'): alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "mail_group."+vals['name'], 'alias_model_id': self._name}, context=context) vals.update({'alias_id': alias_id}) res = super(mail_group, self).create(cr, uid, vals, context) From 6672dfcc87079131777eae5dfc36e4bd1fa07e3c Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 4 Jul 2012 14:07:54 +0530 Subject: [PATCH 06/20] [IMP] improved create method. bzr revid: tpa@tinyerp.com-20120704083754-8g1n2ylj3ljwrnvk --- addons/crm/crm.py | 17 ++++++----------- addons/hr_recruitment/hr_recruitment.py | 11 ++++------- addons/mail/mail_group.py | 2 +- addons/project/project.py | 8 +++----- 4 files changed, 14 insertions(+), 24 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 238029a3f58..68542ad231a 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -172,19 +172,14 @@ class crm_case_section(osv.osv): return res def create(self, cr, uid, vals, context=None): - model_pool = self.pool.get('ir.model.data') alias_pool = self.pool.get('mail.alias') if not vals.get('alias_id'): - model, res_id = model_pool.get_object_reference( cr, uid, "crm", "model_crm_lead") - vals.update({'alias_name': "sales", - 'alias_model_id': res_id}) - alias_pool.create_unique_alias(cr, uid, vals, context=context) - res = super(crm_case_section, self).create(cr, uid, vals, context) - record = self.read(cr, uid, res, context) - alias_pool.write(cr, uid, [record['alias_id']],{'alias_defaults':{'section_id':record['id'],'type':'lead'}},context) - return res - return super(crm_case_section, self).create(cr, uid, vals, context) - + alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "sales_team."+vals['name'], 'alias_model_id': self._name}, context=context) + vals.update({'alias_id': alias_id}) + res = super(crm_case_section, self).create(cr, uid, vals, context) + record = self.read(cr, uid, res, context) + alias_pool.write(cr, uid, [record['alias_id']],{'alias_defaults':{'section_id':record['id'],'type':'lead'}},context) + return res class crm_case_categ(osv.osv): """ Category of Case """ diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index d000c0c07ae..bbd89306bbf 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -568,17 +568,14 @@ class hr_job(osv.osv): return res def create(self, cr, uid, vals, context=None): - model_pool = self.pool.get('ir.model.data') alias_pool = self.pool.get('mail.alias') - res_id = model_pool.get_object( cr, uid, "hr_recruitment", "model_hr_applicant") - vals.update({'alias_name': "job", - 'alias_model_id': res_id.id}) - alias_pool.create_unique_alias(cr, uid, vals, context=context) + if not vals.get('alias_id'): + alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "job."+vals['name'], 'alias_model_id': self._name}, context=context) + vals.update({'alias_id': alias_id}) res = super( hr_job, self).create(cr, uid, vals, context) record = self.read(cr, uid, res, context) - alias_pool.write(cr, uid, [record['alias_id']], {"alias_defaults": {'job_id': record['id']}}, context) + alias_pool.write(cr, uid, [vals['alias_id']], {"alias_defaults": {'job_id': record['id']}}, context) return res - def action_print_survey(self, cr, uid, ids, context=None): if context is None: diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index 6019b66c55e..5688e78255b 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -153,7 +153,7 @@ class mail_group(osv.osv): def create(self, cr, uid, vals, context=None): alias_pool = self.pool.get('mail.alias') - if not vals['alias_id']: + if not vals.get('alias_id'): alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "mail_group."+vals['name'], 'alias_model_id': self._name}, context=context) vals.update({'alias_id': alias_id}) res = super(mail_group, self).create(cr, uid, vals, context) diff --git a/addons/project/project.py b/addons/project/project.py index aa32fbb16e2..98731983dfb 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -521,12 +521,10 @@ def Project(): return self.pool.get('res.users').read(cr, uid, sub_ids, context=context) 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'): + alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "project."+vals['name'], 'alias_model_id': self._name}, context=context) + vals.update({'alias_id': alias_id}) 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) From cb2c902c6be96f2092732634dd0e54b90b827f2f Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 4 Jul 2012 15:03:43 +0530 Subject: [PATCH 07/20] [IMP] project: improved code. bzr revid: tpa@tinyerp.com-20120704093343-3q7a6flz5qbrsza1 --- addons/project/project.py | 13 ++++++------- addons/project/project_demo.xml | 10 +++++----- addons/project/project_view.xml | 2 +- addons/project_issue/project_issue.py | 3 ++- addons/project_issue/project_issue_view.xml | 3 +++ 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/addons/project/project.py b/addons/project/project.py index 98731983dfb..fd472c4e161 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -165,7 +165,7 @@ class project(osv.osv): res[task.project_id.id] += 1 return res def _get_alias_model(self, cr, uid, context=None): - return [('model_project_task', "Tasks")] + return [('project.task', "Tasks")] def _get_followers(self, cr, uid, ids, name, arg, context=None): ''' @@ -239,7 +239,7 @@ class project(osv.osv): 'priority': 1, 'sequence': 10, 'type_ids': _get_type_common, - 'alias_model':'model_project_task', + 'alias_model':'project.task', } # TODO: Why not using a SQL contraints ? @@ -523,7 +523,7 @@ def Project(): def create(self, cr, uid, vals, context=None): alias_pool = self.pool.get('mail.alias') if not vals.get('alias_id'): - alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "project."+vals['name'], 'alias_model_id': self._name}, context=context) + alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "project."+vals['name'], 'alias_model_id': vals.get('alias_model','project.task')}, context=context) vals.update({'alias_id': alias_id}) res = super( project, self).create(cr, uid, vals, context) record = self.read(cr, uid, res, context) @@ -551,16 +551,15 @@ def Project(): 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') + model_pool = self.pool.get('ir.model') 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')) + model_ids = model_pool.search(cr, uid, [('model', '=', vals.get('alias_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) + alias_pool.write(cr, uid, [alias_id.id], {'alias_model_id': model_ids[0]}, context=context) return super(project, self).write(cr, uid, ids, vals, context=context) - class task(base_stage, osv.osv): _name = "project.task" _description = "Task" diff --git a/addons/project/project_demo.xml b/addons/project/project_demo.xml index 889cc285af3..fb394d1bfca 100644 --- a/addons/project/project_demo.xml +++ b/addons/project/project_demo.xml @@ -66,7 +66,7 @@ ref('base.user_vad')])]" name="members"/> Integrate a Sale and Warehouse Management. - model_project_task + project.task @@ -291,7 +291,7 @@ - model_project_task + project.task 10 @@ -300,7 +300,7 @@ - model_project_task + project.task 20 @@ -309,7 +309,7 @@ - model_project_task + project.task 30 @@ -317,7 +317,7 @@ Install, data import, configuration - model_project_task + project.task diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 8024e4e8c63..cc64f528cda 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -56,7 +56,7 @@ - +
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index a7322959e70..04263ee7e21 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -582,7 +582,7 @@ class project(osv.osv): _inherit = "project.project" def _get_alias_model(self, cr, uid, context=None): - return [('model_project_task', "Tasks"),("model_project_issue", "Issue")] + return [('project.task', "Tasks"),("project.issue", "Issue")] def _issue_count(self, cr, uid, ids, field_name, arg, context=None): res = dict.fromkeys(ids, 0) @@ -608,6 +608,7 @@ class project(osv.osv): _constraints = [ (_check_escalation, 'Error! You cannot assign escalation to the same project!', ['project_escalation_id']) ] + project() class account_analytic_account(osv.osv): diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 016c3f8d9d0..0738f9fe850 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -352,6 +352,9 @@ + + + From 432b960b704deef31da6ce77a58162aad9a3aa78 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 4 Jul 2012 15:08:19 +0530 Subject: [PATCH 08/20] [IMP] mail: set login as alias name in res.users. bzr revid: tpa@tinyerp.com-20120704093819-tj66hkco9imw6d4b --- addons/mail/res_users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index 702c36cfe37..f85411f2e26 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -73,7 +73,7 @@ class res_users(osv.osv): def create(self, cr, uid, data, context=None): # create default alias same as the login alias_pool = self.pool.get('mail.alias') - alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': data['name'], 'alias_model_id': self._name}, context=context) + alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': data['login'], 'alias_model_id': self._name}, context=context) data.update({'alias_id': alias_id}) user_id = super(res_users, self).create(cr, uid, data, context=context) alias_pool.write(cr, uid, [alias_id], {"alias_force_thread_id": user_id}, context) From a5e58974cc4177dd557a5b5f33902c67a56a4a6b Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 4 Jul 2012 15:27:13 +0530 Subject: [PATCH 09/20] [IMP] Keep Nuetral names of the alias bzr revid: jam@tinyerp.com-20120704095713-6ev7fvoz6ys3ihl9 --- addons/mail/mail_alias.py | 6 +++++- addons/mail/mail_alias_view.xml | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index c4328fa49d7..8fffbb4ee8b 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -19,9 +19,11 @@ # ############################################################################## +import re from openerp.osv import fields, osv from tools.translate import _ + class mail_alias(osv.Model): """A Mail Alias is a mapping of an email address with a given OpenERP Document model. It is used by OpenERP's mail gateway when processing incoming emails @@ -121,11 +123,13 @@ class mail_alias(osv.Model): def create_unique_alias(self, cr, uid, vals, context=None): model_pool = self.pool.get('ir.model') - values = {'alias_name': vals['alias_name']} + values = {} if self.search(cr, uid, [('alias_name', '=', vals['alias_name'])]): values.update({'alias_name': self._generate_alias(cr, uid, vals['alias_name'], sequence=1, context=context)}) model_sids = model_pool.search(cr, uid, [('model', '=', vals['alias_model_id'])]) values.update({'alias_model_id': model_sids[0]}) + alias_name = re.sub(r'[^a-zA-Z0-9:]', '_', vals['alias_name']).lower() + values.update({'alias_name': values['alias_name']}) return self.create(cr, uid, values, context=context) diff --git a/addons/mail/mail_alias_view.xml b/addons/mail/mail_alias_view.xml index adbc8f0033c..344a98d74db 100644 --- a/addons/mail/mail_alias_view.xml +++ b/addons/mail/mail_alias_view.xml @@ -15,11 +15,11 @@

@

- - + + - + From ac8a9985e4a08750adf30bdeab1944feb65d7dee Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 4 Jul 2012 15:38:57 +0530 Subject: [PATCH 10/20] [USB/IMP] imporved the doc string and code fix bzr revid: jam@tinyerp.com-20120704100857-rrfdgmgr2hiynele --- addons/mail/mail_alias.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index 8fffbb4ee8b..06d24fca006 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -95,7 +95,7 @@ class mail_alias(osv.Model): dict(eval(record.alias_defaults)) except: return False - return True + return True _constraints = [ (_check_alias_defaults, "Default Values are in wrong format.\nIt must be in python dictionary format e.g.{'field_name': 'value' or {}}", ['alias_defaults']), @@ -114,6 +114,10 @@ class mail_alias(osv.Model): return res def _generate_alias(self, cr, uid, name, sequence=1 ,context=None): + """ + If alias is existing then this method will create a new unique alias name + by appending n sequence integer number. + """ new_name = "%s%s"%(name, sequence) search_alias = self.search(cr, uid, [('alias_name', '=', new_name)]) if search_alias: @@ -122,14 +126,21 @@ class mail_alias(osv.Model): return new_name def create_unique_alias(self, cr, uid, vals, context=None): + """ + Methods accepts the vals param in dict format and create new alias record + @vals : dict accept {alias_name: '', alias_model_id: '',...} + @return int: New alias_id + """ model_pool = self.pool.get('ir.model') - values = {} + values = {'alias_name': vals['alias_name']} + #Find for the mail alias exist or not if exit then get new mail address. if self.search(cr, uid, [('alias_name', '=', vals['alias_name'])]): values.update({'alias_name': self._generate_alias(cr, uid, vals['alias_name'], sequence=1, context=context)}) + alias_name = re.sub(r'[^a-zA-Z0-9:]', '_', values['alias_name']).lower() + values.update({'alias_name': alias_name}) + #Set the model fo rhte mail alias model_sids = model_pool.search(cr, uid, [('model', '=', vals['alias_model_id'])]) values.update({'alias_model_id': model_sids[0]}) - alias_name = re.sub(r'[^a-zA-Z0-9:]', '_', vals['alias_name']).lower() - values.update({'alias_name': values['alias_name']}) return self.create(cr, uid, values, context=context) From 8541387a0b638ff72955ca4106b3d0061d98bcdc Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 4 Jul 2012 17:37:18 +0530 Subject: [PATCH 11/20] [IMP] fretchmail and mail alias integration bzr revid: jam@tinyerp.com-20120704120718-kkg3qn1gemjkobw6 --- addons/fetchmail/fetchmail.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/addons/fetchmail/fetchmail.py b/addons/fetchmail/fetchmail.py index 55923c3043a..f0e6a5179b4 100644 --- a/addons/fetchmail/fetchmail.py +++ b/addons/fetchmail/fetchmail.py @@ -71,7 +71,7 @@ class fetchmail_server(osv.osv): 'password' : fields.char('Password', size=1024, readonly=True, states={'draft':[('readonly', False)]}), 'action_id':fields.many2one('ir.actions.server', 'Server Action', help="Optional custom server action to trigger for each incoming mail, " "on the record that was created or updated by this mail"), - 'object_id': fields.many2one('ir.model', "Create a New Record", required=True, help="Process each incoming mail as part of a conversation " + 'object_id': fields.many2one('ir.model', "Create a New Record", help="Process each incoming mail as part of a conversation " "corresponding to this document type. This will create " "new documents for new conversations, or attach follow-up " "emails to the existing conversations (documents)."), @@ -189,10 +189,14 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS result, data = imap_server.search(None, '(UNSEEN)') for num in data[0].split(): result, data = imap_server.fetch(num, '(RFC822)') - res_id = mail_thread.message_process(cr, uid, server.object_id.model, data[0][1], - save_original=server.original, - strip_attachments=(not server.attach), - context=context) + if server.object_id: + res_id = mail_thread.message_process(cr, uid, server.object_id.model, + data[0][1], + save_original=server.original, + strip_attachments=(not server.attach), + context=context) + else: + res_id = mail_thread.message_catchall(cr, uid, data[0][1]) if res_id and server.action_id: action_pool.run(cr, uid, [server.action_id.id], {'active_id': res_id, 'active_ids':[res_id]}) imap_server.store(num, '+FLAGS', '\\Seen') @@ -213,11 +217,14 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS for num in range(1, numMsgs + 1): (header, msges, octets) = pop_server.retr(num) msg = '\n'.join(msges) - res_id = mail_thread.message_process(cr, uid, server.object_id.model, - msg, - save_original=server.original, - strip_attachments=(not server.attach), - context=context) + if server.object_id: + res_id = mail_thread.message_process(cr, uid, server.object_id.model, + msg, + save_original=server.original, + strip_attachments=(not server.attach), + context=context) + else: + res_id = mail_thread.message_catchall(cr, uid, data[0][1]) if res_id and server.action_id: action_pool.run(cr, uid, [server.action_id.id], {'active_id': res_id, 'active_ids':[res_id]}) pop_server.dele(num) From 697a57a3246816ba1c35ab5694606f894623678c Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 4 Jul 2012 19:13:03 +0530 Subject: [PATCH 12/20] [FIX] user and group view fix bzr revid: jam@tinyerp.com-20120704134303-977ap0upv0p8v230 --- addons/mail/mail_group_view.xml | 5 +++-- addons/mail/res_users_view.xml | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index b02447576e9..89a4b9781a3 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -69,8 +69,9 @@ -
- +
+
diff --git a/addons/mail/res_users_view.xml b/addons/mail/res_users_view.xml index 9af90efebae..a93933a5acf 100644 --- a/addons/mail/res_users_view.xml +++ b/addons/mail/res_users_view.xml @@ -32,7 +32,12 @@ - + +
+
+
From 2523547b35d5d0e5a81e0e4a5e7936481416216e Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Thu, 5 Jul 2012 11:08:40 +0530 Subject: [PATCH 13/20] [REF/FIX] refectored the creation code and recreated the views for the crm,project mali group bzr revid: jam@tinyerp.com-20120705053840-2980zbtcd4ftny09 --- addons/crm/crm_view.xml | 8 +++++++- addons/mail/mail_alias.py | 14 ++++++++------ addons/mail/mail_group.py | 8 ++++++-- addons/mail/mail_group_view.xml | 2 +- addons/mail/res_users_view.xml | 2 +- addons/project/project.py | 8 ++++++-- addons/project/project_view.xml | 10 ++++++++-- 7 files changed, 37 insertions(+), 15 deletions(-) diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index 7f41df641b3..ea29b619d13 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -71,8 +71,8 @@ - + @@ -87,6 +87,12 @@ + +
+
+
diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index 71c1c033142..4ca22132b4a 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -121,7 +121,9 @@ class mail_alias(osv.Model): new_name = "%s%s"%(name, sequence) search_alias = self.search(cr, uid, [('alias_name', '=', new_name)]) if search_alias: - self._generate_alias(cr, uid, name, sequence+1 ,context=None) + new_name = self._generate_alias(cr, uid, name, sequence+1 ,context=None) + if not self.search(cr, uid, [('alias_name', '=', new_name)]): + return new_name else: return new_name @@ -132,13 +134,13 @@ class mail_alias(osv.Model): @return int: New alias_id """ model_pool = self.pool.get('ir.model') - alias_name = vals['alias_name'] + alias_name = re.sub(r'\W+', '_', vals['alias_name']).lower() values = {'alias_name': alias_name} #Find for the mail alias exist or not if exit then get new mail address. - if self.search(cr, uid, [('alias_name', '=', vals['alias_name'])]): - alias_name = self._generate_alias(cr, uid, vals['alias_name'], sequence=1, context=context) - alias_name = re.sub(r'\W+', '_', alias_name) - values.update({'alias_name': alias_name.lower()}) + saids = self.search(cr, uid, [('alias_name', '=',alias_name)]) + if saids: + alias_name = self._generate_alias(cr, uid, alias_name, sequence=1, context=context) + values.update({'alias_name': alias_name}) #Set the model fo rhte mail alias model_sids = model_pool.search(cr, uid, [('model', '=', vals['alias_model_id'])]) values.update({'alias_model_id': model_sids[0]}) diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index 5b01968ed5e..d6966d14043 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -156,8 +156,12 @@ class mail_group(osv.osv): def create(self, cr, uid, vals, context=None): alias_pool = self.pool.get('mail.alias') if not vals.get('alias_id'): - alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "mail_group."+vals['name'], 'alias_model_id': self._name}, context=context) - vals.update({'alias_id': alias_id}) + name = vals.get('alias_name') or vals['name'] + alias_id = alias_pool.create_unique_alias(cr, uid, + {'alias_name': "mail_group."+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(mail_group, self).create(cr, uid, vals, context) alias_pool.write(cr, uid, [vals['alias_id']], {"alias_force_thread_id": res}, context) return res diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index 89a4b9781a3..0fde2d96131 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -71,7 +71,7 @@
diff --git a/addons/mail/res_users_view.xml b/addons/mail/res_users_view.xml index a93933a5acf..3a099450120 100644 --- a/addons/mail/res_users_view.xml +++ b/addons/mail/res_users_view.xml @@ -35,7 +35,7 @@
diff --git a/addons/project/project.py b/addons/project/project.py index 8b678ae238c..637faca6556 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -526,8 +526,12 @@ def Project(): def create(self, cr, uid, vals, context=None): alias_pool = self.pool.get('mail.alias') if not vals.get('alias_id'): - alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "project."+vals['name'], 'alias_model_id': vals.get('alias_model','project.task')}, context=context) - vals.update({'alias_id': 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) alias_pool.write(cr, uid, [vals['alias_id']], {'alias_defaults':{'project_id': res}}, context) self.create_send_note(cr, uid, [res], context=context) diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index cc64f528cda..08418bb3a70 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -55,8 +55,6 @@ - -
@@ -104,6 +102,14 @@ + +
+
+ +
From 0cbad1808976fcd7eddac27f1404a4e3c218bf65 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Thu, 5 Jul 2012 11:22:13 +0530 Subject: [PATCH 14/20] [FIX] he job mail alias improvemetns bzr revid: jam@tinyerp.com-20120705055213-7c040f709z8jyhsk --- addons/hr_recruitment/hr_recruitment.py | 8 ++++++-- addons/hr_recruitment/hr_recruitment_view.xml | 8 +++++++- addons/mail/mail_group.py | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index a7b2b9dc45b..4251b29f2fd 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -572,8 +572,12 @@ class hr_job(osv.osv): def create(self, cr, uid, vals, context=None): alias_pool = self.pool.get('mail.alias') if not vals.get('alias_id'): - alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "job."+vals['name'], 'alias_model_id': self._name}, context=context) - vals.update({'alias_id': alias_id}) + name = vals.get('alias_name') or vals['name'] + alias_id = alias_pool.create_unique_alias(cr, uid, + {'alias_name': "job_"+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( hr_job, self).create(cr, uid, vals, context) alias_pool.write(cr, uid, [vals['alias_id']], {"alias_defaults": {'job_id': res}}, context) return res diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index 56d0da979ee..3375dd953f7 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -349,7 +349,13 @@
- + +
+
+
diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index d6966d14043..9cbaaa7892b 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -158,7 +158,7 @@ class mail_group(osv.osv): 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': "mail_group."+name, + {'alias_name': "mail_group_"+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']}) From 2b75b270f9898dfac2b850a58e74255dadeb1bc6 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Thu, 5 Jul 2012 11:38:06 +0530 Subject: [PATCH 15/20] [FIX] project kanban mai lalias better view bzr revid: jam@tinyerp.com-20120705060806-1582yyrhpzzt4ztm --- addons/project/project_view.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 08418bb3a70..47ffb87063a 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -225,14 +225,14 @@
Deadline
-
- -
Progress
/
- +
+ Mailbox Alias : + +
From fded30196fc02afb928159a73247aa16737f4a72 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Thu, 5 Jul 2012 12:06:59 +0530 Subject: [PATCH 16/20] [FIX] Project copy making comitible with mail alias bzr revid: jam@tinyerp.com-20120705063659-6rwzfmyr4jyw73kz --- addons/project/project.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/project/project.py b/addons/project/project.py index 637faca6556..c58a767da66 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -333,10 +333,11 @@ class project(osv.osv): context['active_test'] = False default['state'] = 'open' default['tasks'] = [] + default['alias_id'] = False proj = self.browse(cr, uid, id, context=context) if not default.get('name', False): default['name'] = proj.name + _(' (copy)') - + default['alias_name'] = default['name'] res = super(project, self).copy(cr, uid, id, default, context) self.map_tasks(cr,uid,id,res,context) return res From 4ac5ff962b0cfb1d5d1dde9d80252eb0963d1ed1 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 5 Jul 2012 12:23:09 +0530 Subject: [PATCH 17/20] [IMP] improved view for mail.catchall.domain bzr revid: tpa@tinyerp.com-20120705065309-sn7xw83x133r4wuw --- addons/crm/crm.py | 2 +- addons/crm/crm_view.xml | 2 +- addons/hr_recruitment/hr_recruitment.py | 2 +- addons/hr_recruitment/hr_recruitment_view.xml | 2 +- addons/mail/mail_group.py | 2 +- addons/mail/mail_group_view.xml | 2 +- addons/mail/res_users.py | 2 +- addons/mail/res_users_view.xml | 2 +- addons/project/project.py | 7 ++----- addons/project/project_view.xml | 2 +- 10 files changed, 11 insertions(+), 14 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index e1fa87d2e5b..9549e7589d2 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -167,7 +167,7 @@ class crm_case_section(osv.osv): 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] + alias_node = doc.xpath("//div[@name='alias_box']")[0] parent = alias_node.getparent() parent.remove(alias_node) res['arch'] = etree.tostring(doc) diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index ea29b619d13..8f5c1d54cbc 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -88,7 +88,7 @@ -
+
diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 4251b29f2fd..39a158da483 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -563,7 +563,7 @@ class hr_job(osv.osv): 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] + alias_node = doc.xpath("//div[@name='alias_box']")[0] parent = alias_node.getparent() parent.remove(alias_node) res['arch'] = etree.tostring(doc) diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index 3375dd953f7..c0abafff1fe 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -350,7 +350,7 @@ -
+
-
+
diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index e30f84fc70e..5b042847a50 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -66,7 +66,7 @@ class res_users(osv.osv): 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] + alias_node = doc.xpath("//div[@name='alias_box']")[0] parent = alias_node.getparent() parent.remove(alias_node) res['arch'] = etree.tostring(doc) diff --git a/addons/mail/res_users_view.xml b/addons/mail/res_users_view.xml index 3a099450120..ad52a8bdaaa 100644 --- a/addons/mail/res_users_view.xml +++ b/addons/mail/res_users_view.xml @@ -33,7 +33,7 @@ -
+
diff --git a/addons/project/project.py b/addons/project/project.py index 637faca6556..2d3ea2c5082 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -263,15 +263,12 @@ class project(osv.osv): 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] + model_node = doc.xpath("//group[@string='Mailbox Alias']")[0] parent = model_node.getparent() parent.remove(model_node) else: - model_node = doc.xpath("//field[@name='alias_id']")[0] + model_node = doc.xpath("//div[@name='alias_box']")[0] parent = model_node.getparent() parent.remove(model_node) res['arch'] = etree.tostring(doc) diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 47ffb87063a..585947bddb7 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -229,7 +229,7 @@
Progress
/
-
+
Mailbox Alias :
From caea6a69937dd593f3fd4723222f6aa432cbb0b9 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Thu, 5 Jul 2012 12:29:39 +0530 Subject: [PATCH 18/20] [FIX] _inherits meo field on delete restrit to avoid traceback from server bzr revid: jam@tinyerp.com-20120705065939-75xnhvgc9sn5htcl --- addons/crm/crm.py | 2 +- addons/hr_recruitment/hr_recruitment.py | 2 +- addons/mail/mail_group.py | 2 +- addons/mail/res_users.py | 2 +- addons/project/project.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index e1fa87d2e5b..0696ace5239 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -122,7 +122,7 @@ class crm_case_section(osv.osv): 'note': fields.text('Description'), 'working_hours': fields.float('Working Hours', digits=(16,2 )), 'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'), - 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True, + 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="restrict", required=True, help="This Unique Mail Box Alias of the Sales Team allows to manage the Seamless email communication between Mail Box and OpenERP," "This Alias MailBox also create and Manage the new Email Leads for this Sales Team and also manage the existing Lead email communication."), } diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 4251b29f2fd..dd9f7cf5844 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -552,7 +552,7 @@ class hr_job(osv.osv): _inherits = {'mail.alias': 'alias_id'} _columns = { 'survey_id': fields.many2one('survey', 'Interview Form', help="Choose an interview form for this job position and you will be able to print/answer this interview from all applicants who apply for this job"), - 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True, + 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="restrict", required=True, help="This Unique Mail Box Alias of the Job allows to manage the Seamless email communication between Mail Box and OpenERP," "This Alias MailBox also create and Manage the new Email applicant for this job and also manage the existing applicant email communication."), } diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index 9cbaaa7892b..dceb3d43a5c 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -130,7 +130,7 @@ class mail_group(osv.osv): 'member_count': fields.function(get_member_ids, type='integer', string='Member count', multi='get_member_ids'), 'is_subscriber': fields.function(get_member_ids, type='boolean', string='Joined', multi='get_member_ids'), 'last_month_msg_nbr': fields.function(get_last_month_msg_nbr, type='integer', string='Messages count for last month'), - 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True, + 'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="restrict", required=True, help="This Unique Mail Box Alias of the Group allows to manage the Seamless email communication between Mail Box and OpenERP," "This Alias MailBox manage the Group email communication.") } diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index e30f84fc70e..047d1affc00 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -40,7 +40,7 @@ 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, 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."), } diff --git a/addons/project/project.py b/addons/project/project.py index c58a767da66..633bb944df3 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -217,7 +217,7 @@ 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_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="restrict", required=True, help="This Unique Mail Box Alias of the Project allows to manage the Seamless email communication between Mail Box and OpenERP," "This Alias MailBox also create and Manage the new Email Tasks/Issues for this Project and also manage the existing Task/Issue email communication."), 'alias_model': fields.selection(_get_alias_model, "Alias Model",select="1", required=True, From dbe2cdd6ee42a51be4d40ec6406059f43d0b00c8 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Thu, 5 Jul 2012 14:16:40 +0530 Subject: [PATCH 19/20] [FIX] improved sales team alias name bzr revid: jam@tinyerp.com-20120705084640-viufemkz0dlwo2jo --- addons/crm/crm.py | 8 ++++++-- addons/project/project.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index f9a7ed6d574..ce7200f4571 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -176,8 +176,12 @@ class crm_case_section(osv.osv): def create(self, cr, uid, vals, context=None): alias_pool = self.pool.get('mail.alias') if not vals.get('alias_id'): - alias_id = alias_pool.create_unique_alias(cr, uid, {'alias_name': "sales_team."+vals['name'], 'alias_model_id': self._name}, context=context) - vals.update({'alias_id': alias_id}) + name = vals.get('alias_name') or vals['name'] + alias_id = alias_pool.create_unique_alias(cr, uid, + {'alias_name': "sales_team_"+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(crm_case_section, self).create(cr, uid, vals, context) alias_pool.write(cr, uid, [vals['alias_id']],{'alias_defaults':{'section_id': res,'type':'lead'}},context) return res diff --git a/addons/project/project.py b/addons/project/project.py index 05801dede63..5f168f129b9 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -526,7 +526,7 @@ def Project(): 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_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']}) From 2bf0978994c88ebf6a382a7b180350ee7ac5e1a9 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Thu, 5 Jul 2012 15:43:31 +0530 Subject: [PATCH 20/20] [REF] Refectored the fields_view_get hack bzr revid: jam@tinyerp.com-20120705101331-rjbxvjrbpme9wqrq --- addons/crm/crm.py | 12 ------------ addons/crm/crm_view.xml | 2 +- addons/hr_recruitment/hr_recruitment.py | 12 ------------ addons/hr_recruitment/hr_recruitment_view.xml | 2 +- addons/mail/mail_group.py | 12 ------------ addons/mail/mail_group_view.xml | 10 ++++++---- addons/mail/res_users.py | 12 ------------ addons/mail/res_users_view.xml | 2 +- addons/project/project.py | 17 ----------------- addons/project/project_view.xml | 5 +++-- 10 files changed, 12 insertions(+), 74 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index ce7200f4571..1a2f0716abe 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -160,18 +160,6 @@ class crm_case_section(osv.osv): name = record['parent_id'][1] + ' / ' + name res.append((record['id'], name)) return res - - def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): - res = super(crm_case_section,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu) - if view_type == 'form': - 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("//div[@name='alias_box']")[0] - parent = alias_node.getparent() - parent.remove(alias_node) - res['arch'] = etree.tostring(doc) - return res def create(self, cr, uid, vals, context=None): alias_pool = self.pool.get('mail.alias') diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index 8f5c1d54cbc..1e2b7182000 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -87,7 +87,7 @@ - +
- +
+ +
+
+
-
-
diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index c99cbeaeb52..62271da2fec 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -60,18 +60,6 @@ class res_users(osv.osv): self.SELF_WRITEABLE_FIELDS.append('notification_email_pref') return init_res - def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): - res = super(res_users,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu) - if view_type == 'form': - 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("//div[@name='alias_box']")[0] - parent = alias_node.getparent() - parent.remove(alias_node) - res['arch'] = etree.tostring(doc) - return res - def create(self, cr, uid, data, context=None): # create default alias same as the login alias_pool = self.pool.get('mail.alias') diff --git a/addons/mail/res_users_view.xml b/addons/mail/res_users_view.xml index ad52a8bdaaa..0321a89dd40 100644 --- a/addons/mail/res_users_view.xml +++ b/addons/mail/res_users_view.xml @@ -32,7 +32,7 @@
- +