Skip to content

Commit

Permalink
Merge PR #509 into 17.0
Browse files Browse the repository at this point in the history
Signed-off-by pedrobaeza
  • Loading branch information
OCA-git-bot committed Nov 13, 2024
2 parents 827fc0d + 6438cd2 commit 743d95d
Show file tree
Hide file tree
Showing 94 changed files with 29,453 additions and 7 deletions.
8 changes: 2 additions & 6 deletions document_page/models/document_page_history.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,7 @@ def _get_diff(self, v1, v2):
context=True,
)

# TODO: Replace for _compute_display_name
def name_get(self):
return [(rec.id, "%s #%i" % (rec.page_id.name, rec.id)) for rec in self]

@api.depends("page_id")
@api.depends("page_id", "page_id.name")
def _compute_display_name(self):
for rec in self:
rec.display_name = rec.id, "%s #%i" % (rec.page_id.name, rec.id)
rec.display_name = f"{rec.page_id.name} #{rec.id}"
5 changes: 4 additions & 1 deletion document_page/security/document_page_security.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@
<field name="name">Manager</field>
<field name="category_id" ref="document_knowledge.module_category_knowledge" />
<field name="implied_ids" eval="[(4, ref('group_document_editor'))]" />
<field name="users" eval="[(4, ref('base.user_admin'))]" />
<field
name="users"
eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"
/>
</record>
<record model="ir.rule" id="document_page_rule">
<field name="name">document_page multi-company</field>
Expand Down
116 changes: 116 additions & 0 deletions document_page_approval/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
======================
Document Page Approval
======================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:eaa85b29d79372636ce9dda9fbf87f567e6702f38a57385384a168b28a517ff5
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fknowledge-lightgray.png?logo=github
:target: https://github.com/OCA/knowledge/tree/17.0/document_page_approval
:alt: OCA/knowledge
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/knowledge-17-0/knowledge-17-0-document_page_approval
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/knowledge&target_branch=17.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module adds a workflow to approve page modifications and show the
approved version by default.

**Table of contents**

.. contents::
:local:

Configuration
=============

To configure this module, you need to:

1. Set a valid email address on the company settings.
2. Go to Knowledge > Categories.
3. Create a new page category and set an approver group. Make sure users
belonging to that group have valid email addresses.

Usage
=====

To use this module, you need to:

1. Go to Knowledge > Pages
2. Create a new page and choose the previously created category.
3. A notification is sent to the approvers group with a link to the page
history to review.
4. Depending on the review, the page history is approved or not.
5. Users reading the page see the last approved version.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/knowledge/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/knowledge/issues/new?body=module:%20document_page_approval%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Savoir-faire Linux

Contributors
------------

- Odoo SA <info@odoo.com>

- Savoir-faire Linux <support@savoirfairelinux.com>

- Gervais Naoussi <gervaisnaoussi@gmail.com>

- Maxime Chambreuil <mchambreuil@opensourceintegrators.com>

- Iván Todorovich <ivan.todorovich@gmail.com>

- `Tecnativa <https://www.tecnativa.com>`__:

- Victor M.M. Torres
- Víctor Martínez

- `Guadaltech <https://www.guadaltech.es>`__:

- Fernando La Chica <fernando.lachica@guadaltech.es>

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/knowledge <https://github.com/OCA/knowledge/tree/17.0/document_page_approval>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
5 changes: 5 additions & 0 deletions document_page_approval/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import models
from .hooks import post_init_hook, uninstall_hook
25 changes: 25 additions & 0 deletions document_page_approval/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>).
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Document Page Approval",
"version": "17.0.1.0.0",
"author": "Savoir-faire Linux, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/knowledge",
"license": "AGPL-3",
"category": "Knowledge Management",
"depends": ["document_page", "mail"],
"data": [
"data/email_template.xml",
"views/document_page_approval.xml",
"security/document_page_security.xml",
],
"images": [
"images/category.png",
"images/page_history_list.png",
"images/page_history.png",
],
"post_init_hook": "post_init_hook",
"uninstall_hook": "uninstall_hook",
"installable": True,
}
38 changes: 38 additions & 0 deletions document_page_approval/data/email_template.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- If user wants to make upgrade-proof customizations to email templates, he should edit ir.model.data and check noupdate himself -->
<record id="email_template_new_draft_need_approval" model="mail.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.display_name}} needs your approval</field>
<field name="model_id" ref="model_document_page_history" />
<field name="auto_delete" eval="True" />
<field name="lang">{{object.create_uid.partner_id.lang}}</field>
<field name="body_html" type="html">
<p>Hello,</p>
<p><t t-out="object.create_uid.name" /> submited a new Change Request for <b
t-out="object.page_id.name"
/> and it needs your approval.</p>
<h1>
<a t-att-href="object.page_url" t-out="object.display_name" />
</h1>
<p><b>Modified by:</b> <t t-out="object.create_uid.name" /></p>
<p><b>Date:</b> <t t-out="object.create_date" /></p>
<t t-if="object.summary">
<h3>Summary</h3>
<p t-out="object.summary" />
</t>
<h3>Diff</h3>
<div style="overflow-x:scroll; font-size:0.85em; margin-bottom:2em;">
<t t-out="object.diff" />
</div>
<p>Have a great day.</p>
<br />
<p>Odoo</p>
</field>
</record>
</odoo>
25 changes: 25 additions & 0 deletions document_page_approval/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright 2018 Ivan Todorovich (<ivan.todorovich@gmail.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging

_logger = logging.getLogger(__name__)


def post_init_hook(env): # pragma: no cover
# Set all pre-existing pages history to approved
_logger.info("Setting history to approved.")
env.cr.execute(
"""
UPDATE document_page_history
SET state='approved',
approved_uid=create_uid,
approved_date=create_date
WHERE state IS NULL OR state = 'draft'
"""
)


def uninstall_hook(env): # pragma: no cover
# Remove unapproved pages
_logger.info("Deleting unapproved Change Requests.")
env.cr.execute("DELETE FROM document_page_history WHERE state != 'approved'")
Loading

0 comments on commit 743d95d

Please sign in to comment.