From 858afe6390552720bb49f34b5314b68e207d7882 Mon Sep 17 00:00:00 2001
From: Giorgio Borelli
Date: Tue, 11 Nov 2014 18:55:52 +0100
Subject: [PATCH 01/11] start porting
---
.../document_page_approval.py | 243 ----------------
.../document_page_view.xml | 51 ----
.../__init__.py | 3 +-
.../__openerp__.py | 6 +-
.../document_page_approval.py | 262 ++++++++++++++++++
document_page_approval/document_page_view.xml | 74 +++++
.../document_page_wkfl.xml | 21 +-
.../i18n/document_page_approval.pot | 0
.../i18n/fr.po | 0
.../images/category.png | Bin
.../images/page_history.png | Bin
.../images/page_history_list.png | Bin
.../security/document_page_security.xml | 0
.../security/ir.model.access.csv | 0
14 files changed, 352 insertions(+), 308 deletions(-)
delete mode 100644 __unported__/document_page_approval/document_page_approval.py
delete mode 100644 __unported__/document_page_approval/document_page_view.xml
rename {__unported__/document_page_approval => document_page_approval}/__init__.py (96%)
rename {__unported__/document_page_approval => document_page_approval}/__openerp__.py (97%)
create mode 100644 document_page_approval/document_page_approval.py
create mode 100644 document_page_approval/document_page_view.xml
rename {__unported__/document_page_approval => document_page_approval}/document_page_wkfl.xml (89%)
rename {__unported__/document_page_approval => document_page_approval}/i18n/document_page_approval.pot (100%)
rename {__unported__/document_page_approval => document_page_approval}/i18n/fr.po (100%)
rename {__unported__/document_page_approval => document_page_approval}/images/category.png (100%)
rename {__unported__/document_page_approval => document_page_approval}/images/page_history.png (100%)
rename {__unported__/document_page_approval => document_page_approval}/images/page_history_list.png (100%)
rename {__unported__/document_page_approval => document_page_approval}/security/document_page_security.xml (100%)
rename {__unported__/document_page_approval => document_page_approval}/security/ir.model.access.csv (100%)
diff --git a/__unported__/document_page_approval/document_page_approval.py b/__unported__/document_page_approval/document_page_approval.py
deleted file mode 100644
index 5bc78b9e..00000000
--- a/__unported__/document_page_approval/document_page_approval.py
+++ /dev/null
@@ -1,243 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2013 Savoir-faire Linux ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-from datetime import datetime
-from openerp.osv import fields, orm
-from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
-
-
-class document_page_history_wkfl(orm.Model):
- _inherit = 'document.page.history'
-
- def page_approval_draft(self, cr, uid, ids, context=None):
- self.write(cr, uid, ids, {'state': 'draft'})
-
- template_id = self.pool.get('ir.model.data').get_object_reference(
- cr, uid,
- 'document_page_approval',
- 'email_template_new_draft_need_approval')[1]
- for page in self.browse(cr, uid, ids, context=context):
- 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, context=None):
- self.write(cr, uid, ids, {
- 'state': 'approved',
- 'approved_date': datetime.now().strftime(
- DEFAULT_SERVER_DATETIME_FORMAT),
- 'approved_uid': uid
- }, context=context)
- return True
-
- def can_user_approve_page(self, cr, uid, ids, name, args, context=None):
- user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
- res = {}
- for page in self.browse(cr, uid, ids, context=context):
- res[page.id] = self.can_user_approve_this_page(page.page_id, user)
-
- return res
-
- def can_user_approve_this_page(self, page, user):
- if page:
- res = page.approver_gid in user.groups_id
- res = res or self.can_user_approve_this_page(page.parent_id, user)
- else:
- res = False
-
- 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, context=context)
-
- for user in users:
- if user.email:
- emails += 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, context=context)
- 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 = {
- 'state': fields.selection([
- ('draft', 'Draft'),
- ('approved', 'Approved')], 'Status', readonly=True),
- 'approved_date': fields.datetime("Approved Date"),
- '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),
- '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="URL",
- type='text', store=False),
- }
-
-
-class document_page_approval(orm.Model):
- _inherit = 'document.page'
-
- def _get_display_content(self, cr, uid, ids, name, args, context=None):
- res = {}
- for page in self.browse(cr, uid, ids, context=context):
- content = ""
- if page.type == "category":
- content = self._get_page_index(cr, uid, page, link=False)
- else:
- history = self.pool.get('document.page.history')
- if self.is_approval_required(page):
- history_ids = history.search(
- cr, uid, [
- ('page_id', '=', page.id),
- ('state', '=', 'approved')
- ], limit=1, order='create_date DESC')
- for h in history.browse(cr, uid, history_ids,
- context=context):
- content = h.content
- else:
- content = page.content
- res[page.id] = content
- return res
-
- def _get_approved_date(self, cr, uid, ids, name, args, context=None):
- res = {}
- for page in self.browse(cr, uid, ids, context=context):
- if self.is_approval_required(page):
- history = self.pool.get('document.page.history')
- history_ids = history.search(
- cr, uid, [
- ('page_id', '=', page.id),
- ('state', '=', 'approved')
- ], limit=1, order='create_date DESC')
- approved_date = False
- for h in history.browse(cr, uid, history_ids):
- approved_date = h.approved_date
- res[page.id] = approved_date
- else:
- res[page.id] = ""
-
- return res
-
- def _get_approved_uid(self, cr, uid, ids, name, args, context=None):
- res = {}
- for page in self.browse(cr, uid, ids, context=context):
- if self.is_approval_required(page):
- history = self.pool.get('document.page.history')
- history_ids = history.search(cr, uid, [
- ('page_id', '=', page.id),
- ('state', '=', 'approved')], limit=1,
- order='create_date DESC')
- approved_uid = False
- for h in history.browse(cr, uid, history_ids):
- approved_uid = h.approved_uid.id
- res[page.id] = approved_uid
- else:
- res[page.id] = ""
-
- return res
-
- def _is_parent_approval_required(self, cr, uid, ids, name, args,
- context=None):
- res = {}
- for page in self.browse(cr, uid, ids, context=context):
- res[page.id] = self.is_approval_required(page)
-
- return res
-
- def is_approval_required(self, page):
- if page:
- res = page.approval_required
- res = res or self.is_approval_required(page.parent_id)
- else:
- res = False
-
- return res
-
- _columns = {
- 'display_content': fields.function(
- _get_display_content, string='Displayed Content', type='text'),
- 'approved_date': fields.function(
- _get_approved_date, string="Approved Date", type='datetime'),
- 'approved_uid': fields.function(
- _get_approved_uid, string="Approved By", type='many2one',
- obj='res.users'),
- 'approval_required': fields.boolean("Require approval"),
- 'is_parent_approval_required': fields.function(
- _is_parent_approval_required, string="parent approval",
- type='boolean'),
- 'approver_gid': fields.many2one("res.groups", "Approver group"),
- }
diff --git a/__unported__/document_page_approval/document_page_view.xml b/__unported__/document_page_approval/document_page_view.xml
deleted file mode 100644
index 04ef551c..00000000
--- a/__unported__/document_page_approval/document_page_view.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
- document.page.history.form
- document.page.history
-
-
-
-
-
-
-
-
-
- document.page.form
- document.page
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- document.page.history.tree
- document.page.history
-
-
-
-
-
-
-
-
-
-
diff --git a/__unported__/document_page_approval/__init__.py b/document_page_approval/__init__.py
similarity index 96%
rename from __unported__/document_page_approval/__init__.py
rename to document_page_approval/__init__.py
index d0594caf..d2b3bb9e 100644
--- a/__unported__/document_page_approval/__init__.py
+++ b/document_page_approval/__init__.py
@@ -18,5 +18,4 @@
# along with this program. If not, see .
#
##############################################################################
-
-import document_page_approval
+from . import document_page_approval
diff --git a/__unported__/document_page_approval/__openerp__.py b/document_page_approval/__openerp__.py
similarity index 97%
rename from __unported__/document_page_approval/__openerp__.py
rename to document_page_approval/__openerp__.py
index 5581d344..adb67331 100644
--- a/__unported__/document_page_approval/__openerp__.py
+++ b/document_page_approval/__openerp__.py
@@ -45,14 +45,14 @@ Scenario
'depends': [
'document_page',
'email_template',
- ],
+ ],
'data': [
'document_page_wkfl.xml',
'document_page_view.xml',
'security/document_page_security.xml',
'security/ir.model.access.csv',
- ],
- 'installable': False,
+ ],
+ 'installable': True,
'auto_install': False,
'images': [
'images/category.png',
diff --git a/document_page_approval/document_page_approval.py b/document_page_approval/document_page_approval.py
new file mode 100644
index 00000000..842a32a3
--- /dev/null
+++ b/document_page_approval/document_page_approval.py
@@ -0,0 +1,262 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2013 Savoir-faire Linux ().
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from datetime import datetime
+from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
+from openerp import models, fields
+
+
+class document_page_history_wkfl(models.Model):
+ _inherit = 'document.page.history'
+
+ def page_approval_draft(self, cr, uid, ids, context=None):
+ self.write(cr, uid, ids, {'state': 'draft'})
+ import pdb; pdb.set_trace( )
+ template_id = self.pool.get('ir.model.data').get_object_reference(
+ cr, uid,
+ 'document_page_approval',
+ 'email_template_new_draft_need_approval')[1]
+ for page in self:
+ if page.is_parent_approval_required:
+ self.pool.get('email.template').send_mail(
+ template_id,
+ page.id,
+ force_send=True
+ )
+
+ return True
+
+ def page_approval_approved(self, cr, uid, ids, context=None):
+ self.write(cr, uid, ids, {
+ 'state': 'approved',
+ 'approved_date': datetime.now().strftime(
+ DEFAULT_SERVER_DATETIME_FORMAT),
+ 'approved_uid': uid
+ }, context=context)
+ return True
+
+ def _can_user_approve_page(self):
+ user = self.env.user
+ for page in self:
+ page.can_user_approve_page = page.can_user_approve_this_page(
+ page.page_id,
+ user
+ )
+
+ def can_user_approve_this_page(self, page, user):
+ if page:
+ res = page.approver_gid in user.groups_id
+ res = res or self.can_user_approve_this_page(page.parent_id, user)
+ else:
+ res = False
+ return res
+
+ def get_approvers_guids(self):
+ res = {}
+ for page in self:
+ 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):
+ res = {}
+ for page in self:
+ emails = ''
+ guids = self.get_approvers_guids()
+ import pdb; pdb.set_trace( )
+ uids = self.pool.get('res.users').search(
+ cr, uid, [('groups_id', 'in', guids[id])])
+ users = self.pool.get('res.users').browse(
+ cr, uid, uids, context=context)
+
+ for user in users:
+ if user.email:
+ emails += 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, context=context)
+ if empl.work_email:
+ emails += empl.work_email
+ emails += ','
+
+ emails = emails[:-1]
+ page.get_approvers_email = emails
+
+ def _get_page_url(self):
+ res = {}
+ for page in self:
+ import pdb; pdb.set_trace( )
+ base_url = self.env['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
+
+ state = fields.Selection(
+ [('draft', 'Draft'), ('approved', 'Approved')],
+ 'Status',
+ readonly=True
+ )
+
+ approved_date = fields.Datetime("Approved Date")
+
+ approved_uid = fields.Many2one(
+ 'res.users',
+ "Approved By"
+ )
+
+ is_parent_approval_required = fields.Boolean(
+ related='page_id.is_parent_approval_required',
+ string="parent approval",
+ store=False
+ )
+
+ can_user_approve_page = fields.Boolean(
+ compute=_can_user_approve_page,
+ string="can user approve this page",
+ store=False
+ )
+ get_approvers_email = fields.Text(
+ compute=_get_approvers_email,
+ string="get all approvers email",
+ store=False
+ )
+ get_page_url = fields.Text(
+ compute=_get_page_url,
+ string="URL",
+ store=False
+ )
+
+
+class document_page_approval(models.Model):
+ _inherit = 'document.page'
+
+ def _get_display_content(self):
+ res = {}
+ for page in self:
+ content = ""
+ if page.type == "category":
+ content = self._get_page_index(page, link=False)
+ else:
+ history = self.env['document.page.history']
+ if self.is_approval_required(page):
+ history_ids = history.search(
+ [
+ ('page_id', '=', page.id),
+ ('state', '=', 'approved')
+ ],
+ limit=1,
+ order='create_date DESC'
+ )
+ content = history_ids.content
+ else:
+ content = page.content
+ page.display_content = content
+
+ def _get_approved_date(self):
+ for page in self:
+ approved_date = False
+ if self.is_approval_required(page):
+ history = self.env['document.page.history']
+ history_ids = history.search(
+ [
+ ('page_id', '=', page.id),
+ ('state', '=', 'approved')
+ ],
+ limit=1,
+ order='create_date DESC'
+ )
+ approved_date = history_ids.approved_date
+ page.approved_date = approved_date
+
+ def _get_approved_uid(self):
+ for page in self:
+ approved_uid = False
+ if self.is_approval_required(page):
+ history = self.env['document.page.history']
+ history_ids = history.search(
+ [
+ ('page_id', '=', page.id),
+ ('state', '=', 'approved')
+ ],
+ limit=1,
+ order='create_date DESC'
+ )
+ approved_uid = history_ids.approved_uid.id
+ page.approved_uid = approved_uid
+
+ def _is_parent_approval_required(self):
+ for page in self:
+ page.is_parent_approval_required = self.is_approval_required(page)
+
+ def is_approval_required(self, page):
+ if page:
+ res = page.approval_required
+ res = res or self.is_approval_required(page.parent_id)
+ else:
+ res = False
+ return res
+
+ display_content = fields.Text(
+ compute=_get_display_content,
+ string='Displayed Content'
+ )
+
+ approved_date = fields.Datetime(
+ compute=_get_approved_date,
+ string="Approved Date"
+ )
+
+ approved_uid = fields.Many2one(
+ 'res.users',
+ compute=_get_approved_uid,
+ string="Approved By",
+ )
+
+ approval_required = fields.Boolean("Require approval")
+
+ is_parent_approval_required = fields.Boolean(
+ compute=_is_parent_approval_required,
+ string="parent approval"
+ )
+
+ approver_gid = fields.Many2one(
+ "res.groups",
+ "Approver group"
+ )
diff --git a/document_page_approval/document_page_view.xml b/document_page_approval/document_page_view.xml
new file mode 100644
index 00000000..03c802bd
--- /dev/null
+++ b/document_page_approval/document_page_view.xml
@@ -0,0 +1,74 @@
+
+
+
+
+ document.page.history.form
+ document.page.history
+
+
+
+
+
+
+
+
+
+ document.page.form
+ document.page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ document.page.history.tree
+ document.page.history
+
+
+
+
+
+
+
+
+
+
diff --git a/__unported__/document_page_approval/document_page_wkfl.xml b/document_page_approval/document_page_wkfl.xml
similarity index 89%
rename from __unported__/document_page_approval/document_page_wkfl.xml
rename to document_page_approval/document_page_wkfl.xml
index f92d8463..77454e1d 100644
--- a/__unported__/document_page_approval/document_page_wkfl.xml
+++ b/document_page_approval/document_page_wkfl.xml
@@ -7,29 +7,31 @@
document.page.history
True
-
+
-
+
True
draft
function
page_approval_draft()
-
+
-
+
approved
function
page_approval_approved()
True
-
+
page_approval_approve
-
+
@@ -41,8 +43,9 @@
-
-
+
+
Automated new draft need approval Notification Mail
${object.create_uid.company_id.email or 'noreply@localhost.com'}
New version of "${object.page_id.name}" to approve
@@ -56,7 +59,7 @@
The page "${object.page_id.name}" has been modified and need your approval.
You can review the new version here : ${object.get_page_url}
-
+
Have a great day.
--
OpenERP
]]>
diff --git a/__unported__/document_page_approval/i18n/document_page_approval.pot b/document_page_approval/i18n/document_page_approval.pot
similarity index 100%
rename from __unported__/document_page_approval/i18n/document_page_approval.pot
rename to document_page_approval/i18n/document_page_approval.pot
diff --git a/__unported__/document_page_approval/i18n/fr.po b/document_page_approval/i18n/fr.po
similarity index 100%
rename from __unported__/document_page_approval/i18n/fr.po
rename to document_page_approval/i18n/fr.po
diff --git a/__unported__/document_page_approval/images/category.png b/document_page_approval/images/category.png
similarity index 100%
rename from __unported__/document_page_approval/images/category.png
rename to document_page_approval/images/category.png
diff --git a/__unported__/document_page_approval/images/page_history.png b/document_page_approval/images/page_history.png
similarity index 100%
rename from __unported__/document_page_approval/images/page_history.png
rename to document_page_approval/images/page_history.png
diff --git a/__unported__/document_page_approval/images/page_history_list.png b/document_page_approval/images/page_history_list.png
similarity index 100%
rename from __unported__/document_page_approval/images/page_history_list.png
rename to document_page_approval/images/page_history_list.png
diff --git a/__unported__/document_page_approval/security/document_page_security.xml b/document_page_approval/security/document_page_security.xml
similarity index 100%
rename from __unported__/document_page_approval/security/document_page_security.xml
rename to document_page_approval/security/document_page_security.xml
diff --git a/__unported__/document_page_approval/security/ir.model.access.csv b/document_page_approval/security/ir.model.access.csv
similarity index 100%
rename from __unported__/document_page_approval/security/ir.model.access.csv
rename to document_page_approval/security/ir.model.access.csv
From 663ab547e3836c76e1cb14ec22b7995567578228 Mon Sep 17 00:00:00 2001
From: Giorgio Borelli
Date: Wed, 12 Nov 2014 10:06:22 +0100
Subject: [PATCH 02/11] fix act_draft and minor ui fix
---
document_page_approval/__openerp__.py | 1 +
.../data/email_template.xml | 31 +++++++++++++
.../document_page_approval.py | 44 +++++++++----------
document_page_approval/document_page_view.xml | 22 ++++------
document_page_approval/document_page_wkfl.xml | 37 ----------------
5 files changed, 62 insertions(+), 73 deletions(-)
create mode 100644 document_page_approval/data/email_template.xml
diff --git a/document_page_approval/__openerp__.py b/document_page_approval/__openerp__.py
index adb67331..3cd5afd7 100644
--- a/document_page_approval/__openerp__.py
+++ b/document_page_approval/__openerp__.py
@@ -49,6 +49,7 @@ Scenario
'data': [
'document_page_wkfl.xml',
'document_page_view.xml',
+ 'data/email_template.xml',
'security/document_page_security.xml',
'security/ir.model.access.csv',
],
diff --git a/document_page_approval/data/email_template.xml b/document_page_approval/data/email_template.xml
new file mode 100644
index 00000000..af77719d
--- /dev/null
+++ b/document_page_approval/data/email_template.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+ Automated new draft need approval Notification Mail
+ ${object.create_uid.company_id.email or 'noreply@localhost.com'}
+ New version of "${object.page_id.name}" to approve
+ ${object.get_approvers_email}
+
+
+ ${object.create_uid.partner_id.lang}
+ Hello,
+
+The page "${object.page_id.name}" has been modified and need your approval.
+
+You can review the new version here : ${object.get_page_url}
+
+Have a great day.
+--
+OpenERP
]]>
+
+
+
+
+
diff --git a/document_page_approval/document_page_approval.py b/document_page_approval/document_page_approval.py
index 842a32a3..9c088942 100644
--- a/document_page_approval/document_page_approval.py
+++ b/document_page_approval/document_page_approval.py
@@ -29,19 +29,19 @@ class document_page_history_wkfl(models.Model):
def page_approval_draft(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'draft'})
- import pdb; pdb.set_trace( )
template_id = self.pool.get('ir.model.data').get_object_reference(
cr, uid,
'document_page_approval',
'email_template_new_draft_need_approval')[1]
- for page in self:
+ for page in self.browse(cr, uid, ids, context=context):
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, context=None):
@@ -92,41 +92,39 @@ class document_page_history_wkfl(models.Model):
for page in self:
emails = ''
guids = self.get_approvers_guids()
- import pdb; pdb.set_trace( )
- uids = self.pool.get('res.users').search(
- cr, uid, [('groups_id', 'in', guids[id])])
- users = self.pool.get('res.users').browse(
- cr, uid, uids, context=context)
+ uids = [i.id for i in self.env['res.users'].search([
+ ('groups_id', 'in', guids[page.id])
+ ])]
+ users = self.env['res.users'].browse(uids)
for user in users:
if user.email:
emails += 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, context=context)
+ empl = self.env['hr.employee'].search([
+ ('login', '=', user.login)
+ ])
if empl.work_email:
emails += empl.work_email
emails += ','
- emails = emails[:-1]
- page.get_approvers_email = emails
+ page.get_approvers_email = emails[:-1]
def _get_page_url(self):
- res = {}
for page in self:
- import pdb; pdb.set_trace( )
base_url = self.env['ir.config_parameter'].get_param(
- cr, uid, 'web.base.url', default='http://localhost:8069',
- context=context)
+ 'web.base.url',
+ default='http://localhost:8069'
+ )
- res[id] = base_url + (
- '/#db=%s&id=%s&view_type=form&model=document.page.history' %
- (cr.dbname, id))
-
- return res
+ page.get_page_url = (
+ '{}/#db={}&id={}&view_type=form&'
+ 'model=document.page.history').format(
+ base_url,
+ self.env.cr.dbname,
+ page.id
+ )
state = fields.Selection(
[('draft', 'Draft'), ('approved', 'Approved')],
diff --git a/document_page_approval/document_page_view.xml b/document_page_approval/document_page_view.xml
index 03c802bd..3cf9e574 100644
--- a/document_page_approval/document_page_view.xml
+++ b/document_page_approval/document_page_view.xml
@@ -36,22 +36,18 @@
-
-
-
-
+
+
+
-
-
-
-
+
+
diff --git a/document_page_approval/document_page_wkfl.xml b/document_page_approval/document_page_wkfl.xml
index 77454e1d..a4a94b14 100644
--- a/document_page_approval/document_page_wkfl.xml
+++ b/document_page_approval/document_page_wkfl.xml
@@ -40,41 +40,4 @@
-
-
-
-
-
- Automated new draft need approval Notification Mail
- ${object.create_uid.company_id.email or 'noreply@localhost.com'}
- New version of "${object.page_id.name}" to approve
- ${object.get_approvers_email}
-
-
- ${object.create_uid.partner_id.lang}
- Hello,
-
-The page "${object.page_id.name}" has been modified and need your approval.
-
-You can review the new version here : ${object.get_page_url}
-
-Have a great day.
---
-OpenERP
]]>
-
-
-
-
-
From cddda2b3729e7a20ef9b893dc1b38ab585aa2242 Mon Sep 17 00:00:00 2001
From: Giorgio Borelli
Date: Thu, 13 Nov 2014 09:27:28 +0100
Subject: [PATCH 03/11] remove unused variables
---
document_page_approval/document_page_approval.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/document_page_approval/document_page_approval.py b/document_page_approval/document_page_approval.py
index 9c088942..1d5002d5 100644
--- a/document_page_approval/document_page_approval.py
+++ b/document_page_approval/document_page_approval.py
@@ -88,7 +88,6 @@ class document_page_history_wkfl(models.Model):
return res
def _get_approvers_email(self):
- res = {}
for page in self:
emails = ''
guids = self.get_approvers_guids()
@@ -166,7 +165,6 @@ class document_page_approval(models.Model):
_inherit = 'document.page'
def _get_display_content(self):
- res = {}
for page in self:
content = ""
if page.type == "category":
From d0f538e3dccdbc5b7cc9bed077940b8a10b70eb2 Mon Sep 17 00:00:00 2001
From: Giorgio Borelli
Date: Mon, 17 Nov 2014 11:37:53 +0100
Subject: [PATCH 04/11] change order of xml data files
---
document_page_approval/__openerp__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/document_page_approval/__openerp__.py b/document_page_approval/__openerp__.py
index 3cd5afd7..1eb2f06b 100644
--- a/document_page_approval/__openerp__.py
+++ b/document_page_approval/__openerp__.py
@@ -47,9 +47,9 @@ Scenario
'email_template',
],
'data': [
+ 'data/email_template.xml',
'document_page_wkfl.xml',
'document_page_view.xml',
- 'data/email_template.xml',
'security/document_page_security.xml',
'security/ir.model.access.csv',
],
From 9ad62013038d843ec2f37f6df1d17f94e94e3f53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Faure-Lacroix?=
Date: Mon, 29 Dec 2014 17:31:54 +0300
Subject: [PATCH 05/11] Comment workflow that cause the error
It should work but further errors could help understand what's going
---
document_page_approval/document_page_wkfl.xml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/document_page_approval/document_page_wkfl.xml b/document_page_approval/document_page_wkfl.xml
index a4a94b14..34ef174a 100644
--- a/document_page_approval/document_page_wkfl.xml
+++ b/document_page_approval/document_page_wkfl.xml
@@ -8,6 +8,7 @@
True
+
Date: Mon, 29 Dec 2014 19:05:46 +0300
Subject: [PATCH 06/11] Commented other necessary part
---
document_page_approval/document_page_wkfl.xml | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/document_page_approval/document_page_wkfl.xml b/document_page_approval/document_page_wkfl.xml
index 34ef174a..522c78ee 100644
--- a/document_page_approval/document_page_wkfl.xml
+++ b/document_page_approval/document_page_wkfl.xml
@@ -8,6 +8,15 @@
True
+
+
+ approved
+ function
+ page_approval_approved()
+ True
+
+
-
-
-
- approved
- function
- page_approval_approved()
- True
-
@@ -39,6 +38,7 @@
edit
+ -->
From 4a4088545b964c4e8134eb36b4c8a00f08e967c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Faure-Lacroix?=
Date: Tue, 10 Mar 2015 17:57:13 +0300
Subject: [PATCH 07/11] Add back workflow
---
document_page_approval/document_page_wkfl.xml | 2 --
1 file changed, 2 deletions(-)
diff --git a/document_page_approval/document_page_wkfl.xml b/document_page_approval/document_page_wkfl.xml
index 522c78ee..7dc85019 100644
--- a/document_page_approval/document_page_wkfl.xml
+++ b/document_page_approval/document_page_wkfl.xml
@@ -17,7 +17,6 @@
True
-
From 605987d35885b776f28a669975812fb94d9b299c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Faure-Lacroix?=
Date: Tue, 10 Mar 2015 18:43:55 +0300
Subject: [PATCH 08/11] Add dependency to knowledge
---
document_page/__openerp__.py | 2 +-
document_page_approval/__openerp__.py | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/document_page/__openerp__.py b/document_page/__openerp__.py
index 4761340c..769422ea 100644
--- a/document_page/__openerp__.py
+++ b/document_page/__openerp__.py
@@ -32,7 +32,7 @@ Web pages
'website': 'http://www.openerp.com/',
'license': 'AGPL-3',
'depends': [
- 'knowledge'
+ 'knowledge',
],
'data': [
'wizard/document_page_create_menu_view.xml',
diff --git a/document_page_approval/__openerp__.py b/document_page_approval/__openerp__.py
index 1283d8b7..dcb7429b 100644
--- a/document_page_approval/__openerp__.py
+++ b/document_page_approval/__openerp__.py
@@ -43,6 +43,7 @@ Scenario
* Users reading the page see the last approved version.
""",
'depends': [
+ 'knowledge',
'document_page',
'email_template',
],
From 048caadd1ab0fbae95a66535ef8eabc270f3c894 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Faure-Lacroix?=
Date: Wed, 11 Mar 2015 10:14:51 +0300
Subject: [PATCH 09/11] Adding hack in document_page_history to allow calling
method that don't exists
---
document_page/document_page.py | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/document_page/document_page.py b/document_page/document_page.py
index 8983ba00..752628c3 100644
--- a/document_page/document_page.py
+++ b/document_page/document_page.py
@@ -18,9 +18,12 @@
# along with this program. If not, see .
#
##############################################################################
+import logging
import difflib
from openerp import models, fields, api, _
+_logger = logging.getLogger(__name__)
+
class document_page(models.Model):
_name = "document.page"
@@ -177,3 +180,11 @@ class document_page_history(models.Model):
"Revision-{}".format(v2),
context=True
)
+
+ def __getattr__(self, attr):
+ """Return a dummy callabale"""
+ _logger.warning(
+ "Trying to access attribute %s on document_page_history",
+ attr
+ )
+ return (lambda *a, **b: None)
From a6c01b53fe022b7469de96fd4014f4729007040e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Faure-Lacroix?=
Date: Wed, 11 Mar 2015 10:56:06 +0300
Subject: [PATCH 10/11] document_page_history don't have _sql attribute
---
document_page/document_page.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/document_page/document_page.py b/document_page/document_page.py
index 752628c3..75cc3abe 100644
--- a/document_page/document_page.py
+++ b/document_page/document_page.py
@@ -183,6 +183,9 @@ class document_page_history(models.Model):
def __getattr__(self, attr):
"""Return a dummy callabale"""
+ if attr in ['_sql']:
+ raise AttributeError
+
_logger.warning(
"Trying to access attribute %s on document_page_history",
attr
From d0157ee97567f18d906e115ca6ff40942c52bd0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Faure-Lacroix?=
Date: Wed, 11 Mar 2015 11:26:26 +0300
Subject: [PATCH 11/11] Filter more fields
---
document_page/document_page.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/document_page/document_page.py b/document_page/document_page.py
index 75cc3abe..57e6d050 100644
--- a/document_page/document_page.py
+++ b/document_page/document_page.py
@@ -183,7 +183,7 @@ class document_page_history(models.Model):
def __getattr__(self, attr):
"""Return a dummy callabale"""
- if attr in ['_sql']:
+ if attr in ['_sql', 'init', '_ids']:
raise AttributeError
_logger.warning(