diff --git a/document_page_approval/__init__.py b/document_page_approval/__init__.py deleted file mode 100644 index d0594caf..00000000 --- a/document_page_approval/__init__.py +++ /dev/null @@ -1,22 +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 . -# -############################################################################## - -import document_page_approval diff --git a/document_page_approval/__openerp__.py b/document_page_approval/__openerp__.py deleted file mode 100644 index 75bbc31d..00000000 --- a/document_page_approval/__openerp__.py +++ /dev/null @@ -1,56 +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 . -# -############################################################################## - -{ - 'name': 'Document Page Approval', - 'version': '1.0', - "author": "Savoir-faire Linux", - "website": "http://www.savoirfairelinux.com", - "license": "AGPL-3", - 'category': 'Knowledge Management', - 'description': """ -This module adds a workflow to approve page modification and show the approved version by default. - -Scenario -======== - -* Set a valid email address on the company settings. -* Create a new page category and set an approver group. Make sure users belonging to that group - have valid email addresses. -* Create a new page and choose the previously created category. -* A notification is sent to the group with a link to the page history to review. -* Depending on the review, the page history is approved or not. -* Users reading the page see the last approved version. - """, - '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': True, - 'auto_install': False, - 'images': ['images/category.png', 'images/page_history_list.png', 'images/page_history.png'], -} diff --git a/document_page_approval/document_page_approval.py b/document_page_approval/document_page_approval.py deleted file mode 100644 index 8feeabd9..00000000 --- a/document_page_approval/document_page_approval.py +++ /dev/null @@ -1,223 +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/document_page_approval/document_page_view.xml b/document_page_approval/document_page_view.xml deleted file mode 100644 index 04ef551c..00000000 --- a/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/document_page_approval/document_page_wkfl.xml b/document_page_approval/document_page_wkfl.xml deleted file mode 100644 index f92d8463..00000000 --- a/document_page_approval/document_page_wkfl.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - document.page.history.aproval.wkf - document.page.history - True - - - - - True - draft - function - page_approval_draft() - - - - - approved - function - page_approval_approved() - True - - - - - - page_approval_approve - - - - - - edit - - - - - - - - - - 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/i18n/document_page_approval.pot b/document_page_approval/i18n/document_page_approval.pot deleted file mode 100644 index 4ddc9733..00000000 --- a/document_page_approval/i18n/document_page_approval.pot +++ /dev/null @@ -1,110 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * document_page_approval -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-19 03:58+0000\n" -"PO-Revision-Date: 2013-07-19 03:58+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: document_page_approval -#: field:document.page.history,state:0 -msgid "Status" -msgstr "" - -#. module: document_page_approval -#: field:document.page,approval_required:0 -msgid "Require approval" -msgstr "" - -#. module: document_page_approval -#: field:document.page,is_parent_approval_required:0 -#: field:document.page.history,is_parent_approval_required:0 -msgid "parent approval" -msgstr "" - -#. module: document_page_approval -#: model:email.template,body_html:document_page_approval.email_template_new_draft_need_approval -msgid "\n" -"

Hello,

\n" -"\n" -"

The page \"${object.page_id.name}\" has been modified and need your approval.

\n" -"\n" -"

You can review the new version here : ${object.get_page_url}

\n" -" \n" -"

Have a great day.
\n" -"--
\n" -"OpenERP

\n" -" " -msgstr "" - -#. module: document_page_approval -#: model:ir.model,name:document_page_approval.model_document_page -msgid "Document Page" -msgstr "" - -#. module: document_page_approval -#: field:document.page,approved_uid:0 -#: field:document.page.history,approved_uid:0 -msgid "Approved By" -msgstr "" - -#. module: document_page_approval -#: model:email.template,subject:document_page_approval.email_template_new_draft_need_approval -msgid "New version of \"${object.page_id.name}\" to approve" -msgstr "" - -#. module: document_page_approval -#: selection:document.page.history,state:0 -msgid "Draft" -msgstr "" - -#. module: document_page_approval -#: field:document.page.history,get_page_url:0 -msgid "URL" -msgstr "" - -#. module: document_page_approval -#: field:document.page,approved_date:0 -#: field:document.page.history,approved_date:0 -msgid "Approved Date" -msgstr "" - -#. module: document_page_approval -#: field:document.page.history,can_user_approve_page:0 -msgid "can user approve this page" -msgstr "" - -#. module: document_page_approval -#: field:document.page,approver_gid:0 -msgid "Approver group" -msgstr "" - -#. module: document_page_approval -#: model:ir.model,name:document_page_approval.model_document_page_history -msgid "Document Page History" -msgstr "" - -#. module: document_page_approval -#: view:document.page.history:0 -msgid "Approve" -msgstr "" - -#. module: document_page_approval -#: selection:document.page.history,state:0 -msgid "Approved" -msgstr "" - -#. module: document_page_approval -#: field:document.page.history,get_approvers_email:0 -msgid "get all approvers email" -msgstr "" - diff --git a/document_page_approval/i18n/fr.po b/document_page_approval/i18n/fr.po deleted file mode 100644 index 26573fa4..00000000 --- a/document_page_approval/i18n/fr.po +++ /dev/null @@ -1,119 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * document_page_approval -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-19 03:58+0000\n" -"PO-Revision-Date: 2013-07-19 03:58+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: document_page_approval -#: field:document.page.history,state:0 -msgid "Status" -msgstr "Statut" - -#. module: document_page_approval -#: field:document.page,approval_required:0 -msgid "Require approval" -msgstr "Nécessite une approbation" - -#. module: document_page_approval -#: field:document.page,is_parent_approval_required:0 -#: field:document.page.history,is_parent_approval_required:0 -msgid "parent approval" -msgstr "Approbation parente" - -#. module: document_page_approval -#: model:email.template,body_html:document_page_approval.email_template_new_draft_need_approval -msgid "\n" -"

