mirror of
https://github.com/OCA/knowledge.git
synced 2025-07-26 18:38:41 -06:00
Merge 488c3962b1
into 27a3fbda77
This commit is contained in:
commit
f45cd8adc8
46
document_definition/README.rst
Normal file
46
document_definition/README.rst
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
.. 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
|
||||||
|
|
||||||
|
=====================
|
||||||
|
Terms and definitions
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Installs a new document_definition model for dictionary-style word archive and
|
||||||
|
definition. Adds Searchable view for terms and definitions in the Knowledge menu.
|
||||||
|
Has a search view per term and per definition and a dictionary Style Alphabetical grouping view.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Images
|
||||||
|
------
|
||||||
|
|
||||||
|
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
|
||||||
|
|
||||||
|
Contributors
|
||||||
|
------------
|
||||||
|
|
||||||
|
* Giovanni Francesco Capalbo <giovanni@therp.nl>
|
||||||
|
|
||||||
|
Do not contact contributors directly about help with questions or problems concerning this addon, but use the `community mailing list <mailto:community@mail.odoo.com>`_ or the `appropriate specialized mailinglist <https://odoo-community.org/groups>`_ for help, and the bug tracker linked in `Bug Tracker`_ above for technical issues.
|
||||||
|
|
||||||
|
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 https://odoo-community.org.
|
4
document_definition/__init__.py
Normal file
4
document_definition/__init__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2017 Therp BV <http://therp.nl>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
from . import models
|
18
document_definition/__openerp__.py
Normal file
18
document_definition/__openerp__.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2017 Therp BV <http://therp.nl>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
{
|
||||||
|
"name": "Terms and Definitions",
|
||||||
|
"version": "8.0.1.0.0",
|
||||||
|
"author": "Therp BV,Odoo Community Association (OCA)",
|
||||||
|
"license": "AGPL-3",
|
||||||
|
"category": "Knowledge",
|
||||||
|
"depends": [
|
||||||
|
'knowledge',
|
||||||
|
],
|
||||||
|
"data": [
|
||||||
|
'views/templates.xml',
|
||||||
|
'security/ir.model.access.csv',
|
||||||
|
],
|
||||||
|
"installable": True,
|
||||||
|
}
|
4
document_definition/models/__init__.py
Normal file
4
document_definition/models/__init__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2017 Therp BV <http://therp.nl>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
from . import document_definition
|
39
document_definition/models/document_definition.py
Normal file
39
document_definition/models/document_definition.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2017 Therp BV <http://therp.nl>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
from openerp import api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class DocumentDefinition(models.Model):
|
||||||
|
_name = 'document.definition'
|
||||||
|
|
||||||
|
term = fields.Char(help='Term', required=True)
|
||||||
|
definition = fields.Text(help='Definition of term', required=True)
|
||||||
|
|
||||||
|
# stored compute field used for making the letter grouping
|
||||||
|
# need to be stored in order to use grouping
|
||||||
|
first_letter = fields.Char()
|
||||||
|
|
||||||
|
def _get_first_letter(self, text):
|
||||||
|
# if somehow the user starts with one or more whitespaces we trim
|
||||||
|
return text.lstrip()[:1].upper() or 'Blank Term'
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def create(self, vals):
|
||||||
|
vals['first_letter'] = self._get_first_letter(vals['term'])
|
||||||
|
res = super(DocumentDefinition, self).create(vals=vals)
|
||||||
|
return res
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def write(self, vals):
|
||||||
|
for this in self:
|
||||||
|
if vals.get('term'):
|
||||||
|
vals['first_letter'] = this._get_first_letter(vals['term'])
|
||||||
|
res = super(DocumentDefinition, this).write(vals=vals)
|
||||||
|
return res
|
||||||
|
|
||||||
|
# constraint of uniqueness on term, two terms can't have different
|
||||||
|
# definitions
|
||||||
|
|
||||||
|
_sql_constraints = [('term_uniq', 'UNIQUE(term)',
|
||||||
|
'Every term must be unique')]
|
2
document_definition/security/ir.model.access.csv
Normal file
2
document_definition/security/ir.model.access.csv
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||||
|
document_definition_all,document.definition,model_document_definition,,1,1,1,1
|
|
74
document_definition/views/templates.xml
Normal file
74
document_definition/views/templates.xml
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
<record id="view_definition_tree" model="ir.ui.view">
|
||||||
|
<field name="name">document.definition.tree</field>
|
||||||
|
<field name="model">document.definition</field>
|
||||||
|
<field name="priority">100</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Definitions" editable="top">
|
||||||
|
<field name="term"/>
|
||||||
|
<field name="definition"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_definition_form" model="ir.ui.view">
|
||||||
|
<field name="name">document.definition.form</field>
|
||||||
|
<field name="model">document.definition</field>
|
||||||
|
<field name="priority">100</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Definitions">
|
||||||
|
<sheet>
|
||||||
|
<h1>
|
||||||
|
<field name="term"/>
|
||||||
|
</h1>
|
||||||
|
<field name="definition"/>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- filters to group by alphabetical order, and search by term or in
|
||||||
|
definition -->
|
||||||
|
|
||||||
|
<record id="view_definition_filter" model="ir.ui.view">
|
||||||
|
<field name="name">document.definition.search</field>
|
||||||
|
<field name="model">document.definition</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<search string="Definitions">
|
||||||
|
<field name="term" string="Search Term" filter_domain="[('term','ilike',self)]"/>
|
||||||
|
<field name="definition" string="Search in definition" filter_domain="[('definition','ilike',self)]"/>
|
||||||
|
<field name="write_uid"/>
|
||||||
|
<group expand="1" string="Group By...">
|
||||||
|
<filter string="Alphabetical" domain="[]" context="{'group_by':'first_letter'}"/>
|
||||||
|
<filter string="Author" domain="[]" context="{'group_by':'create_uid'}"/>
|
||||||
|
<filter string="Last Contributor" domain="[]" context="{'group_by':'write_uid'}"/>
|
||||||
|
</group>
|
||||||
|
</search>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_definition" model="ir.actions.act_window">
|
||||||
|
<field name="name">Terms and definitions</field>
|
||||||
|
<field name="res_model">document.definition</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="view_id" ref="view_definition_tree"/>
|
||||||
|
<field name="search_view_id" ref="view_definition_filter"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="menu_definition_top"
|
||||||
|
parent="knowledge.menu_document"
|
||||||
|
name="Definitions"
|
||||||
|
sequence="10" />
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="menu_definition"
|
||||||
|
parent="menu_definition_top"
|
||||||
|
name="Definitions"
|
||||||
|
action="action_definition"
|
||||||
|
sequence="10" />
|
||||||
|
</data>
|
||||||
|
</openerp>
|
Loading…
Reference in New Issue
Block a user