[9.0] Improve document_page (#162)

* [document_page] FIX creating history when there are no changes made. Add history name field, to name revisions. Modified views to allow setting this field.

* [document_page] FIX BUG: UI hanging when editing content. This was due to the api.depends on _compute_diff. Removing it because it's not really necessary since the field is not stored.

* [document_page] page_id should be readonly.

* [document_page] Implement active field

* [document_page] Update version number
This commit is contained in:
Iván Todorovich 2018-06-01 15:36:19 -03:00 committed by Maxime Chambreuil
parent 59460e4a53
commit adc4b0ccd8
5 changed files with 40 additions and 15 deletions

View File

@ -21,7 +21,7 @@
{ {
'name': 'Document Page', 'name': 'Document Page',
'version': '9.0.2.0.0', 'version': '9.0.2.1.0',
'category': 'Knowledge Management', 'category': 'Knowledge Management',
'author': 'OpenERP SA, Odoo Community Association (OCA)', 'author': 'OpenERP SA, Odoo Community Association (OCA)',
'images': ['images/category_list.png', 'images/create_category.png', 'images': ['images/category_list.png', 'images/create_category.png',

View File

@ -39,6 +39,8 @@ class DocumentPage(models.Model):
default="content" default="content"
) )
active = fields.Boolean(default=True)
parent_id = fields.Many2one( parent_id = fields.Many2one(
'document.page', 'document.page',
'Category', 'Category',
@ -60,7 +62,16 @@ class DocumentPage(models.Model):
) )
# no-op computed field # no-op computed field
summary = fields.Char( draft_name = fields.Char(
string='Name',
help='Name for the changes made',
compute=lambda x: x,
inverse=lambda x: x,
)
# no-op computed field
draft_summary = fields.Char(
string='Summary',
help='Describe the changes made', help='Describe the changes made',
compute=lambda x: x, compute=lambda x: x,
inverse=lambda x: x, inverse=lambda x: x,
@ -156,10 +167,12 @@ class DocumentPage(models.Model):
@api.multi @api.multi
def _inverse_content(self): def _inverse_content(self):
for rec in self: for rec in self:
if rec.type == 'content': if rec.type == 'content' and \
rec.content != rec.history_head.content:
rec._create_history({ rec._create_history({
'name': rec.draft_name,
'summary': rec.draft_summary,
'content': rec.content, 'content': rec.content,
'summary': rec.summary,
}) })
@api.multi @api.multi

View File

@ -30,12 +30,12 @@ class DocumentPageHistory(models.Model):
_order = 'id DESC' _order = 'id DESC'
page_id = fields.Many2one('document.page', 'Page', ondelete='cascade') page_id = fields.Many2one('document.page', 'Page', ondelete='cascade')
summary = fields.Char('Summary', index=True) name = fields.Char(index=True)
content = fields.Text("Content") summary = fields.Char(index=True)
content = fields.Text()
diff = fields.Text(compute='_compute_diff') diff = fields.Text(compute='_compute_diff')
@api.multi @api.multi
@api.depends('content', 'page_id.history_ids')
def _compute_diff(self): def _compute_diff(self):
"""Shows a diff between this version and the previous version""" """Shows a diff between this version and the previous version"""
history = self.env['document.page.history'] history = self.env['document.page.history']

View File

@ -40,6 +40,11 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Document Page"> <form string="Document Page">
<sheet> <sheet>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object" groups="document_page.group_document_manager" class="oe_stat_button" icon="fa-archive">
<field name="active" widget="boolean_button" options="{'terminology': 'archive'}"/>
</button>
</div>
<field name="type" invisible="1"/> <field name="type" invisible="1"/>
<h1><field name="name" placeholder="Name"/></h1> <h1><field name="name" placeholder="Name"/></h1>
<group> <group>
@ -54,16 +59,21 @@
</group> </group>
<notebook> <notebook>
<page name="content" string="Content"> <page name="content" string="Content">
<label for="summary" class="oe_edit_only" /> <group string="Revision" class="oe_edit_only">
<field name="summary" placeholder="eg: Changed ... for ..." class="oe_edit_only" /> <field name="draft_name" placeholder="Rev 01" class="oe_edit_only" />
<label for="content" class="oe_edit_only"/> <field name="draft_summary" placeholder="eg: Changed ... for ..." class="oe_edit_only" />
<field name="content" widget="html" placeholder="e.g. Once upon a time..." required="1" options="{'safe': True}"/> </group>
<div>
<label for="content" class="oe_edit_only"/>
<field name="content" widget="html" placeholder="e.g. Once upon a time..." required="1" options="{'safe': True}"/>
</div>
</page> </page>
<page name="history" string="History"> <page name="history" string="History">
<field name="history_ids"> <field name="history_ids">
<tree> <tree>
<field name="id"/> <field name="id"/>
<field name="create_date"/> <field name="create_date"/>
<field name="name"/>
<field name="summary"/> <field name="summary"/>
<field name="create_uid"/> <field name="create_uid"/>
</tree> </tree>

View File

@ -10,6 +10,7 @@
<tree string="Document History"> <tree string="Document History">
<field name="id"/> <field name="id"/>
<field name="page_id"/> <field name="page_id"/>
<field name="name"/>
<field name="summary"/> <field name="summary"/>
<field name="create_uid"/> <field name="create_uid"/>
<field name="create_date"/> <field name="create_date"/>
@ -40,18 +41,19 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Document Page History"> <form string="Document Page History">
<sheet> <sheet>
<h1><field name="page_id"/></h1> <h1><field name="page_id" readonly="1"/></h1>
<group> <group>
<group> <group>
<field name="create_uid" readonly="1"/> <field name="create_uid" readonly="1"/>
<field name="create_date" readonly="1"/> <field name="create_date" readonly="1"/>
</group> </group>
</group> </group>
<group>
<field name="name" placeholder="Rev 01"/>
<field name="summary" placeholder="eg: Changed ... for ..."/>
</group>
<notebook> <notebook>
<page name="content" string="Content"> <page name="content" string="Content">
<label for="summary"/>
<field name="summary" placeholder="eg: Changed ... for ..."/>
<label for="content"/>
<field name="content" widget="html" placeholder="e.g. Once upon a time..." options="{'safe': True}"/> <field name="content" widget="html" placeholder="e.g. Once upon a time..." options="{'safe': True}"/>
</page> </page>
<page name="diff" string="Changes"> <page name="diff" string="Changes">