Hello,

\n" -"\n" -"

The page \"${object.page_id.name}\" has been modified and need your approval.

\n" -"\n" -"

You can review the new version here : ${object.get_page_url}

\n" -" \n" -"

Have a great day.
\n" -"--
\n" -"OpenERP

\n" -" " -msgstr "\n" -"

Bonjour,

\n" -"\n" -"

La page \"${object.page_id.name}\" a été modifié et demande votre approbation.

\n" -"\n" -"

Vous pouvez réviser la nouvelle version ici : ${object.get_page_url}

\n" -" \n" -"

Bonne journée.
\n" -"--
\n" -"OpenERP

\n" -" " - -#. module: document_page_approval -#: model:ir.model,name:document_page_approval.model_document_page -msgid "Document Page" -msgstr "Page" - -#. module: document_page_approval -#: field:document.page,approved_uid:0 -#: field:document.page.history,approved_uid:0 -msgid "Approved By" -msgstr "Approuvée par" - -#. module: document_page_approval -#: model:email.template,subject:document_page_approval.email_template_new_draft_need_approval -msgid "New version of \"${object.page_id.name}\" to approve" -msgstr "Nouvelle version de \"${object.page_id.name}\" à approuver" - -#. module: document_page_approval -#: selection:document.page.history,state:0 -msgid "Draft" -msgstr "Brouillon" - -#. module: document_page_approval -#: field:document.page.history,get_page_url:0 -msgid "URL" -msgstr "URL" - -#. module: document_page_approval -#: field:document.page,approved_date:0 -#: field:document.page.history,approved_date:0 -msgid "Approved Date" -msgstr "Date d'approbation" - -#. module: document_page_approval -#: field:document.page.history,can_user_approve_page:0 -msgid "can user approve this page" -msgstr "Est-ce que l'usager peut approuver cette page ?" - -#. module: document_page_approval -#: field:document.page,approver_gid:0 -msgid "Approver group" -msgstr "Groupe approbateur" - -#. module: document_page_approval -#: model:ir.model,name:document_page_approval.model_document_page_history -msgid "Document Page History" -msgstr "Historique de la page" - -#. module: document_page_approval -#: view:document.page.history:0 -msgid "Approve" -msgstr "Approuver" - -#. module: document_page_approval -#: selection:document.page.history,state:0 -msgid "Approved" -msgstr "Approuvée" - -#. module: document_page_approval -#: field:document.page.history,get_approvers_email:0 -msgid "get all approvers email" -msgstr "Récupérer toutes les adresses courriels des approbateurs" diff --git a/document_page_approval/images/category.png b/document_page_approval/images/category.png deleted file mode 100644 index b88e2091..00000000 Binary files a/document_page_approval/images/category.png and /dev/null differ diff --git a/document_page_approval/images/page_history.png b/document_page_approval/images/page_history.png deleted file mode 100644 index 80bee3c3..00000000 Binary files a/document_page_approval/images/page_history.png and /dev/null differ diff --git a/document_page_approval/images/page_history_list.png b/document_page_approval/images/page_history_list.png deleted file mode 100644 index a2f52232..00000000 Binary files a/document_page_approval/images/page_history_list.png and /dev/null differ diff --git a/document_page_approval/security/document_page_security.xml b/document_page_approval/security/document_page_security.xml deleted file mode 100644 index 7192d3f8..00000000 --- a/document_page_approval/security/document_page_security.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - Document approver - - - - diff --git a/document_page_approval/security/ir.model.access.csv b/document_page_approval/security/ir.model.access.csv deleted file mode 100644 index e4835836..00000000 --- a/document_page_approval/security/ir.model.access.csv +++ /dev/null @@ -1,2 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -document_page_history,document.page.history,model_document_page_history,base.group_document_approver_user,1,1,1,0 \ No newline at end of file