Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[18.0][MIG] base_name_search_improved: Migration to 18.0 #3133

Open
wants to merge 76 commits into
base: 18.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
753cc90
base_name_search_improved: friendly and powerful name search
dreispt Jun 1, 2016
854870a
Return all results from the several methods, ordered by best match
dreispt Jun 9, 2016
306aedd
Test if additional domain is honored
dreispt Jul 6, 2016
6ee579d
Honor name_search additional domain
dreispt Jul 6, 2016
d98e419
Do not search on empty string. Fixes #467
dreispt Jul 6, 2016
6315e0e
Bump version
yvaucher Jul 14, 2016
babf412
Fix small typo in readme
Nov 16, 2016
3bc208f
[9.0] MIG Improved Name Search
nicomacr Nov 24, 2016
de30434
# Please enter the commit message for your changes. Lines starting
nicomacr Dec 13, 2016
4950bde
OCA Transbot updated translations from Transifex
oca-transbot Jul 3, 2016
08c0006
[UPD] Update base_name_search_improved.pot
oca-travis Jun 24, 2018
de339ff
Translated using Weblate (Catalan)
mtbochaca Jul 3, 2018
35fa50f
[MIG] base_name_search_improved: Migration to 11.0
zaoral Jul 5, 2018
bbb2e83
[UPD] Update base_name_search_improved.pot
oca-travis Aug 6, 2018
f3c9d85
[UPD] README.rst
OCA-git-bot Aug 24, 2018
90ed139
Update translation files
oca-transbot Nov 26, 2018
2c38c85
[UPD] README.rst
OCA-git-bot Jul 29, 2019
69ff83a
[IMP] base_name_search_improved: black, isort, prettier
jjscarafia Jun 11, 2020
82a4cd9
[IMP] base_name_search_improved: add v12 imp
jjscarafia Jun 11, 2020
e8d3ab9
[IMP] base_name_search_improved: run pre commit again
jjscarafia Jun 11, 2020
5b23563
[MIG] base_name_search_improved: Migration to 13.0
jjscarafia Jun 11, 2020
15a4e04
[IMP] base_name_search_improved: patches
jjscarafia Jun 14, 2020
7873919
[14.0][MIG] base_name_search_improved
kittiu Feb 23, 2021
3b0cb91
[UPD] Update base_name_search_improved.pot
oca-travis Apr 30, 2021
225eab4
[UPD] README.rst
OCA-git-bot Apr 30, 2021
53d5283
[UPD] Update base_name_search_improved.pot
oca-travis Jun 25, 2021
dff73d8
Update translation files
oca-transbot Jun 25, 2021
e88b000
[UPD] Update base_name_search_improved.pot
oca-travis Jul 10, 2021
004422f
Update translation files
oca-transbot Jul 10, 2021
e7f76ae
[UPD] Update base_name_search_improved.pot
oca-travis Jul 19, 2021
1de3484
Update translation files
oca-transbot Jul 19, 2021
b38c92f
[UPD] Update base_name_search_improved.pot
oca-travis Aug 20, 2021
8c373a3
Update translation files
oca-transbot Aug 20, 2021
7386844
[UPD] Update base_name_search_improved.pot
oca-travis Sep 17, 2021
55592a1
Update translation files
oca-transbot Sep 17, 2021
b0f0e35
[UPD] Update base_name_search_improved.pot
oca-travis Oct 12, 2021
36131d9
Update translation files
oca-transbot Oct 13, 2021
266aff4
[UPD] Update base_name_search_improved.pot
oca-travis Nov 27, 2021
d4ed215
Update translation files
oca-transbot Nov 27, 2021
6347052
[UPD] Update base_name_search_improved.pot
oca-travis Jan 10, 2022
163b96f
Update translation files
oca-transbot Jan 10, 2022
1586ca1
Translated using Weblate (Italian)
alessandro-fiorino Jan 14, 2022
1775a54
[IMP] base_name_search_improved: better ux
jjscarafia Mar 10, 2021
c3a11eb
[FIX] base_name_search_improved: use sudo on _get_use_smart_name_search
jjscarafia Mar 11, 2021
926646b
[FIX] base_name_search_improved: tests
jjscarafia Jun 15, 2021
a394e58
[IMP] base_name_search_improved: run pre-commit
jjscarafia Jun 15, 2021
bd96923
[FIX] base_name_search_improved: interactive search
Rad0van Feb 3, 2022
f8cdb8c
[UPD] Update base_name_search_improved.pot
Mar 18, 2022
0bc5ae3
Update translation files
oca-transbot Mar 18, 2022
fba1d98
[UPD] Update base_name_search_improved.pot
Apr 15, 2022
f4c5fe5
Update translation files
oca-transbot Apr 15, 2022
64c694d
[UPD] Update base_name_search_improved.pot
Apr 23, 2022
85e01bf
Update translation files
oca-transbot Apr 23, 2022
59007b4
[UPD] Update base_name_search_improved.pot
Jun 21, 2022
d7f58a0
Update translation files
oca-transbot Jun 21, 2022
17c53cb
[UPD] Update base_name_search_improved.pot
Jun 21, 2022
893e056
Update translation files
oca-transbot Jun 21, 2022
7756b70
[UPD] Update base_name_search_improved.pot
Oct 1, 2022
16000b9
[UPD] README.rst
OCA-git-bot Oct 1, 2022
a97ffcd
Update translation files
oca-transbot Oct 1, 2022
1345029
[MIG] base_name_search_improved: Migration to 16.0
filoquin Nov 29, 2022
e17e536
[UPD] Update base_name_search_improved.pot
Jun 7, 2023
3a8ae21
[UPD] README.rst
OCA-git-bot Jun 7, 2023
2613848
Update translation files
weblate Jun 7, 2023
63fc893
Translated using Weblate (Spanish)
Gelo-fl Jun 9, 2023
ac49b7b
[UPD] README.rst
OCA-git-bot Sep 3, 2023
67ccdb4
Translated using Weblate (Italian)
mymage Sep 21, 2023
4d9dd78
Translated using Weblate (Italian)
mymage Jan 2, 2024
98a76a7
Translated using Weblate (Italian)
mymage Jan 4, 2024
33ade99
[UPD] Update base_name_search_improved.pot
Jan 30, 2024
53af04f
Update translation files
weblate Jan 30, 2024
eb28deb
[FIX] base_name_search_improved: don't patch abstract models
StefanRijnhart Jul 1, 2024
d807245
[IMP] base_name_search_improved: pre-commit execution
rov-adhoc Jan 31, 2024
81aad35
[MIG] base_name_search_improved: Migration to 17.0
rov-adhoc Jan 31, 2024
71b74de
[IMP] base_name_search_improved: pre-commit execution
lef-adhoc Nov 26, 2024
ecc6179
[MIG] base_name_search_improved: Migration to 18.0
lef-adhoc Nov 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 160 additions & 0 deletions base_name_search_improved/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
====================
Improved Name Search
====================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:fe0fce7aeb356dfbf982cb648994712ec1907ee6ab73a221eee4cda4039e7a33
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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%2Fserver--tools-lightgray.png?logo=github
:target: https://github.com/OCA/server-tools/tree/18.0/base_name_search_improved
:alt: OCA/server-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-base_name_search_improved
: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/server-tools&target_branch=18.0
:alt: Try me on Runboat

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

