add email to aprovers group's members

(../7.0pageapproval/ rev 11)
This commit is contained in:
Jonatan Cloutier 2013-07-17 18:13:17 -04:00
parent 1920903b8f
commit 2bac58c5a9
3 changed files with 87 additions and 7 deletions

View File

@ -29,7 +29,7 @@
'description': """ 'description': """
Add a workflow to approve page modification and show the approved version by default Add a workflow to approve page modification and show the approved version by default
""", """,
'depends': ['document_page'], 'depends': ['document_page', 'email_template'],
'update_xml': ['document_page_wkfl.xml','document_page_view.xml'], 'update_xml': ['document_page_wkfl.xml','document_page_view.xml'],
'installable': True, 'installable': True,
'auto_install': False, 'auto_install': False,

View File

@ -26,13 +26,13 @@ class document_page_history_wkfl(orm.Model):
def page_approval_draft(self, cr, uid, ids): def page_approval_draft(self, cr, uid, ids):
self.write(cr, uid, ids, { 'state' : 'draft' }) self.write(cr, uid, ids, { 'state' : 'draft' })
if is_parent_approval_required:
for page in self.browse(cr, uid, ids):
self.send_email_to_approvers(page, page.parent_id)
return True
def send_email_to_approvers(self, page_hystory, page): template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'document_page_approval', 'email_template_new_draft_need_approval')[1]
pass for page in self.browse(cr, uid, ids):
if page.is_parent_approval_required:
self.pool.get('email.template').send_mail(cr, uid, template_id, page.id, force_send=True)
return True
def page_approval_approved(self, cr, uid, ids): def page_approval_approved(self, cr, uid, ids):
self.write(cr, uid, ids, { 'state' : 'approved', self.write(cr, uid, ids, { 'state' : 'approved',
@ -58,6 +58,57 @@ class document_page_history_wkfl(orm.Model):
return res return res
def get_approvers_guids(self, cr, uid, ids, name, args, context=None):
res = {}
for page in self.browse(cr, uid, ids, context=context):
res[page.id]= self.get_approvers_guids_for_page(page.page_id)
return res
def get_approvers_guids_for_page(self, page):
if page:
if page.approver_gid:
res = [page.approver_gid.id]
else:
res=[]
res.extend(self.get_approvers_guids_for_page(page.parent_id))
else:
res=[]
return res
def get_approvers_email(self, cr, uid, ids, name, args, context):
res = {}
for id in ids:
emails = ''
guids = self.get_approvers_guids(cr, uid, ids, name, args, context=context)
uids = self.pool.get('res.users').search(cr, uid, [('groups_id','in',guids[id])])
users = self.pool.get('res.users').browse(cr, uid, uids)
for user in users:
if user.user_email:
emails += user.user_email
emails += ','
else:
empl_id = self.pool.get('hr.employee').search(cr, uid,[('login','=',user.login)])[0]
empl = self.pool.get('hr.employee').browse(cr, uid, empl_id)
if empl.work_email:
emails += empl.work_email
emails += ','
emails = emails[:-1]
res[id] = emails
return res
def get_page_url(self, cr, uid, ids, name, args, context):
res = {}
for id in ids:
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context)
res[id] = base_url + '/#db=%s&id=%s&view_type=form&model=document.page.history' % (cr.dbname, id);
return res
_columns = { _columns = {
'state': fields.selection([ 'state': fields.selection([
('draft','Draft'), ('draft','Draft'),
@ -66,6 +117,8 @@ class document_page_history_wkfl(orm.Model):
'approved_uid': fields.many2one('res.users', "Approved By"), 'approved_uid': fields.many2one('res.users', "Approved By"),
'is_parent_approval_required': fields.related('page_id', 'is_parent_approval_required', string="parent approval", type='boolean', store=False), 'is_parent_approval_required': fields.related('page_id', 'is_parent_approval_required', string="parent approval", type='boolean', store=False),
'can_user_approve_page': fields.function(can_user_approve_page, string="can user approve this page", type='boolean', store=False), 'can_user_approve_page': fields.function(can_user_approve_page, string="can user approve this page", type='boolean', store=False),
'get_approvers_email': fields.function(get_approvers_email, string="get all approvers email", type='text', store=False),
'get_page_url': fields.function(get_page_url, string="get page url", type='text', store=False),
} }
class document_page_approval(orm.Model): class document_page_approval(orm.Model):

View File

@ -35,5 +35,32 @@
<field name="signal">edit</field> <field name="signal">edit</field>
</record> </record>
<record id="email_template_new_draft_need_approval" model="email.template">
<field name="name">Automated new draft need approval Notification Mail</field>
<field name="email_from">${object.create_uid.company_id.email or 'noreply@localhost.com'}</field>
<field name="subject">New version of "${object.page_id.name}" to approve</field>
<field name="email_to">${object.get_approvers_email}</field>
<field name="model_id" ref="model_document_page_history"/>
<field name="auto_delete" eval="True"/>
<field name="lang">${object.employee_id.partner_id.lang}</field>
<field name="body_html">
<![CDATA[
<p>Hello,</p>
<p>The page "${object.page_id.name}" has been modified and need aprobation.</p>
<p>You can view the new version there: <a href="${object.get_page_url}"> ${object.get_page_url} </a></p>
]]>
</field>
<field name="body_text">
<![CDATA[
Hello,
The page "${object.page_id.name}" has been modified and need aprobation.
You can view the new version there: ${object.get_page_url}
]]></field>
</record>
</data> </data>
</openerp> </openerp>