[MIG] document_page_approval: Migration to 17.0

This commit is contained in:
EdgarRetes 2024-10-02 10:40:29 -06:00 committed by Bhavesh Heliconia
parent 49f3835e45
commit a4972a014d
8 changed files with 47 additions and 55 deletions

View File

@ -3,7 +3,7 @@
{ {
"name": "Document Page Approval", "name": "Document Page Approval",
"version": "16.0.1.1.1", "version": "17.0.1.0.0",
"author": "Savoir-faire Linux, Odoo Community Association (OCA)", "author": "Savoir-faire Linux, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/knowledge", "website": "https://github.com/OCA/knowledge",
"license": "AGPL-3", "license": "AGPL-3",

View File

@ -5,10 +5,10 @@ import logging
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
def post_init_hook(cr, registry): # pragma: no cover def post_init_hook(env): # pragma: no cover
# Set all pre-existing pages history to approved # Set all pre-existing pages history to approved
_logger.info("Setting history to approved.") _logger.info("Setting history to approved.")
cr.execute( env.cr.execute(
""" """
UPDATE document_page_history UPDATE document_page_history
SET state='approved', SET state='approved',
@ -19,7 +19,7 @@ def post_init_hook(cr, registry): # pragma: no cover
) )
def uninstall_hook(cr, registry): # pragma: no cover def uninstall_hook(env): # pragma: no cover
# Remove unapproved pages # Remove unapproved pages
_logger.info("Deleting unapproved Change Requests.") _logger.info("Deleting unapproved Change Requests.")
cr.execute("DELETE FROM document_page_history WHERE state != 'approved'") env.cr.execute("DELETE FROM document_page_history WHERE state != 'approved'")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 126 KiB

View File

@ -19,7 +19,6 @@ class DocumentPage(models.Model):
related="history_head.approved_date", related="history_head.approved_date",
store=True, store=True,
index=True, index=True,
readonly=True,
) )
approved_uid = fields.Many2one( approved_uid = fields.Many2one(
@ -28,7 +27,6 @@ class DocumentPage(models.Model):
related="history_head.approved_uid", related="history_head.approved_uid",
store=True, store=True,
index=True, index=True,
readonly=True,
) )
approval_required = fields.Boolean( approval_required = fields.Boolean(
@ -137,8 +135,9 @@ class DocumentPage(models.Model):
def action_changes_pending_approval(self): def action_changes_pending_approval(self):
self.ensure_one() self.ensure_one()
action = self.env.ref("document_page_approval.action_change_requests") action = self.env["ir.actions.act_window"]._for_xml_id(
action = action.sudo().read()[0] "document_page_approval.action_change_requests"
)
context = literal_eval(action["context"]) context = literal_eval(action["context"])
context["search_default_page_id"] = self.id context["search_default_page_id"] = self.id
context["default_page_id"] = self.id context["default_page_id"] = self.id

View File

@ -22,7 +22,6 @@ class DocumentPageHistory(models.Model):
], ],
"Status", "Status",
default="draft", default="draft",
readonly=True,
) )
approved_date = fields.Datetime() approved_date = fields.Datetime()
@ -79,7 +78,7 @@ class DocumentPageHistory(models.Model):
[("groups_id", "in", guids), ("groups_id", "in", approver_gid.id)] [("groups_id", "in", guids), ("groups_id", "in", approver_gid.id)]
) )
rec.message_subscribe(partner_ids=users.mapped("partner_id").ids) rec.message_subscribe(partner_ids=users.mapped("partner_id").ids)
rec.message_post_with_template(template.id) rec.message_post_with_source(template)
else: else:
# auto-approve if approval is not required # auto-approve if approval is not required
rec.action_approve() rec.action_approve()

View File