Extends the name search feature to use additional, more relaxed matching
methods, and to allow searching into configurable additional record
fields.

The name search is the lookup feature to select a related record. For
example, selecting a Customer on a new Sales order.

For example, typing "john brown" doesn't match "John M. Brown". The
relaxed search also looks up for records containing all the words, so
"John M. Brown" would be a match. It also tolerates words in a different
order, so searching for "brown john" also works.

|image0|

Additionally, an Administrator can configure other fields to also lookup
into. For example, Customers could be additionally searched by City or
Phone number.

|image2|

How it works:

Regular name search is performed, and the additional search logic is
only triggered if not enough results are found. This way, no overhead is
added on searches that would normally yield results.

But if not enough results are found, then additional search methods are
tried. The specific methods used are:

- Try regular search on each of the additional fields
- Try ordered word search on each of the search fields
- Try unordered word search on each of the search fields

All results found are presented in that order, hopefully presenting them
in order of relevance.

.. |image0| image:: https://raw.githubusercontent.com/OCA/server-tools/11.0/base_name_search_improved/images/image0.png
.. |image2| image:: https://raw.githubusercontent.com/OCA/server-tools/11.0/base_name_search_improved/images/image2.png

**Table of contents**

.. contents::
:local:

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

The fuzzy search is automatically enabled on all Models. Note that this
only affects typing in related fields. The regular ``search()``, used in
the top right search box, is not affected.

Additional search fields can be configured at Settings > Technical >
Database > Models, using the "Name Search Fields" field.

|image1|

.. |image1| image:: https://raw.githubusercontent.com/OCA/server-tools/11.0/base_name_search_improved/images/image1.png

Usage
=====

Just type into any related field, such as Customer on a Sale Order.

Known issues / Roadmap
======================

- Also use fuzzy search, such as the Levenshtein distance:
https://www.postgresql.org/docs/9.5/static/fuzzystrmatch.html
- The list of additional fields to search could benefit from caching,
for efficiency.
- This feature could also be implemented for regular ``search`` on the
``name`` field.
- While adding m2o or other related field that also have an improved
name search, that improved name search is not used (while if
name_search is customizend on a module and you add a field of that
model on another model it works ok). Esto por ejemplo es en productos
si agregamos campo "categoría pública" y a categoría pública le
ponemos "parent_id". Entonces vamos a ver que si buscamos por una
categoría padre no busca nada, en vez si hacemos esa lógica en
name_search de modulo si funciona

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/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/server-tools/issues/new?body=module:%20base_name_search_improved%0Aversion:%2018.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
-------

* Daniel Reis
* ADHOC SA

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

- Daniel Reis <https://github.com/dreispt>
- Kitti U. <[email protected]> (migrate to v14)
- Radovan Skolnik <[email protected]>

Other credits
-------------

The development of this module has been financially supported by:

- Odoo Community Association

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/server-tools <https://github.com/OCA/server-tools/tree/18.0/base_name_search_improved>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 4 additions & 0 deletions base_name_search_improved/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# © 2016 Daniel Reis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from .hooks import uninstall_hook
from . import models
15 changes: 15 additions & 0 deletions base_name_search_improved/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# © 2016 Daniel Reis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Improved Name Search",
"summary": "Friendlier search when typing in relation fields",
"version": "18.0.1.0.0",
"category": "Uncategorized",
"website": "https://github.com/OCA/server-tools",
"author": "Daniel Reis, Odoo Community Association (OCA), ADHOC SA",
"license": "AGPL-3",
"data": ["views/ir_model_views.xml"],
"depends": ["base"],
"installable": True,
"uninstall_hook": "uninstall_hook",
}
15 changes: 15 additions & 0 deletions base_name_search_improved/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import logging

_logger = logging.getLogger(__name__)


def uninstall_hook(env):
_logger.info("Reverting Patches...")
fields_to_unlink = (
env["ir.model.fields"]
.with_context(_force_unlink=True)
.search([("name", "=", "smart_search")])
)
if fields_to_unlink:
fields_to_unlink.unlink()
_logger.info("Done!")
Loading
Loading