[Add]:Implement mail.alias feature for project module

bzr revid: aja@tinyerp.com-20120625111712-q710cd4d4t5cbj7v
This commit is contained in:
ajay javiya (OpenERP) 2012-06-25 16:47:12 +05:30
parent daef4a7edd
commit 709c0f11c0
3 changed files with 29 additions and 8 deletions

View File

@ -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")]
_columns = {
'complete_name': fields.function(_complete_name, string="Project Name", type='char', size=250),
@ -205,8 +207,9 @@ class project(osv.osv):
'task_count': fields.function(_task_count, type='integer', string="Open Tasks"),
'color': fields.integer('Color Index'),
'company_uom_id': fields.related('company_id', 'project_time_mode_id', type='many2one', relation='product.uom'),
'alias_id': fields.many2one('mail.alias', 'Mail Alias'),
'alias_model': fields.selection(_get_alias_model, "Alias Model",select="1"),
}
def dummy(self, cr, uid, ids, context):
return True
@ -221,6 +224,7 @@ class project(osv.osv):
'sequence': 10,
'type_ids': _get_type_common,
'use_tasks': True,
'alias_model':'model_project_task',
}
# TODO: Why not using a SQL contraints ?
@ -482,9 +486,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'))
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_force_thread_id":record['id'],'alias_defaults':res}, 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)
@ -504,8 +516,7 @@ def Project():
def set_close_send_note(self, cr, uid, ids, context=None):
message = _("Project has been <b>closed</b>.")
return self.message_append_note(cr, uid, ids, body=message, context=context)
class task(base_stage, osv.osv):
_name = "project.task"
_description = "Task"

View File

@ -46,6 +46,9 @@
<field name="date_start" string="Start Date" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
<field name="date" string="End Date" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
<field name="progress_rate" widget="progressbar"/>
<field name="alias_id" required="0" />
<field name="alias_model" />
</group>
</group>
<notebook colspan="4">
@ -204,6 +207,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">
@ -228,7 +232,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>

View File

@ -581,6 +581,9 @@ project_issue()
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")]
def _issue_count(self, cr, uid, ids, field_name, arg, context=None):
res = dict.fromkeys(ids, 0)
issue_ids = self.pool.get('project.issue').search(cr, uid, [('project_id', 'in', ids)])
@ -593,6 +596,7 @@ class project(osv.osv):
'reply_to' : fields.char('Reply-To Email Address', size=256),
'use_issues' : fields.boolean('Use Issues', help="Check this field if this project manages issues"),
'issue_count': fields.function(_issue_count, type='integer'),
'alias_model': fields.selection(_get_alias_model, "Alias Model"),
}
_defaults = {