@ -14,7 +14,7 @@
type="object" type="object"
string="Send to Review" string="Send to Review"
class="oe_highlight" class="oe_highlight"
attrs="{'invisible':['|','|',('is_approval_required','=',False),('am_i_owner','=',False),('state', 'not in', ['draft'])]}" invisible="not is_approval_required or not am_i_owner or state != 'draft'"
/> />
<!-- approve if i am approver --> <!-- approve if i am approver -->
<button <button
@ -22,7 +22,7 @@
type="object" type="object"
string="Approve" string="Approve"
class="oe_highlight" class="oe_highlight"
attrs="{'invisible':['|','|',('is_approval_required','=',False),('am_i_approver','=',False),('state','not in',['draft','to approve'])]}" invisible="not is_approval_required or not am_i_approver or state not in ('draft', 'to approve')"
/> />
<!-- approve if it's not required and i am owner --> <!-- approve if it's not required and i am owner -->
<button <button
@ -30,34 +30,35 @@
type="object" type="object"
string="Approve" string="Approve"
class="oe_highlight" class="oe_highlight"
attrs="{'invisible':['|','|',('is_approval_required','=',True),('am_i_owner','=',False),('state','not in',['draft', 'to approve'])]}" invisible="is_approval_required or not am_i_owner or state not in ('draft', 'to approve')"
/> />
<!-- cancel if i am owner or approver --> <!-- cancel if i am owner or approver -->
<button <button
name="action_cancel" name="action_cancel"
type="object" type="object"
string="Cancel" string="Cancel"
attrs="{'invisible':['|','&amp;',('am_i_owner','=',False),('am_i_approver','=',False),('state','not in',['draft','to approve'])]}" invisible="(not am_i_owner or not am_i_approver) and (state not in ('draft', 'to approve'))"
/> />
<!-- reopen if i am owner or approver --> <!-- reopen if i am owner or approver -->
<button <button
name="action_draft" name="action_draft"
type="object" type="object"
string="Back to draft" string="Back to draft"
attrs="{'invisible':['|','&amp;',('am_i_owner','=',False),('am_i_approver','=',False),('state','not in',['cancelled'])]}" invisible="(not am_i_owner or not am_i_approver) and (state != 'cancelled')"
/> />
<!-- cancel & reopen, if i am owner or approver --> <!-- cancel & reopen, if i am owner or approver -->
<button <button
name="action_draft" name="action_draft"
type="object" type="object"
string="Back to draft" string="Back to draft"
attrs="{'invisible':['|','&amp;',('am_i_owner','=',False),('am_i_approver','=',False),('state','not in',['to approve'])]}" invisible="(not am_i_owner or not am_i_approver) and (state != 'to approve')"
/> />
<field name="am_i_owner" invisible="1" /> <field name="am_i_owner" invisible="1" />
<field name="am_i_approver" invisible="1" /> <field name="am_i_approver" invisible="1" />
<field name="is_approval_required" invisible="1" /> <field name="is_approval_required" invisible="1" />
<field <field
name="state" name="state"
readonly="1"
widget="statusbar" widget="statusbar"
statusbar_visible="draft,approved" statusbar_visible="draft,approved"
/> />
@ -68,35 +69,31 @@
<field <field
name="approved_uid" name="approved_uid"
readonly="1" readonly="1"
attrs="{'invisible':[('state','not in',['approved'])]}" invisible="state != 'approved'"
/> />
<field <field
name="approved_date" name="approved_date"
readonly="1" readonly="1"
attrs="{'invisible':[('state','not in',['approved'])]}" invisible="state != 'approved'"
/> />
</group> </group>
</xpath> </xpath>
<!-- Readonly fields --> <!-- Readonly fields -->
<field name="content" position="attributes"> <field name="content" position="attributes">
<attribute <attribute name="readonly">state != 'draft'
name="attrs" </attribute>
>{'readonly': [('state', 'not in', ['draft'])]}</attribute>
</field> </field>
<field name="page_id" position="attributes"> <field name="page_id" position="attributes">
<attribute <attribute name="readonly">state != 'draft'
name="attrs" </attribute>
>{'readonly': [('state', 'not in', ['draft'])]}</attribute>
</field> </field>
<field name="name" position="attributes"> <field name="name" position="attributes">
<attribute <attribute name="readonly">state != 'draft'
name="attrs" </attribute>
>{'readonly': [('state', 'not in', ['draft'])]}</attribute>
</field> </field>
<field name="summary" position="attributes"> <field name="summary" position="attributes">
<attribute <attribute name="readonly">state != 'draft'
name="attrs" </attribute>
>{'readonly': [('state', 'not in', ['draft'])]}</attribute>
</field> </field>
<!-- Chatter --> <!-- Chatter -->
<sheet position="after"> <sheet position="after">
@ -119,14 +116,14 @@
position="attributes" position="attributes"
groups="document_page.group_document_manager" groups="document_page.group_document_manager"
> >
<attribute name="attrs">{'readonly': False}</attribute> <attribute name="readonly">False</attribute>
</field> </field>
<field <field
name="summary" name="summary"
position="attributes" position="attributes"
groups="document_page.group_document_manager" groups="document_page.group_document_manager"
> >
<attribute name="attrs">{'readonly': False}</attribute> <attribute name="readonly">False</attribute>
</field> </field>
</field> </field>
</record> </record>
@ -141,7 +138,7 @@
class="alert alert-info" class="alert alert-info"
role="alert" role="alert"
style="margin-bottom:0px;" style="margin-bottom:0px;"
attrs="{'invisible': [('has_changes_pending_approval','=',False)]}" invisible="not has_changes_pending_approval"
> >
This document has <b This document has <b
>Changes Pending Approval</b>. You are viewing the last approved content. >Changes Pending Approval</b>. You are viewing the last approved content.
@ -150,7 +147,7 @@
class="alert alert-warning oe_edit_only" class="alert alert-warning oe_edit_only"
role="alert" role="alert"
style="margin-bottom:0px;" style="margin-bottom:0px;"
attrs="{'invisible': [('is_approval_required','=',False)]}" invisible="not is_approval_required"
> >
This document requires approval. If edited, you will create a new <b This document requires approval. If edited, you will create a new <b
>Change Request</b>. >Change Request</b>.
@ -159,7 +156,7 @@
class="alert alert-warning oe_edit_only" class="alert alert-warning oe_edit_only"
role="alert" role="alert"
style="margin-bottom:0px;" style="margin-bottom:0px;"
attrs="{'invisible': [('user_has_drafts','=',False)]}" invisible="not user_has_drafts"
> >
<b>You already have a Draft Change Request for this page.</b> <b>You already have a Draft Change Request for this page.</b>
It is highly recommended that you edit that one instead of creating a new one. It is highly recommended that you edit that one instead of creating a new one.
@ -174,26 +171,26 @@
name="action_changes_pending_approval" name="action_changes_pending_approval"
string="Change Requests" string="Change Requests"
type="object" type="object"
attrs="{'invisible':[('has_changes_pending_approval','=',False),('user_has_drafts','=',False)]}" invisible="not has_changes_pending_approval and not user_has_drafts"
icon="fa-edit" icon="fa-edit"
/> />
</xpath> </xpath>
<field name="content_uid" position="after"> <field name="content_uid" position="after">
<field name="approved_uid" /> <field name="approved_uid" readonly="1" />
</field> </field>
<field name="content_date" position="attributes"> <field name="content_date" position="attributes">
<attribute name="invisible">1</attribute> <attribute name="invisible">1</attribute>
</field> </field>
<field name="content_date" position="after"> <field name="content_date" position="after">
<field name="approved_date" /> <field name="approved_date" readonly="1" />
</field> </field>
<field name="history_ids" position="inside"> <field name="history_ids" position="inside">
<tree> <tree>
<field name="id" /> <field name="id" />
<field name="approved_date" /> <field name="approved_date" readonly="1" />
<field name="summary" /> <field name="summary" />
<field name="create_uid" /> <field name="create_uid" />
<field name="approved_uid" /> <field name="approved_uid" readonly="1" />
</tree> </tree>
</field> </field>
</field> </field>
@ -205,12 +202,9 @@
<field name="inherit_id" ref="document_page.view_wiki_menu_form" /> <field name="inherit_id" ref="document_page.view_wiki_menu_form" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<field name="content" position="before"> <field name="content" position="before">
<group <group class="oe_read_only" invisible="type != 'content'">
class="oe_read_only" <field name="approved_date" readonly="1" />
attrs="{'invisible':[('type','!=','content')]}" <field name="approved_uid" readonly="1" />
>
<field name="approved_date" />
<field name="approved_uid" />
</group> </group>
</field> </field>
</field> </field>
@ -225,7 +219,8 @@
<field name="approval_required" /> <field name="approval_required" />
<field <field
name="approver_gid" name="approver_gid"
attrs="{'invisible':[('approval_required','!=', True)], 'required':[('approval_required','=', True)]}" invisible="not approval_required"
required="approval_required"
/> />
</field> </field>
</field> </field>
@ -242,9 +237,9 @@
<attribute name="decoration-muted">state=='cancelled'</attribute> <attribute name="decoration-muted">state=='cancelled'</attribute>
</tree> </tree>
<tree position="inside"> <tree position="inside">
<field name="state" /> <field name="state" readonly="1" />
<field name="approved_uid" /> <field name="approved_uid" readonly="1" />
<field name="approved_date" /> <field name="approved_date" readonly="1" />
</tree> </tree>
</field> </field>
</record> </record>
@ -255,7 +250,7 @@
<field name="inherit_id" ref="document_page.view_wiki_history_filter" /> <field name="inherit_id" ref="document_page.view_wiki_history_filter" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<field name="page_id" position="before"> <field name="page_id" position="before">
<field name="state" /> <field name="state" readonly="1" />
</field> </field>
<field name="create_uid" position="after"> <field name="create_uid" position="after">
<filter name="draft" string="Draft" domain="[('state','=','draft')]" /> <filter name="draft" string="Draft" domain="[('state','=','draft')]" />
@ -296,9 +291,8 @@
<field name="name">Change Requests</field> <field name="name">Change Requests</field>
<field name="res_model">document.page.history</field> <field name="res_model">document.page.history</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field <field name="context">{'search_default_draft': 1, 'search_default_pending': 1}
name="context" </field>
>{'search_default_draft': 1, 'search_default_pending': 1}</field>
</record> </record>
<menuitem <menuitem
id="menu_page_change_requests" id="menu_page_change_requests"