Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,47 @@
# Document Quick Access
Odoo addon: document_quick_access
## Installation
```bash
pip install odoo-bringout-oca-server-ux-document_quick_access
```
## Dependencies
This addon depends on:
- web
- barcode_action
## Manifest Information
- **Name**: Document Quick Access
- **Version**: 16.0.1.0.1
- **Category**: N/A
- **License**: AGPL-3
- **Installable**: False
## Source
Based on [OCA/server-ux](https://github.com/OCA/server-ux) branch 16.0, addon `document_quick_access`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Document_quick_access Module - document_quick_access
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for document_quick_access. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,6 @@
# Dependencies
This addon depends on:
- [web](../../odoo-bringout-oca-ocb-web)
- [barcode_action](../../odoo-bringout-oca-server-ux-barcode_action)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon document_quick_access or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-server-ux-document_quick_access"
# or
uv pip install odoo-bringout-oca-server-ux-document_quick_access"
```

View file

@ -0,0 +1,13 @@
# Models
Detected core models and extensions in document_quick_access.
```mermaid
classDiagram
class document_quick_access_rule
class base
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: document_quick_access. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon document_quick_access
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,34 @@
# Security
Access control and security definitions in document_quick_access.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../document_quick_access/security/ir.model.access.csv)**
- 2 model access rules
## Record Rules
Row-level security rules defined in:
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ir.model.access.csv](../document_quick_access/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon document_quick_access
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,108 @@
=====================
Document Quick Access
=====================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:6336b533e39f9dd8fae1ef7d865f442f4efd6361f6870459336256e457363fe0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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--ux-lightgray.png?logo=github
:target: https://github.com/OCA/server-ux/tree/16.0/document_quick_access
:alt: OCA/server-ux
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-ux-16-0/server-ux-16-0-document_quick_access
: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-ux&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to search any kind of records through a launcher.
With this, we can add a QR in our reports in order to search elements faster.
It could be used to add this QR (on a label) on external documents.
**Table of contents**
.. contents::
:local:
Configuration
=============
# Access on developer mode
# Access `Settings > Technical > Document Quick Access`
# Create a record selecting the model, format and priority
Usage
=====
# Click on the QR button upper right in the navbar or access to it with `Alt + Shift + Q`
# A Pop up will be opened. You can scan a QR / barcode
# If the QR / barcode is found, you will be redirected to the record view
Known issues / Roadmap
======================
* It would be interesting to be able to read the QR without clicking the button.
Maybe using a shortcut or directly accessing it.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-ux/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-ux/issues/new?body=module:%20document_quick_access%0Aversion:%2016.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
~~~~~~~
* Creu Blanca
Contributors
~~~~~~~~~~~~
* Enric Tobella <etobella@creublanca.es>
* [APSL](https://apsl.tech):
* Antoni Marroig <amarroig@apsl.net>
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.
.. |maintainer-etobella| image:: https://github.com/etobella.png?size=40px
:target: https://github.com/etobella
:alt: etobella
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-etobella|
This module is part of the `OCA/server-ux <https://github.com/OCA/server-ux/tree/16.0/document_quick_access>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1 @@
from . import models

View file

@ -0,0 +1,25 @@
# Copyright 2019 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Document Quick Access",
"summary": """
Document quick access""",
"version": "16.0.1.0.1",
"license": "AGPL-3",
"author": "Creu Blanca,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/server-ux",
"maintainers": ["etobella"],
"depends": ["web", "barcode_action"],
"external_dependencies": {"python": ["pyzbar", "pdf2image"]},
"data": [
"security/ir.model.access.csv",
"views/document_quick_access_rule.xml",
],
"assets": {
"web.assets_backend": [
"document_quick_access/static/src/js/document_quick_access_launcher.js",
"document_quick_access/static/src/xml/document_quick_access_launcher.xml",
],
},
}

View file

@ -0,0 +1,122 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * document_quick_access
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__active
msgid "Active"
msgstr "Aktivan"
#. module: document_quick_access
#: model_terms:ir.ui.view,arch_db:document_quick_access.document_quick_access_rule_form_view
msgid "Archived"
msgstr "Arhivirano"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__barcode_format
msgid "Barcode Format"
msgstr "Format barkoda"
#. module: document_quick_access
#: model:ir.model,name:document_quick_access.model_base
msgid "Base"
msgstr "Osnova"
#. module: document_quick_access
#: model:ir.model.fields.selection,name:document_quick_access.selection__document_quick_access_rule__barcode_format__b64_standard
msgid "Base64"
msgstr "Base64"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: document_quick_access
#: model:ir.actions.act_window,name:document_quick_access.document_quick_access_rule_act_window
#: model:ir.model,name:document_quick_access.model_document_quick_access_rule
#: model:ir.ui.menu,name:document_quick_access.document_quick_access_rule_menu
msgid "Document Quick Access Rule"
msgstr "Pravilo brzog pristupa dokumentu"
#. module: document_quick_access
#. odoo-python
#: code:addons/document_quick_access/models/document_quick_access_rule.py:0
#, python-format
msgid "Document cannot be found"
msgstr "Dokument se ne može pronaći"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__id
msgid "ID"
msgstr "ID"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__model_id
msgid "Model"
msgstr "Model"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__name
msgid "Name"
msgstr "Naziv:"
#. module: document_quick_access
#. odoo-python
#: code:addons/document_quick_access/models/document_quick_access_rule.py:0
#, python-format
msgid "No format has been found for this record"
msgstr "Nije pronađen format za ovaj zapis"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__priority
msgid "Priority"
msgstr "Prioritet"
#. module: document_quick_access
#. odoo-javascript
#: code:addons/document_quick_access/static/src/xml/document_quick_access_launcher.xml:0
#, python-format
msgid "QR search"
msgstr "QR pretraga"
#. module: document_quick_access
#: model:ir.model.fields.selection,name:document_quick_access.selection__document_quick_access_rule__barcode_format__standard
msgid "Standard"
msgstr "Standardno"

View file

@ -0,0 +1,122 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * document_quick_access
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__active
msgid "Active"
msgstr ""
#. module: document_quick_access
#: model_terms:ir.ui.view,arch_db:document_quick_access.document_quick_access_rule_form_view
msgid "Archived"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__barcode_format
msgid "Barcode Format"
msgstr ""
#. module: document_quick_access
#: model:ir.model,name:document_quick_access.model_base
msgid "Base"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields.selection,name:document_quick_access.selection__document_quick_access_rule__barcode_format__b64_standard
msgid "Base64"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__create_uid
msgid "Created by"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__create_date
msgid "Created on"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__display_name
msgid "Display Name"
msgstr ""
#. module: document_quick_access
#: model:ir.actions.act_window,name:document_quick_access.document_quick_access_rule_act_window
#: model:ir.model,name:document_quick_access.model_document_quick_access_rule
#: model:ir.ui.menu,name:document_quick_access.document_quick_access_rule_menu
msgid "Document Quick Access Rule"
msgstr ""
#. module: document_quick_access
#. odoo-python
#: code:addons/document_quick_access/models/document_quick_access_rule.py:0
#, python-format
msgid "Document cannot be found"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__id
msgid "ID"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule____last_update
msgid "Last Modified on"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__write_uid
msgid "Last Updated by"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__write_date
msgid "Last Updated on"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__model_id
msgid "Model"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__name
msgid "Name"
msgstr ""
#. module: document_quick_access
#. odoo-python
#: code:addons/document_quick_access/models/document_quick_access_rule.py:0
#, python-format
msgid "No format has been found for this record"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__priority
msgid "Priority"
msgstr ""
#. module: document_quick_access
#. odoo-javascript
#: code:addons/document_quick_access/static/src/xml/document_quick_access_launcher.xml:0
#, python-format
msgid "QR search"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields.selection,name:document_quick_access.selection__document_quick_access_rule__barcode_format__standard
msgid "Standard"
msgstr ""

View file

@ -0,0 +1,128 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * document_quick_access
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-03-16 11:46+0000\n"
"Last-Translator: Ana Suárez <ana.suarez@qubiq.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__active
msgid "Active"
msgstr "Activo"
#. module: document_quick_access
#: model_terms:ir.ui.view,arch_db:document_quick_access.document_quick_access_rule_form_view
msgid "Archived"
msgstr ""
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__barcode_format
msgid "Barcode Format"
msgstr "Formato"
#. module: document_quick_access
#: model:ir.model,name:document_quick_access.model_base
msgid "Base"
msgstr "Base"
#. module: document_quick_access
#: model:ir.model.fields.selection,name:document_quick_access.selection__document_quick_access_rule__barcode_format__b64_standard
msgid "Base64"
msgstr "Base64"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__create_date
msgid "Created on"
msgstr "Creado en"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: document_quick_access
#: model:ir.actions.act_window,name:document_quick_access.document_quick_access_rule_act_window
#: model:ir.model,name:document_quick_access.model_document_quick_access_rule
#: model:ir.ui.menu,name:document_quick_access.document_quick_access_rule_menu
msgid "Document Quick Access Rule"
msgstr "Regla de acceso rápido"
#. module: document_quick_access
#. odoo-python
#: code:addons/document_quick_access/models/document_quick_access_rule.py:0
#, python-format
msgid "Document cannot be found"
msgstr "No se ha encontrado documento"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__id
msgid "ID"
msgstr "ID"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__write_uid
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__write_date
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__model_id
msgid "Model"
msgstr "Modelo"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__name
msgid "Name"
msgstr "Nombre"
#. module: document_quick_access
#. odoo-python
#: code:addons/document_quick_access/models/document_quick_access_rule.py:0
#, python-format
msgid "No format has been found for this record"
msgstr "No se ha encontrado ningún formato para este registro"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__priority
msgid "Priority"
msgstr "Prioridad"
#. module: document_quick_access
#. odoo-javascript
#: code:addons/document_quick_access/static/src/xml/document_quick_access_launcher.xml:0
#, python-format
msgid "QR search"
msgstr "Buscar QR"
#. module: document_quick_access
#: model:ir.model.fields.selection,name:document_quick_access.selection__document_quick_access_rule__barcode_format__standard
msgid "Standard"
msgstr "Estándar"
#~ msgid "base"
#~ msgstr "base"

View file

@ -0,0 +1,125 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * document_quick_access
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-07-08 14:58+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__active
msgid "Active"
msgstr "Attiva"
#. module: document_quick_access
#: model_terms:ir.ui.view,arch_db:document_quick_access.document_quick_access_rule_form_view
msgid "Archived"
msgstr "In archivio"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__barcode_format
msgid "Barcode Format"
msgstr "Formato codice a barre"
#. module: document_quick_access
#: model:ir.model,name:document_quick_access.model_base
msgid "Base"
msgstr "Base"
#. module: document_quick_access
#: model:ir.model.fields.selection,name:document_quick_access.selection__document_quick_access_rule__barcode_format__b64_standard
msgid "Base64"
msgstr "Base64"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__create_date
msgid "Created on"
msgstr "Creato il"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: document_quick_access
#: model:ir.actions.act_window,name:document_quick_access.document_quick_access_rule_act_window
#: model:ir.model,name:document_quick_access.model_document_quick_access_rule
#: model:ir.ui.menu,name:document_quick_access.document_quick_access_rule_menu
msgid "Document Quick Access Rule"
msgstr "Regola accesso rapido documento"
#. module: document_quick_access
#. odoo-python
#: code:addons/document_quick_access/models/document_quick_access_rule.py:0
#, python-format
msgid "Document cannot be found"
msgstr "Il documento non è presente"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__id
msgid "ID"
msgstr "ID"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__model_id
msgid "Model"
msgstr "Modello"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__name
msgid "Name"
msgstr "Nome"
#. module: document_quick_access
#. odoo-python
#: code:addons/document_quick_access/models/document_quick_access_rule.py:0
#, python-format
msgid "No format has been found for this record"
msgstr "Nessun formato trovato per questo record"
#. module: document_quick_access
#: model:ir.model.fields,field_description:document_quick_access.field_document_quick_access_rule__priority
msgid "Priority"
msgstr "Priorità"
#. module: document_quick_access
#. odoo-javascript
#: code:addons/document_quick_access/static/src/xml/document_quick_access_launcher.xml:0
#, python-format
msgid "QR search"
msgstr "Ricerca QR"
#. module: document_quick_access
#: model:ir.model.fields.selection,name:document_quick_access.selection__document_quick_access_rule__barcode_format__standard
msgid "Standard"
msgstr "Standard"

View file

@ -0,0 +1,2 @@
from . import document_quick_access_rule
from . import base

View file

@ -0,0 +1,20 @@
# Copyright 2019 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class Base(models.AbstractModel):
_inherit = "base"
def get_quick_access_code(self):
self.ensure_one()
model_id = (
self.env["ir.model"].sudo().search([("model", "=", self._name)], limit=1).id
)
rule = self.env["document.quick.access.rule"].search(
[("model_id", "=", model_id)], limit=1
)
if not rule:
return False
return rule.get_code(self)

View file

@ -0,0 +1,102 @@
# Copyright 2019 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import base64
import binascii
import json
import re
from odoo import _, api, fields, models
from odoo.exceptions import UserError
class DocumentQuickAccessRule(models.Model):
_name = "document.quick.access.rule"
_description = "Document Quick Access Rule"
_order = "priority,model_id"
name = fields.Char(required=True)
priority = fields.Integer(default=16, required=True)
barcode_format = fields.Selection(
[("standard", "Standard"), ("b64_standard", "Base64")],
required=True,
default="standard",
)
# All formats must have a function to determine the code from a record and
# get the record from the code
model_id = fields.Many2one("ir.model", required=True, ondelete="cascade")
active = fields.Boolean(default=True)
def get_code(self, record):
self.ensure_one()
return getattr(self, "_get_code_%s" % self.barcode_format)(record)
def _get_code_b64_standard(self, record):
return base64.b64encode(self._get_code_standard(record).encode("utf-8")).decode(
"utf-8"
)
def _get_code_standard(self, record):
return "{},{}".format(record._name, record.id)
def _check_code_b64_standard(self, code):
try:
aux_code = base64.b64decode(code.encode("utf-8"), validate=True)
except binascii.Error:
return False
return self._check_code_standard(aux_code.decode("utf-8"))
def _check_code_standard(self, code):
return re.match("^[a-zA-Z0-9\\.]*,[0-9]*$", code)
def _read_code_b64_standard(self, code):
aux_code = base64.b64decode(code.encode("utf-8")).decode("utf-8")
return self._read_code_standard(aux_code)
def _read_code_standard(self, code):
params = code.split(",")
return self.env[params[0]].browse(int(params[1])).exists()
def read_code_action(self, code):
try:
record = self.read_code(code)
except UserError:
return {
"type": "ir.actions.act_window",
"name": "Search QR",
"res_model": "barcode.action",
"views": [[False, "form"]],
"target": "new",
"context": json.dumps(
{
"default_model": "document.quick.access.rule",
"default_method": "read_code_action",
"default_state": "warning",
"default_status": _("Document cannot be found"),
}
),
}
record.check_access_rights("read")
result = {
"type": "ir.actions.act_window",
"res_model": record._name,
"views": [[record.get_formview_id(), "form"]],
"res_id": record.id,
"target": "main",
}
return result
@api.model
def read_code(self, code):
formats = self._fields["barcode_format"].selection
for barcode_format, _format_name in formats:
if getattr(self, "_check_code_%s" % barcode_format)(code):
record = getattr(self, "_read_code_%s" % barcode_format)(code)
if record and self.search(
[
("model_id.model", "=", record._name),
("barcode_format", "=", barcode_format),
]
):
return record
raise UserError(_("No format has been found for this record"))

View file

@ -0,0 +1,3 @@
# Access on developer mode
# Access `Settings > Technical > Document Quick Access`
# Create a record selecting the model, format and priority

View file

@ -0,0 +1,3 @@
* Enric Tobella <etobella@creublanca.es>
* [APSL](https://apsl.tech):
* Antoni Marroig <amarroig@apsl.net>

View file

@ -0,0 +1,3 @@
This module allows to search any kind of records through a launcher.
With this, we can add a QR in our reports in order to search elements faster.
It could be used to add this QR (on a label) on external documents.

View file

@ -0,0 +1,2 @@
* It would be interesting to be able to read the QR without clicking the button.
Maybe using a shortcut or directly accessing it.

View file

@ -0,0 +1,3 @@
# Click on the QR button upper right in the navbar or access to it with `Alt + Shift + Q`
# A Pop up will be opened. You can scan a QR / barcode
# If the QR / barcode is found, you will be redirected to the record view

View file

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_document_quick_access_rule_user,document.quick.access.rule.user,model_document_quick_access_rule,base.group_user,1,0,0,0
access_document_quick_access_rule_manager,document.quick.acess.rule.manager,model_document_quick_access_rule,base.group_erp_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_document_quick_access_rule_user document.quick.access.rule.user model_document_quick_access_rule base.group_user 1 0 0 0
3 access_document_quick_access_rule_manager document.quick.acess.rule.manager model_document_quick_access_rule base.group_erp_manager 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,451 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Document Quick Access</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="document-quick-access">
<h1 class="title">Document Quick Access</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:6336b533e39f9dd8fae1ef7d865f442f4efd6361f6870459336256e457363fe0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-ux/tree/16.0/document_quick_access"><img alt="OCA/server-ux" src="https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-ux-16-0/server-ux-16-0-document_quick_access"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/server-ux&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows to search any kind of records through a launcher.
With this, we can add a QR in our reports in order to search elements faster.
It could be used to add this QR (on a label) on external documents.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-3">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-4">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-5">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-6">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-7">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-8">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
<p># Access on developer mode
# Access <cite>Settings &gt; Technical &gt; Document Quick Access</cite>
# Create a record selecting the model, format and priority</p>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
<p># Click on the QR button upper right in the navbar or access to it with <cite>Alt + Shift + Q</cite>
# A Pop up will be opened. You can scan a QR / barcode
# If the QR / barcode is found, you will be redirected to the record view</p>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#toc-entry-3">Known issues / Roadmap</a></h1>
<ul class="simple">
<li>It would be interesting to be able to read the QR without clicking the button.
Maybe using a shortcut or directly accessing it.</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-4">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/server-ux/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/server-ux/issues/new?body=module:%20document_quick_access%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-5">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-6">Authors</a></h2>
<ul class="simple">
<li>Creu Blanca</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-7">Contributors</a></h2>
<ul class="simple">
<li>Enric Tobella &lt;<a class="reference external" href="mailto:etobella&#64;creublanca.es">etobella&#64;creublanca.es</a>&gt;</li>
<li>[APSL](<a class="reference external" href="https://apsl.tech">https://apsl.tech</a>):
* Antoni Marroig &lt;<a class="reference external" href="mailto:amarroig&#64;apsl.net">amarroig&#64;apsl.net</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-8">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/etobella"><img alt="etobella" src="https://github.com/etobella.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/server-ux/tree/16.0/document_quick_access">OCA/server-ux</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,33 @@
odoo.define("document_quick_access.document_quick_access_launcher", function (require) {
"use strict";
var SystrayMenu = require("web.SystrayMenu");
var Widget = require("web.Widget");
var LauncherMenu = Widget.extend({
template: "document_quick_access_launcher.view.Menu",
events: {
click: "on_click_find_document",
},
on_click_find_document: function (event) {
event.preventDefault();
event.stopPropagation();
var context = {};
context.default_model = "document.quick.access.rule";
context.default_method = "read_code_action";
return this.do_action({
type: "ir.actions.act_window",
name: "Search QR",
res_model: "barcode.action",
views: [[false, "form"]],
target: "new",
context: context,
});
},
});
SystrayMenu.Items.push(LauncherMenu);
return {
LauncherMenu: LauncherMenu,
};
});

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates>
<t t-name="document_quick_access_launcher.view.Menu">
<div class="o_mail_systray_item dropdown">
<a
class="dropdown-toggle o-no-caret"
data-display="static"
role="button"
aria-expanded="false"
title="QR search"
href="#"
accesskey="q"
>
<i class="fa fa-qrcode" />
</a>
</div>
</t>
</templates>

View file

@ -0,0 +1 @@
from . import test_document_quick_access

View file

@ -0,0 +1,53 @@
# Copyright 2019 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.exceptions import UserError
from odoo.tests.common import TransactionCase, tagged
@tagged("post_install", "-at_install")
class TestDocumentQuickAccess(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.model = "res.partner"
cls.model_id = cls.env.ref("base.model_res_partner")
cls.rule = cls.env["document.quick.access.rule"].create(
{
"model_id": cls.model_id.id,
"name": "PARTNER",
"priority": 1,
"barcode_format": "standard",
}
)
cls.partner = cls.env["res.partner"].create({"name": "Partner test"})
def test_generation(self):
code = self.partner.get_quick_access_code()
self.assertTrue(code)
partner = self.env["document.quick.access.rule"].read_code(code)
self.assertEqual(partner, self.partner)
action = self.env["document.quick.access.rule"].read_code_action(code)
self.assertEqual(action["res_model"], partner._name)
self.assertEqual(action["res_id"], partner.id)
def test_not_found(self):
code = self.partner.get_quick_access_code()
self.assertTrue(code)
self.rule.toggle_active()
with self.assertRaises(UserError):
self.env["document.quick.access.rule"].read_code(code)
action = self.env["document.quick.access.rule"].read_code_action(code)
self.assertEqual(action["res_model"], "barcode.action")
def test_no_code(self):
self.rule.toggle_active()
self.assertFalse(self.partner.get_quick_access_code())
def test_generation_b64(self):
self.rule.barcode_format = "b64_standard"
self.test_generation()
def test_not_found_b64(self):
self.rule.barcode_format = "b64_standard"
self.test_not_found()

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Creu Blanca
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="document_quick_access_rule_form_view" model="ir.ui.view">
<field
name="name"
>document.quick.access.rule.form (in document_quick_access)</field>
<field name="model">document.quick.access.rule</field>
<field name="arch" type="xml">
<form>
<header />
<sheet>
<widget
name="web_ribbon"
title="Archived"
bg_color="bg-danger"
attrs="{'invisible': [('active', '=', True)]}"
/>
<field name="active" invisible="1" />
<h1>
<field name="name" />
</h1>
<group>
<field name="barcode_format" />
<field name="model_id" />
<field name="priority" />
</group>
</sheet>
</form>
</field>
</record>
<record id="document_quick_access_rule_search_view" model="ir.ui.view">
<field
name="name"
>document.quick.access.rule.search (in document_quick_access)</field>
<field name="model">document.quick.access.rule</field>
<field name="arch" type="xml">
<search>
<field name="name" />
<field name="model_id" />
<field name="barcode_format" />
</search>
</field>
</record>
<record id="document_quick_access_rule_tree_view" model="ir.ui.view">
<field
name="name"
>document.quick.access.rule.tree (in document_quick_access)</field>
<field name="model">document.quick.access.rule</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="model_id" />
<field name="barcode_format" />
</tree>
</field>
</record>
<record id="document_quick_access_rule_act_window" model="ir.actions.act_window">
<field name="name">Document Quick Access Rule</field>
<field name="res_model">document.quick.access.rule</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">{}</field>
</record>
<record id="document_quick_access_rule_menu" model="ir.ui.menu">
<field name="name">Document Quick Access Rule</field>
<field name="parent_id" ref="base.next_id_6" />
<field name="action" ref="document_quick_access_rule_act_window" />
<field name="sequence" eval="16" />
</record>
</odoo>

View file

@ -0,0 +1,44 @@
[project]
name = "odoo-bringout-oca-server-ux-document_quick_access"
version = "16.0.0"
description = "Document Quick Access -
Document quick access"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-web>=16.0.0",
"odoo-bringout-oca-server-ux-barcode_action>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["document_quick_access"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]