mirror of
https://github.com/OCA/knowledge.git
synced 2025-07-14 01:41:26 -06:00
[MIG] document_page: Migration to 9.0
This commit is contained in:
parent
463e9f0081
commit
35a8a60ae1
68
document_page/README.rst
Normal file
68
document_page/README.rst
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
||||||
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||||
|
:alt: License: AGPL-3
|
||||||
|
|
||||||
|
=============
|
||||||
|
Document Page
|
||||||
|
=============
|
||||||
|
|
||||||
|
This module allows you to write web pages for internal documentation.
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
This module depends on module knowledge. So make sure to have it in your addons list.
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
=============
|
||||||
|
|
||||||
|
No configuration required
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
To use this module, you need to:
|
||||||
|
|
||||||
|
* Go to Knowledge menu
|
||||||
|
* Click on Categories to create the document's category you need with the template
|
||||||
|
* Click on Pages to create pages and select the previous category to use the template
|
||||||
|
|
||||||
|
|
||||||
|
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
|
||||||
|
:alt: Try me on Runbot
|
||||||
|
:target: https://runbot.odoo-community.org/runbot/118/9.0
|
||||||
|
|
||||||
|
Known issues / Roadmap
|
||||||
|
======================
|
||||||
|
|
||||||
|
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 smashing it by providing a detailed and welcomed feedback `here <https://github.com/OCA/knowledge/issues/new?body=module:%20document_page%0Aversion:%209.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||||
|
|
||||||
|
Credits
|
||||||
|
=======
|
||||||
|
|
||||||
|
Contributors
|
||||||
|
------------
|
||||||
|
|
||||||
|
* Odoo SA <info@odoo.com>
|
||||||
|
* Savoir-faire Linux <support@savoirfairelinux.com>
|
||||||
|
* Gervais Naoussi <gervaisnaoussi@gmail.com>
|
||||||
|
|
||||||
|
Maintainer
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. image:: https://odoo-community.org/logo.png
|
||||||
|
:alt: Odoo Community Association
|
||||||
|
:target: https://odoo-community.org
|
||||||
|
|
||||||
|
This module is maintained by the OCA.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
To contribute to this module, please visit http://odoo-community.org.
|
@ -18,5 +18,5 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
from . import document_page
|
from . import models
|
||||||
from . import wizard
|
from . import wizard
|
||||||
|
@ -21,35 +21,29 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Document Page',
|
'name': 'Document Page',
|
||||||
'version': '8.0.1.0.1',
|
'version': '9.0.1.0.1',
|
||||||
'category': 'Knowledge Management',
|
'category': 'Knowledge Management',
|
||||||
'description': """
|
'author': 'OpenERP SA, Odoo Community Association (OCA)',
|
||||||
Pages
|
'images': ['images/category_list.png', 'images/create_category.png',
|
||||||
=====
|
'images/page_list.png', 'images/create_page.png',
|
||||||
Web pages
|
'images/customer_invoice.jpeg', 'images/page_history.png'],
|
||||||
""",
|
|
||||||
'author': ['OpenERP SA'],
|
|
||||||
'website': 'http://www.openerp.com/',
|
'website': 'http://www.openerp.com/',
|
||||||
'license': 'AGPL-3',
|
'license': 'AGPL-3',
|
||||||
'depends': [
|
'depends': [
|
||||||
'knowledge',
|
|
||||||
'mail',
|
'mail',
|
||||||
|
'knowledge',
|
||||||
],
|
],
|
||||||
'data': [
|
'data': [
|
||||||
'wizard/document_page_create_menu_view.xml',
|
'wizard/document_page_create_menu.xml',
|
||||||
'wizard/document_page_show_diff_view.xml',
|
'wizard/document_page_show_diff.xml',
|
||||||
'document_page_view.xml',
|
'views/document_page.xml',
|
||||||
'security/document_page_security.xml',
|
'security/document_page_security.xml',
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
],
|
],
|
||||||
'demo': [
|
'demo': [
|
||||||
'document_page_demo.xml'
|
'demo/document_page.xml'
|
||||||
],
|
|
||||||
'test': [
|
|
||||||
'test/document_page_test00.yml'
|
|
||||||
],
|
],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
'auto_install': False,
|
'auto_install': False,
|
||||||
'images': [],
|
|
||||||
'css': ['static/src/css/document_page.css'],
|
'css': ['static/src/css/document_page.css'],
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<openerp>
|
<odoo>
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
<record id="wiki_wiki_main" model="document.page">
|
<record id="wiki_wiki_main" model="document.page">
|
||||||
<field name="name">The OpenERP wiki</field>
|
<field name="name">The Odoo wiki</field>
|
||||||
<field name="tags">help, quick start, wiki, formatting</field>
|
<field name="tags">help, quick start, wiki, formatting</field>
|
||||||
<field name="minor_edit">0</field>
|
<field name="minor_edit">0</field>
|
||||||
<field name="index">1</field>
|
<field name="index">1</field>
|
||||||
<field name="summary">Initial Page</field>
|
<field name="summary">Initial Page</field>
|
||||||
<field name="content">==The OpenERP wiki==
|
<field name="content">== The Odoo wiki ==
|
||||||
|
|
||||||
[[File:http://www.openerp.com/sites/all/themes/openerp/logo.png OpenERP]]
|
[[File:https://www.odoo.com/openerp_website/static/src/img/logo_transparent_198px.png Odoo]]
|
||||||
|
|
||||||
The OpenERP wiki allows you to manage your enterprise's contents using wiki
|
The Odoo wiki allows you to manage your enterprise's contents using wiki
|
||||||
restructured texts. This module provides a collaborative way to manage internal
|
restructured texts. This module provides a collaborative way to manage internal
|
||||||
FAQs, quality manuals, technical references, etc.
|
FAQs, quality manuals, technical references, etc.
|
||||||
|
|
||||||
@ -38,4 +38,4 @@ FAQs, quality manuals, technical references, etc.
|
|||||||
<field name="parent_id" ref="wiki_groups_wikiformatting0"/>
|
<field name="parent_id" ref="wiki_groups_wikiformatting0"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</odoo>
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<openerp>
|
<odoo>
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
<record id="base.user_demo" model="res.users">
|
<record id="base.user_demo" model="res.users">
|
||||||
<field eval="[(4, ref('base.group_document_user'))]"
|
<field eval="[(4, ref('base.group_document_user'))]"
|
||||||
@ -128,4 +128,4 @@ Think of it as an out-of-the-box solution to boost your business' productivity.<
|
|||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</odoo>
|
BIN
document_page/images/category_list.png
Normal file
BIN
document_page/images/category_list.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 68 KiB |
BIN
document_page/images/create_category.png
Normal file
BIN
document_page/images/create_category.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 75 KiB |
BIN
document_page/images/create_page.png
Normal file
BIN
document_page/images/create_page.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 73 KiB |
BIN
document_page/images/page_history.png
Normal file
BIN
document_page/images/page_history.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 95 KiB |
BIN
document_page/images/page_list.png
Normal file
BIN
document_page/images/page_list.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
22
document_page/models/__init__.py
Normal file
22
document_page/models/__init__.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||||
|
#
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
from . import document_page
|
||||||
|
from . import document_page_history
|
@ -19,13 +19,14 @@
|
|||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
import logging
|
import logging
|
||||||
import difflib
|
from openerp import models, fields, api
|
||||||
from openerp import models, fields, api, _
|
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class document_page(models.Model):
|
class DocumentPage(models.Model):
|
||||||
|
"""This class is use to manage Document."""
|
||||||
|
|
||||||
_name = "document.page"
|
_name = "document.page"
|
||||||
_inherit = ['mail.thread']
|
_inherit = ['mail.thread']
|
||||||
_description = "Document Page"
|
_description = "Document Page"
|
||||||
@ -99,6 +100,7 @@ class document_page(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _get_page_index(self, page, link=True):
|
def _get_page_index(self, page, link=True):
|
||||||
|
"""Return the index of a document."""
|
||||||
index = []
|
index = []
|
||||||
for subpage in page.child_ids:
|
for subpage in page.child_ids:
|
||||||
index += ["<li>" + self._get_page_index(subpage) +
|
index += ["<li>" + self._get_page_index(subpage) +
|
||||||
@ -112,6 +114,7 @@ class document_page(models.Model):
|
|||||||
return r
|
return r
|
||||||
|
|
||||||
def _get_display_content(self):
|
def _get_display_content(self):
|
||||||
|
"""Return the content of a document."""
|
||||||
for page in self:
|
for page in self:
|
||||||
if page.type == "category":
|
if page.type == "category":
|
||||||
display_content = self._get_page_index(page, link=False)
|
display_content = self._get_page_index(page, link=False)
|
||||||
@ -121,11 +124,13 @@ class document_page(models.Model):
|
|||||||
|
|
||||||
@api.onchange("parent_id")
|
@api.onchange("parent_id")
|
||||||
def do_set_content(self):
|
def do_set_content(self):
|
||||||
|
"""We Set it the right content to the new parent."""
|
||||||
if self.parent_id and not self.content:
|
if self.parent_id and not self.content:
|
||||||
if self.parent_id.type == "category":
|
if self.parent_id.type == "category":
|
||||||
self.content = self.parent_id.content
|
self.content = self.parent_id.content
|
||||||
|
|
||||||
def create_history(self, page_id, content):
|
def create_history(self, page_id, content):
|
||||||
|
"""Create the first history of a newly created document."""
|
||||||
history = self.env['document.page.history']
|
history = self.env['document.page.history']
|
||||||
return history.create({
|
return history.create({
|
||||||
"content": content,
|
"content": content,
|
||||||
@ -134,7 +139,8 @@ class document_page(models.Model):
|
|||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def write(self, vals):
|
def write(self, vals):
|
||||||
result = super(document_page, self).write(vals)
|
"""Write the content and set the history."""
|
||||||
|
result = super(DocumentPage, self).write(vals)
|
||||||
content = vals.get('content')
|
content = vals.get('content')
|
||||||
if content:
|
if content:
|
||||||
for page in self:
|
for page in self:
|
||||||
@ -144,51 +150,9 @@ class document_page(models.Model):
|
|||||||
@api.model
|
@api.model
|
||||||
@api.returns('self', lambda value: value.id)
|
@api.returns('self', lambda value: value.id)
|
||||||
def create(self, vals):
|
def create(self, vals):
|
||||||
page_id = super(document_page, self).create(vals)
|
"""Create the first history of a document."""
|
||||||
|
page_id = super(DocumentPage, self).create(vals)
|
||||||
content = vals.get('content')
|
content = vals.get('content')
|
||||||
if content:
|
if content:
|
||||||
self.create_history(page_id.id, content)
|
self.create_history(page_id.id, content)
|
||||||
return page_id
|
return page_id
|
||||||
|
|
||||||
|
|
||||||
class document_page_history(models.Model):
|
|
||||||
_name = "document.page.history"
|
|
||||||
_description = "Document Page History"
|
|
||||||
_order = 'id DESC'
|
|
||||||
_rec_name = "create_date"
|
|
||||||
|
|
||||||
page_id = fields.Many2one('document.page', 'Page')
|
|
||||||
summary = fields.Char('Summary', size=256, select=True)
|
|
||||||
content = fields.Text("Content")
|
|
||||||
create_date = fields.Datetime("Date")
|
|
||||||
create_uid = fields.Many2one('res.users', "Modified By")
|
|
||||||
|
|
||||||
def getDiff(self, v1, v2):
|
|
||||||
text1 = self.browse(v1).content
|
|
||||||
text2 = self.browse(v2).content
|
|
||||||
line1 = line2 = ''
|
|
||||||
if text1:
|
|
||||||
line1 = text1.splitlines(1)
|
|
||||||
if text2:
|
|
||||||
line2 = text2.splitlines(1)
|
|
||||||
if (not line1 and not line2) or (line1 == line2):
|
|
||||||
return _('There are no changes in revisions.')
|
|
||||||
else:
|
|
||||||
diff = difflib.HtmlDiff()
|
|
||||||
return diff.make_table(
|
|
||||||
line1, line2,
|
|
||||||
"Revision-{}".format(v1),
|
|
||||||
"Revision-{}".format(v2),
|
|
||||||
context=True
|
|
||||||
)
|
|
||||||
|
|
||||||
def __getattr__(self, attr):
|
|
||||||
"""Return a dummy callabale"""
|
|
||||||
if attr in ['_sql', 'init', '_ids']:
|
|
||||||
raise AttributeError
|
|
||||||
|
|
||||||
_logger.warning(
|
|
||||||
"Trying to access attribute %s on document_page_history",
|
|
||||||
attr
|
|
||||||
)
|
|
||||||
return (lambda *a, **b: None)
|
|
60
document_page/models/document_page_history.py
Normal file
60
document_page/models/document_page_history.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||||
|
#
|
||||||
|
# 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
import logging
|
||||||
|
import difflib
|
||||||
|
from openerp import models, fields, _
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class DocumentPageHistory(models.Model):
|
||||||
|
"""This model is necessary to manage a document history."""
|
||||||
|
|
||||||
|
_name = "document.page.history"
|
||||||
|
_description = "Document Page History"
|
||||||
|
_order = 'id DESC'
|
||||||
|
_rec_name = "create_date"
|
||||||
|
|
||||||
|
page_id = fields.Many2one('document.page', 'Page')
|
||||||
|
summary = fields.Char('Summary', select=True)
|
||||||
|
content = fields.Text("Content")
|
||||||
|
create_date = fields.Datetime("Date")
|
||||||
|
create_uid = fields.Many2one('res.users', "Modified By")
|
||||||
|
|
||||||
|
def getDiff(self, v1, v2):
|
||||||
|
"""Return the difference between two version of document version."""
|
||||||
|
text1 = self.browse(v1).content
|
||||||
|
text2 = self.browse(v2).content
|
||||||
|
line1 = line2 = ''
|
||||||
|
if text1:
|
||||||
|
line1 = text1.splitlines(1)
|
||||||
|
if text2:
|
||||||
|
line2 = text2.splitlines(1)
|
||||||
|
if (not line1 and not line2) or (line1 == line2):
|
||||||
|
return _('There are no changes in revisions.')
|
||||||
|
else:
|
||||||
|
diff = difflib.HtmlDiff()
|
||||||
|
return diff.make_table(
|
||||||
|
line1, line2,
|
||||||
|
"Revision-{}".format(v1),
|
||||||
|
"Revision-{}".format(v2),
|
||||||
|
context=True
|
||||||
|
)
|
@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<openerp>
|
<odoo>
|
||||||
<data noupdate="0">
|
<data noupdate="0">
|
||||||
<record id="base.group_document_user" model="res.groups">
|
<record id="base.group_document_user" model="res.groups">
|
||||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</odoo>
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
-
|
|
||||||
In order to test the document_page in OpenERP, I create a new page to category demo_category1
|
|
||||||
-
|
|
||||||
!record {model: document.page, id: test_page0}:
|
|
||||||
name: Test Page0
|
|
||||||
parent_id: demo_category1
|
|
||||||
content: 'Test content
|
|
||||||
|
|
||||||
The Open ERP wiki allows you to manage your enterprise contents using wiki
|
|
||||||
|
|
||||||
restructured texts. This module provides a collaborative way to manage internal
|
|
||||||
|
|
||||||
FAQs, quality manuals, technical references, etc.'
|
|
||||||
|
|
||||||
-
|
|
||||||
I check the category index contains my page.
|
|
||||||
-
|
|
||||||
!python {model: document.page}: |
|
|
||||||
res = self.read(cr, uid, [ref('demo_category1')], ['display_content'])
|
|
||||||
assert res[0]['display_content'].find('Test Page') > 1
|
|
||||||
-
|
|
||||||
!record {model: document.page, id: test_page0}:
|
|
||||||
content: 'Test updated content
|
|
||||||
|
|
||||||
The Open ERP wiki allows you to manage your enterprise contents using wiki
|
|
||||||
|
|
||||||
restructured texts. This module provides a collaborative way to manage internal
|
|
||||||
|
|
||||||
FAQs, quality manuals, technical references, etc.
|
|
||||||
|
|
||||||
Wiki text can easily be edited
|
|
||||||
'
|
|
||||||
|
|
||||||
-
|
|
||||||
I check the page history for the current page by clicking on "Page History".After that find difference between history.
|
|
||||||
-
|
|
||||||
!python {model: wizard.document.page.history.show_diff, id: False}: |
|
|
||||||
hist_obj = self.env['document.page.history']
|
|
||||||
ids = hist_obj.search([('page_id', '=', ref("test_page0"))])
|
|
||||||
self.with_context(active_ids=[i.id for i in ids]).get_diff()
|
|
||||||
|
|
||||||
|
|
||||||
-
|
|
||||||
I click the "create menu" link and i fill the form.
|
|
||||||
-
|
|
||||||
!record {model: document.page.create.menu, id: test_create_menu0}:
|
|
||||||
menu_name: Wiki Test menu
|
|
||||||
menu_parent_id: base.menu_base_partner
|
|
||||||
-
|
|
||||||
I create a Menu by clicking on "create menu"
|
|
||||||
-
|
|
||||||
!python {model: document.page.create.menu, id: False}: |
|
|
||||||
menu = self.search([('id', '=', ref("test_create_menu0"))])
|
|
||||||
menu.with_context(active_id=[ref('test_page0')]).document_page_menu_create()
|
|
||||||
|
|
5
document_page/tests/__init__.py
Normal file
5
document_page/tests/__init__.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from . import test_document_page, test_document_page_history
|
||||||
|
from . import test_document_page_create_menu
|
||||||
|
from . import test_document_page_show_diff
|
37
document_page/tests/test_document_page.py
Normal file
37
document_page/tests/test_document_page.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from openerp.tests import common
|
||||||
|
|
||||||
|
|
||||||
|
class TestDocumentPage(common.TransactionCase):
|
||||||
|
"""document_page test class."""
|
||||||
|
|
||||||
|
def test_page_creation(self):
|
||||||
|
"""Test page creation."""
|
||||||
|
parent_page = self.env.ref('document_page.demo_category1')
|
||||||
|
|
||||||
|
self.assertEqual(parent_page.name, 'OpenERP Features')
|
||||||
|
|
||||||
|
record = self.env['document.page'].create({
|
||||||
|
'name': 'Test Page1',
|
||||||
|
'parent_id': parent_page.id,
|
||||||
|
'content': 'Test content'
|
||||||
|
})
|
||||||
|
self.assertEqual(record.name, 'Test Page1')
|
||||||
|
|
||||||
|
def test_category_display_content(self):
|
||||||
|
"""Test category display content."""
|
||||||
|
page = self.env.ref('document_page.demo_category1')
|
||||||
|
self.assertTrue(page.display_content.find('Demo') > 1)
|
||||||
|
|
||||||
|
def test_page_display_content(self):
|
||||||
|
"""Test page display content."""
|
||||||
|
page = self.env.ref('document_page.demo_page1')
|
||||||
|
self.assertTrue(page.display_content.find('Demo') > 1)
|
||||||
|
|
||||||
|
def test_page_do_set_content(self):
|
||||||
|
"""Test page set content."""
|
||||||
|
page = self.env.ref('document_page.demo_page1')
|
||||||
|
page.content = None
|
||||||
|
page.do_set_content()
|
||||||
|
self.assertTrue(page.display_content.find('Summary') == 1)
|
30
document_page/tests/test_document_page_create_menu.py
Normal file
30
document_page/tests/test_document_page_create_menu.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from openerp.tests import common
|
||||||
|
|
||||||
|
|
||||||
|
class TestDocumentPageCreateMenu(common.TransactionCase):
|
||||||
|
"""document_page_create_menu test class."""
|
||||||
|
|
||||||
|
def test_page_menu_creation(self):
|
||||||
|
"""Test page menu creation."""
|
||||||
|
menu_parent = self.env.ref('base.menu_base_partner')
|
||||||
|
|
||||||
|
menu_created = self.env['document.page.create.menu'].create(
|
||||||
|
{'menu_name': 'Wiki Test menu', 'menu_parent_id': menu_parent.id}
|
||||||
|
)
|
||||||
|
|
||||||
|
menu = self.env['document.page.create.menu'].search(
|
||||||
|
[('id', '=', menu_created.id)]
|
||||||
|
)
|
||||||
|
menu.with_context(
|
||||||
|
active_id=[self.ref('document_page.demo_page1')]
|
||||||
|
).document_page_menu_create()
|
||||||
|
|
||||||
|
fields_list = ["menu_name", "menu_name"]
|
||||||
|
|
||||||
|
res = menu.with_context(
|
||||||
|
active_id=[self.ref('document_page.demo_page1')]
|
||||||
|
).default_get(fields_list)
|
||||||
|
|
||||||
|
self.assertEqual(res['menu_name'], 'OpenERP 6.1. Functional Demo')
|
21
document_page/tests/test_document_page_history.py
Normal file
21
document_page/tests/test_document_page_history.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from openerp.tests import common
|
||||||
|
|
||||||
|
|
||||||
|
class TestDocumentPageHistory(common.TransactionCase):
|
||||||
|
"""document_page_history test class."""
|
||||||
|
|
||||||
|
def test_page_history_demo_page1(self):
|
||||||
|
"""Test page history demo page1."""
|
||||||
|
page = self.env.ref('document_page.demo_page1')
|
||||||
|
page.content = 'Test content updated'
|
||||||
|
history_document = self.env['document.page.history']
|
||||||
|
history_pages = history_document.search([('page_id', '=', page.id)])
|
||||||
|
active_ids = [i.id for i in history_pages]
|
||||||
|
|
||||||
|
result = history_document.getDiff(active_ids[0], active_ids[0])
|
||||||
|
self.assertEqual(result, 'There are no changes in revisions.')
|
||||||
|
|
||||||
|
result = history_document.getDiff(active_ids[0], active_ids[1])
|
||||||
|
self.assertNotEqual(result, 'There are no changes in revisions.')
|
36
document_page/tests/test_document_page_show_diff.py
Normal file
36
document_page/tests/test_document_page_show_diff.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from openerp.tests import common
|
||||||
|
from openerp import _
|
||||||
|
|
||||||
|
|
||||||
|
class TestDocumentPageShowDiff(common.TransactionCase):
|
||||||
|
"""document_page_show_diff test class."""
|
||||||
|
|
||||||
|
def test_show_demo_page1_diff(self):
|
||||||
|
"""Show test page history difference."""
|
||||||
|
page = self.env.ref('document_page.demo_page1')
|
||||||
|
|
||||||
|
show_diff_object = self.env['wizard.document.page.history.show_diff']
|
||||||
|
|
||||||
|
history_document = self.env['document.page.history']
|
||||||
|
history_pages = history_document.search([('page_id', '=', page.id)])
|
||||||
|
|
||||||
|
self.assertTrue(
|
||||||
|
show_diff_object.with_context(
|
||||||
|
active_ids=[i.id for i in history_pages]
|
||||||
|
).get_diff()
|
||||||
|
)
|
||||||
|
|
||||||
|
page.write({'content': 'Text content updated'})
|
||||||
|
page.write({'content': 'Text updated'})
|
||||||
|
|
||||||
|
history_pages = history_document.search([('page_id', '=', page.id)])
|
||||||
|
|
||||||
|
with self.assertRaises(Exception) as context:
|
||||||
|
show_diff_object.with_context(
|
||||||
|
active_ids=[i.id for i in history_pages]
|
||||||
|
).get_diff()
|
||||||
|
|
||||||
|
self.assertTrue(_("Select one or maximum two history revisions!")
|
||||||
|
in context.exception)
|
@ -1,9 +1,6 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<openerp>
|
<odoo>
|
||||||
<data>
|
<data>
|
||||||
<menuitem name="Knowledge"
|
|
||||||
id="knowledge.menu_document" />
|
|
||||||
|
|
||||||
<menuitem name="Pages"
|
<menuitem name="Pages"
|
||||||
id="menu_wiki"
|
id="menu_wiki"
|
||||||
parent="knowledge.menu_document"
|
parent="knowledge.menu_document"
|
||||||
@ -316,4 +313,4 @@
|
|||||||
src_model="document.page"/>
|
src_model="document.page"/>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</odoo>
|
@ -20,5 +20,3 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
from . import document_page_create_menu
|
from . import document_page_create_menu
|
||||||
from . import document_page_show_diff
|
from . import document_page_show_diff
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
||||||
|
@ -21,8 +21,9 @@
|
|||||||
from openerp import models, fields, api
|
from openerp import models, fields, api
|
||||||
|
|
||||||
|
|
||||||
class document_page_create_menu(models.TransientModel):
|
class DocumentPageCreateMenu(models.TransientModel):
|
||||||
""" Create Menu """
|
"""Create Menu."""
|
||||||
|
|
||||||
_name = "document.page.create.menu"
|
_name = "document.page.create.menu"
|
||||||
_description = "Wizard Create Menu"
|
_description = "Wizard Create Menu"
|
||||||
|
|
||||||
@ -39,7 +40,8 @@ class document_page_create_menu(models.TransientModel):
|
|||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def default_get(self, fields_list):
|
def default_get(self, fields_list):
|
||||||
res = super(document_page_create_menu, self).default_get(fields_list)
|
"""Get Page name of the menu."""
|
||||||
|
res = super(DocumentPageCreateMenu, self).default_get(fields_list)
|
||||||
page_id = self.env.context.get('active_id')
|
page_id = self.env.context.get('active_id')
|
||||||
obj_page = self.env['document.page']
|
obj_page = self.env['document.page']
|
||||||
page = obj_page.browse(page_id)
|
page = obj_page.browse(page_id)
|
||||||
@ -48,6 +50,7 @@ class document_page_create_menu(models.TransientModel):
|
|||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def document_page_menu_create(self):
|
def document_page_menu_create(self):
|
||||||
|
"""Menu creation."""
|
||||||
obj_page = self.env['document.page']
|
obj_page = self.env['document.page']
|
||||||
obj_menu = self.env['ir.ui.menu']
|
obj_menu = self.env['ir.ui.menu']
|
||||||
obj_action = self.env['ir.actions.act_window']
|
obj_action = self.env['ir.actions.act_window']
|
||||||
@ -86,6 +89,3 @@ class document_page_create_menu(models.TransientModel):
|
|||||||
'type': 'ir.actions.client',
|
'type': 'ir.actions.client',
|
||||||
'tag': 'reload',
|
'tag': 'reload',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<openerp>
|
<odoo>
|
||||||
<data>
|
<data>
|
||||||
<!-- Create Menu From view -->
|
<!-- Create Menu From view -->
|
||||||
<record id="view_wiki_create_menu" model="ir.ui.view">
|
<record id="view_wiki_create_menu" model="ir.ui.view">
|
||||||
@ -38,4 +38,4 @@
|
|||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</odoo>
|
@ -22,12 +22,13 @@ from openerp import models, fields, _
|
|||||||
from openerp import exceptions
|
from openerp import exceptions
|
||||||
|
|
||||||
|
|
||||||
class showdiff(models.TransientModel):
|
class DocumentPageShowDiff(models.TransientModel):
|
||||||
""" Display Difference for History """
|
"""Display Difference for History."""
|
||||||
|
|
||||||
_name = 'wizard.document.page.history.show_diff'
|
_name = 'wizard.document.page.history.show_diff'
|
||||||
|
|
||||||
def get_diff(self):
|
def get_diff(self):
|
||||||
|
"""Return the Difference between two document."""
|
||||||
history = self.env["document.page.history"]
|
history = self.env["document.page.history"]
|
||||||
ids = self.env.context.get('active_ids', [])
|
ids = self.env.context.get('active_ids', [])
|
||||||
|
|
||||||
@ -47,8 +48,7 @@ class showdiff(models.TransientModel):
|
|||||||
diff = history.getDiff(ids[0], nids.id)
|
diff = history.getDiff(ids[0], nids.id)
|
||||||
else:
|
else:
|
||||||
raise exceptions.Warning(
|
raise exceptions.Warning(
|
||||||
_("You need to select minimum one or maximum "
|
_("Select one or maximum two history revisions!")
|
||||||
"two history revisions!")
|
|
||||||
)
|
)
|
||||||
return diff
|
return diff
|
||||||
|
|
||||||
@ -57,5 +57,3 @@ class showdiff(models.TransientModel):
|
|||||||
readonly=True,
|
readonly=True,
|
||||||
default=get_diff
|
default=get_diff
|
||||||
)
|
)
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<openerp>
|
<odoo>
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<!-- Create Index Form view -->
|
<!-- Create Index Form view -->
|
||||||
@ -44,4 +44,4 @@
|
|||||||
view_type="form"/>
|
view_type="form"/>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</odoo>
|
Loading…
Reference in New Issue
Block a user