mirror of
https://github.com/bringout/ventor.git
synced 2026-04-21 08:12:03 +02:00
Initial commit: Ventor Odoo packages (4 packages)
This commit is contained in:
commit
1f20ad87e6
190 changed files with 10375 additions and 0 deletions
46
odoo-bringout-ventor-custom_import_wizard/README.md
Normal file
46
odoo-bringout-ventor-custom_import_wizard/README.md
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# Custom Import Wizard
|
||||
|
||||
Custom Odoo addon: custom_import_wizard
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-ventor-custom_import_wizard
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Custom Import Wizard
|
||||
- **Version**: 16.0.1.0.0
|
||||
- **Category**: Tools
|
||||
- **License**: LGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Custom addon from bringout-ventor vendor, addon `custom_import_wizard`.
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original LGPL-3 license from the addon.
|
||||
|
||||
## 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
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Custom Import Wizard
|
||||
====================
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
# Localfolder:
|
||||
from . import models
|
||||
from . import wizard
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# pylint: disable=missing-docstring
|
||||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
{
|
||||
"name": "Custom Import Wizard",
|
||||
"category": "Tools",
|
||||
"version": "16.0.1.0.0",
|
||||
"website": "https://ventor.tech",
|
||||
"author": "VentorTech OU",
|
||||
"license": "LGPL-3",
|
||||
"depends": [],
|
||||
"data": [
|
||||
"security/security.xml",
|
||||
"security/ir.model.access.csv",
|
||||
"views/custom_import_history.xml",
|
||||
"wizard/custom_import_wizard.xml",
|
||||
"wizard/info_result_import_wizard.xml",
|
||||
],
|
||||
"external_dependencies": {"python": ["xlrd"]},
|
||||
"installable": True,
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Custom Import Wizard
|
||||
====================
|
||||
|
|
@ -0,0 +1,230 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * custom_import_wizard
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 15.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-18 13:42+0000\n"
|
||||
"PO-Revision-Date: 2022-08-18 13:42+0000\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: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Are you sure?"
|
||||
msgstr "Are you sure?"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Cancel"
|
||||
msgstr "Otkaži"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__create_uid
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__create_uid
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Kreirao"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__create_date
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__create_date
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Kreirano"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:res.groups,name:custom_import_wizard.custom_import_group_user
|
||||
msgid "Custom Import"
|
||||
msgstr "Prilagođeni uvoz"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model,name:custom_import_wizard.model_custom_import_history
|
||||
msgid "Custom Import History"
|
||||
msgstr "Prilagođeni uvoz History"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model,name:custom_import_wizard.model_custom_import_wizard
|
||||
msgid "Custom Import Wizard"
|
||||
msgstr "Prilagođeni uvoz Čarobnjak"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__display_name
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__display_name
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Prikazani naziv"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__error_details
|
||||
msgid "Error Details"
|
||||
msgstr "Greška Detalji"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__extra_info
|
||||
msgid "Extra Info"
|
||||
msgstr "Dodatne informacije"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Final Import"
|
||||
msgstr "Final Uvoz"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__formatted_file
|
||||
msgid "Formatted File"
|
||||
msgstr "Formaatted File"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__formatted_file_name
|
||||
msgid "Formatted File Name"
|
||||
msgstr "Formaatted File Naziv"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__id
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__id
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Import"
|
||||
msgstr "Uvoz"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__name
|
||||
msgid "Import Date"
|
||||
msgstr "Uvoz Datum"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_history_view_form
|
||||
msgid "Import History"
|
||||
msgstr "Uvoz History"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_history_view_form
|
||||
msgid "Imported by"
|
||||
msgstr "Uvozed by"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.view_info_result_import_wizard
|
||||
msgid "Info"
|
||||
msgstr "Informacija"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model,name:custom_import_wizard.model_info_result_import_wizard
|
||||
msgid "Info Result Import Wizard"
|
||||
msgstr "Info Result Uvoz Čarobnjak"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__message
|
||||
msgid "Info: "
|
||||
msgstr "Info: "
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history____last_update
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard____last_update
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Zadnje mijenjano"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__write_uid
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__write_uid
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Zadnji ažurirao"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__write_date
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__write_date
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Zadnje ažurirano"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__model
|
||||
msgid "Model"
|
||||
msgstr "Model"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.view_info_result_import_wizard
|
||||
msgid "OK"
|
||||
msgstr "U redu"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:res.groups,comment:custom_import_wizard.custom_import_group_user
|
||||
msgid "Only responsible can access import functionallity"
|
||||
msgstr "Samo odgovorna osoba može pristupiti funkciji uvoza"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__original_file
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__original_file
|
||||
msgid "Original File"
|
||||
msgstr "Original File"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__original_file_name
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__original_file_name
|
||||
msgid "Original File Name"
|
||||
msgstr "Original File Naziv"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__result_file
|
||||
msgid "Result File"
|
||||
msgstr "Result File"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__result_file_name
|
||||
msgid "Result File Name"
|
||||
msgstr "Result File Naziv"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__sample_file
|
||||
msgid "Sample File"
|
||||
msgstr "Sample File"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Sample Format"
|
||||
msgstr "Sample Formaat"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: code:addons/custom_import_wizard/wizard/custom_import_wizard.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Successfully imported: {} | Duplicates not imported: {} | Error importing "
|
||||
"(bad info): {}"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Test Import"
|
||||
msgstr "Test Uvoz"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__total_duplicated
|
||||
msgid "Total Duplicated"
|
||||
msgstr "Ukupno Duplicated"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__total_errors
|
||||
msgid "Total Errors"
|
||||
msgstr "Ukupno Greškas"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__total_imported
|
||||
msgid "Total Imported"
|
||||
msgstr "Ukupno Uvozed"
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__user_id
|
||||
msgid "User"
|
||||
msgstr "Korisnik"
|
||||
|
|
@ -0,0 +1,230 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * custom_import_wizard
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 15.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-18 13:42+0000\n"
|
||||
"PO-Revision-Date: 2022-08-18 13:42+0000\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: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Are you sure?"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__create_uid
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__create_uid
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__create_date
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__create_date
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:res.groups,name:custom_import_wizard.custom_import_group_user
|
||||
msgid "Custom Import"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model,name:custom_import_wizard.model_custom_import_history
|
||||
msgid "Custom Import History"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model,name:custom_import_wizard.model_custom_import_wizard
|
||||
msgid "Custom Import Wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__display_name
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__display_name
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__error_details
|
||||
msgid "Error Details"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__extra_info
|
||||
msgid "Extra Info"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Final Import"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__formatted_file
|
||||
msgid "Formatted File"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__formatted_file_name
|
||||
msgid "Formatted File Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__id
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__id
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Import"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__name
|
||||
msgid "Import Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_history_view_form
|
||||
msgid "Import History"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_history_view_form
|
||||
msgid "Imported by"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.view_info_result_import_wizard
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model,name:custom_import_wizard.model_info_result_import_wizard
|
||||
msgid "Info Result Import Wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__message
|
||||
msgid "Info: "
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history____last_update
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard____last_update
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__write_uid
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__write_uid
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__write_date
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__write_date
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_info_result_import_wizard__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__model
|
||||
msgid "Model"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.view_info_result_import_wizard
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:res.groups,comment:custom_import_wizard.custom_import_group_user
|
||||
msgid "Only responsible can access import functionallity"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__original_file
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__original_file
|
||||
msgid "Original File"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__original_file_name
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__original_file_name
|
||||
msgid "Original File Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__result_file
|
||||
msgid "Result File"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__result_file_name
|
||||
msgid "Result File Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_wizard__sample_file
|
||||
msgid "Sample File"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Sample Format"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: code:addons/custom_import_wizard/wizard/custom_import_wizard.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Successfully imported: {} | Duplicates not imported: {} | Error importing "
|
||||
"(bad info): {}"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model_terms:ir.ui.view,arch_db:custom_import_wizard.custom_import_wizard_view_form
|
||||
msgid "Test Import"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__total_duplicated
|
||||
msgid "Total Duplicated"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__total_errors
|
||||
msgid "Total Errors"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__total_imported
|
||||
msgid "Total Imported"
|
||||
msgstr ""
|
||||
|
||||
#. module: custom_import_wizard
|
||||
#: model:ir.model.fields,field_description:custom_import_wizard.field_custom_import_history__user_id
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
# Localfolder:
|
||||
from . import custom_import_history
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
"""
|
||||
Copyright 2020 VentorTech OU
|
||||
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
"""
|
||||
|
||||
# Stdlib:
|
||||
from datetime import datetime
|
||||
|
||||
# Odoo:
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
# pylint: disable=too-few-public-methods
|
||||
class CustomImportHistory(models.Model):
|
||||
""" History for import """
|
||||
|
||||
_name = "custom.import.history"
|
||||
_description = "Custom Import History"
|
||||
|
||||
name = fields.Datetime(default=lambda self: datetime.now(), string="Import Date")
|
||||
original_file = fields.Binary()
|
||||
formatted_file = fields.Binary()
|
||||
original_file_name = fields.Char()
|
||||
formatted_file_name = fields.Char()
|
||||
total_imported = fields.Integer()
|
||||
total_duplicated = fields.Integer()
|
||||
total_errors = fields.Integer()
|
||||
user_id = fields.Many2one("res.users", default=lambda self: self.env.user)
|
||||
model = fields.Char()
|
||||
extra_info = fields.Char()
|
||||
error_details = fields.Char()
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
import_history,import_history,model_custom_import_history,custom_import_wizard.custom_import_group_user,1,0,1,0
|
||||
import_custom_wizard,import_custom_wizard,model_custom_import_wizard,custom_import_wizard.custom_import_group_user,1,0,1,0
|
||||
info_result_import_wizard,info_result_import_wizard,model_info_result_import_wizard,custom_import_wizard.custom_import_group_user,1,0,1,0
|
||||
import_history_admin,import_history,model_custom_import_history,base.group_system,1,1,1,1
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
<odoo>
|
||||
<record id="custom_import_group_user" model="res.groups">
|
||||
<field name="name">Custom Import</field>
|
||||
<field name="comment">Only responsible can access import functionallity</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
|
|
@ -0,0 +1,29 @@
|
|||
<section class="oe_container">
|
||||
<div class="oe_row">
|
||||
<div class="oe_span12">
|
||||
<h2 class="oe_slogan">Custom Import Wizard</h2>
|
||||
</div>
|
||||
<div class="oe_span12" style="text-align: center; margin-bottom: 5px">
|
||||
<p style="padding: 5px; font-size: 16px; font-weight: bold; background-color: yellow; display: inline">
|
||||
TO AVOID ANY ISSUES, PLEASE, USE ALWAYS LATEST VERSION FROM OUR GITHUB REPOSITORY -
|
||||
<a href="https://github.com/ventor-tech/merp/tree/16.0">
|
||||
https://github.com/ventor-tech/merp/tree/16.0
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<div class="oe_span12">
|
||||
<h2 class="oe_slogan">Notes</h2>
|
||||
<p class="oe_mt32">
|
||||
<a target="_blank" href="https://ventor.tech/">VentorTech (https://ventor.tech/)</a> is company specialized on building Personalized Inventory and Product Management System.
|
||||
</p>
|
||||
<p class="oe_mt32">
|
||||
For all questions contact <a target="_blank" href="mailto:hello@ventor.tech">hello@ventor.tech</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<odoo>
|
||||
|
||||
<!-- custom.import.history form view -->
|
||||
<record id="custom_import_history_view_form" model="ir.ui.view">
|
||||
<field name="name">custom.import.history.view.form</field>
|
||||
<field name="model">custom.import.history</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Import History" create="false" duplicate="false">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="user_id" string="Imported by"/>
|
||||
<field name="model"/>
|
||||
<field name="original_file_name" invisible="1"/>
|
||||
<field name="formatted_file_name" invisible="1"/>
|
||||
<field name="original_file" widget="binary" filename="original_file_name" />
|
||||
<field name="formatted_file" widget="binary" filename="formatted_file_name"/>
|
||||
<field name="total_imported"/>
|
||||
<field name="total_duplicated"/>
|
||||
<field name="total_errors"/>
|
||||
<field name="extra_info" widget="text"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- crm.lead.import.history tree view -->
|
||||
<record id="custom_import_history_view_tree" model="ir.ui.view">
|
||||
<field name="name">custom.import.history.view.tree</field>
|
||||
<field name="model">custom.import.history</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree import ="false" create="false">
|
||||
<field name="model"/>
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
# Localfolder:
|
||||
from . import custom_import_wizard
|
||||
from . import info_result_import_wizard
|
||||
|
|
@ -0,0 +1,257 @@
|
|||
"""
|
||||
Copyright 2020 VentorTech OU
|
||||
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
"""
|
||||
|
||||
# Stdlib:
|
||||
import binascii
|
||||
import io
|
||||
import logging
|
||||
from collections import defaultdict
|
||||
|
||||
# Odoo:
|
||||
from odoo import _, fields, models
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
# Thirdparty:
|
||||
import xlrd
|
||||
|
||||
try:
|
||||
from odoo.tools.misc import xlsxwriter
|
||||
except ImportError:
|
||||
import xlsxwriter
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
IMPORT_STATUSES = ["success", "error", "duplicate"]
|
||||
|
||||
|
||||
class CustomImportWizard(models.TransientModel):
|
||||
""" Allows you to import records without duplicates and errors """
|
||||
|
||||
_name = "custom.import.wizard"
|
||||
_description = "Custom Import Wizard"
|
||||
|
||||
original_file = fields.Binary()
|
||||
original_file_name = fields.Char()
|
||||
result_file = fields.Binary()
|
||||
result_file_name = fields.Char()
|
||||
sample_file = fields.Binary()
|
||||
|
||||
def read_original_file(self, no_convert_indexes=None):
|
||||
""" Get data from imported file """
|
||||
|
||||
if no_convert_indexes is None:
|
||||
no_convert_indexes = []
|
||||
if not self.original_file:
|
||||
raise ValidationError('No file!')
|
||||
book = xlrd.open_workbook(
|
||||
file_contents=binascii.a2b_base64(self.original_file) or b""
|
||||
)
|
||||
sheet = book.sheet_by_index(0)
|
||||
lines = []
|
||||
for row_no in range(1, sheet.nrows):
|
||||
row = sheet.row(row_no)
|
||||
if all([not str(cell.value).strip() for cell in row]):
|
||||
continue
|
||||
lines.append(self.read_original_line(row))
|
||||
return lines
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
def read_original_line(self, row):
|
||||
""" This method is for formatting raw data from a cell """
|
||||
|
||||
line = {"values": [], "errors": [], "status": "success"}
|
||||
for cell in row:
|
||||
line["values"].append(str(cell.value))
|
||||
return line
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
def _get_formats(self):
|
||||
return {
|
||||
"header": {"align": "center", "bold": True, "font_size": "10px"},
|
||||
"success": {"font_size": "8px"},
|
||||
"error": {"font_size": "8px", "bg_color": "#fccfac"},
|
||||
"duplicate": {"font_size": "8px", "bg_color": "#f29d9d"},
|
||||
}
|
||||
|
||||
def write_result_file(self, headers, lines):
|
||||
"""
|
||||
Writes result XLSX file
|
||||
Arguments:
|
||||
headers {list} -- List of column headers ['Company Name', 'Email']
|
||||
]
|
||||
lines {list} -- List of dictionaries [
|
||||
{
|
||||
'values': ['My Company', 'test@example.com'],
|
||||
'errors': [],
|
||||
'status': 'success'
|
||||
},
|
||||
{
|
||||
'values': ['Mega LLC', 'mega@example.com'],
|
||||
'errors': ['Error 1', 'Error 2'],
|
||||
'status': 'error'
|
||||
},
|
||||
]
|
||||
"""
|
||||
with io.BytesIO() as output:
|
||||
with xlsxwriter.Workbook(output, {"in_memory": True}) as workbook:
|
||||
sheet = workbook.add_worksheet()
|
||||
sheet.set_column(0, 12, 30)
|
||||
|
||||
col = row = 0
|
||||
# Write headers
|
||||
for header in headers:
|
||||
sheet.write(row, col, header)
|
||||
col += 1
|
||||
|
||||
def _write_lines_by_status(lines_by_status, row):
|
||||
for line in lines_by_status:
|
||||
row += 1
|
||||
col = 0
|
||||
# Write line values
|
||||
for val in line["values"]:
|
||||
sheet.write(row, col, val)
|
||||
col += 1
|
||||
# Write Status
|
||||
sheet.write(row, col, line["status"])
|
||||
# Write Errors
|
||||
col += 1
|
||||
sheet.write(row, col, "; ".join(line["errors"]))
|
||||
|
||||
return row
|
||||
|
||||
for status in IMPORT_STATUSES:
|
||||
row = _write_lines_by_status(
|
||||
filter(lambda l, st=status: l["status"] == st, lines), row
|
||||
)
|
||||
|
||||
output.seek(0)
|
||||
self.result_file = binascii.b2a_base64(output.read())
|
||||
self.result_file_name = self.original_file_name.replace(
|
||||
".xlsx", "_formatted.xlsx"
|
||||
)
|
||||
|
||||
def download_result_file(self):
|
||||
""" Downloading file from odoo field"""
|
||||
|
||||
return {
|
||||
"name": "Result File",
|
||||
"type": "ir.actions.act_url",
|
||||
"url": (
|
||||
"/web/content/?model={model}&id={id}&field=result_file&"
|
||||
"download=true&filename={fname}"
|
||||
).format(model=self._name, id=self.id, fname=self.result_file_name),
|
||||
"target": "new",
|
||||
}
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
def _get_model_name(self):
|
||||
return ""
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
def _get_extra_info(self):
|
||||
return ""
|
||||
|
||||
def create_import_history(self, totals):
|
||||
"""
|
||||
Creating history for created lines
|
||||
|
||||
Arguments:
|
||||
totals {dict}
|
||||
|
||||
Returns:
|
||||
record("custom.import.history") -- history of created records
|
||||
"""
|
||||
|
||||
return self.env["custom.import.history"].create(
|
||||
{
|
||||
"original_file": self.original_file,
|
||||
"formatted_file": self.result_file,
|
||||
"original_file_name": self.original_file_name,
|
||||
"formatted_file_name": self.result_file_name,
|
||||
"extra_info": self._get_extra_info(),
|
||||
"total_imported": totals.get("success", 0),
|
||||
"total_duplicated": totals.get("duplicate", 0),
|
||||
"total_errors": totals.get("error", 0),
|
||||
"model": self._get_model_name(),
|
||||
}
|
||||
)
|
||||
|
||||
# pylint: disable=no-self-use,unused-argument
|
||||
def handle_import(self, test=True):
|
||||
"""
|
||||
Inherit and override this method in child model
|
||||
|
||||
Arguments:
|
||||
totals {boolean} -- indicates test import
|
||||
|
||||
Returns:
|
||||
{list} -- list of lines
|
||||
"""
|
||||
return []
|
||||
|
||||
def test_import(self):
|
||||
""" Download formatted file without importing correct records to db """
|
||||
|
||||
self.handle_import()
|
||||
return self.download_result_file()
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
def get_totals(self, lines):
|
||||
"""
|
||||
Count totals of imported lines splited by import statuses
|
||||
"""
|
||||
res = defaultdict(int)
|
||||
for line in lines:
|
||||
res[line["status"]] += 1
|
||||
return res
|
||||
|
||||
def final_import(self):
|
||||
""" Importing correct record """
|
||||
|
||||
lines = self.handle_import(test=False)
|
||||
import_history_record = self.create_import_history(self.get_totals(lines))
|
||||
context = {
|
||||
"default_message": _(
|
||||
"Successfully imported: {} | "
|
||||
"Duplicates not imported: {} | Error importing (bad info): {}"
|
||||
).format(
|
||||
import_history_record.total_imported,
|
||||
import_history_record.total_duplicated,
|
||||
import_history_record.total_errors,
|
||||
)
|
||||
}
|
||||
return {
|
||||
"name": "Import Leads Info",
|
||||
"type": "ir.actions.act_window",
|
||||
"res_model": "info.result.import.wizard",
|
||||
"view_mode": "form",
|
||||
"view_type": "form",
|
||||
"target": "new",
|
||||
"context": context,
|
||||
}
|
||||
|
||||
# pylint: disable=no-self-use
|
||||
def _get_sample_file_path(self):
|
||||
"""
|
||||
Inherit and override this method in child models
|
||||
Return a path the sample xlsx file that will be returned to the user
|
||||
"""
|
||||
return ""
|
||||
|
||||
def print_sample_xlsx(self):
|
||||
""" Print sample file how to should be created leads """
|
||||
|
||||
xlsx_file_path = self._get_sample_file_path()
|
||||
file_content = open(xlsx_file_path, "rb").read()
|
||||
self.sample_file = binascii.b2a_base64(file_content)
|
||||
return {
|
||||
"name": "Sample File",
|
||||
"type": "ir.actions.act_url",
|
||||
"url": (
|
||||
"/web/content/?model={model}&id={id}&field=sample_file&"
|
||||
"download=true&filename={fname}"
|
||||
).format(model=self._name, id=self.id, fname="Sample Import.xlsx"),
|
||||
"target": "new",
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<odoo>
|
||||
<record id="custom_import_wizard_view_form" model="ir.ui.view">
|
||||
<field name="name">custom.import.wizard.form</field>
|
||||
<field name="model">custom.import.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Import">
|
||||
<group col="2">
|
||||
<field name="original_file_name" invisible="1"/>
|
||||
<field name="original_file" widget="binary" filename="original_file_name"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button
|
||||
name="test_import"
|
||||
string="Test Import"
|
||||
class="oe_highlight"
|
||||
type="object"
|
||||
default_focus="1"
|
||||
/>
|
||||
<button
|
||||
name="final_import"
|
||||
string="Final Import"
|
||||
type="object"
|
||||
class="oe_highlight"
|
||||
confirm="Are you sure?"
|
||||
/>
|
||||
<button
|
||||
name="print_sample_xlsx"
|
||||
string="Sample Format"
|
||||
class="btn btn-default"
|
||||
type="object"
|
||||
/>
|
||||
<button string="Cancel" class="btn btn-default" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
# Odoo:
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class InfoResultImportWizard(models.TransientModel):
|
||||
_name = "info.result.import.wizard"
|
||||
_description = "Info Result Import Wizard"
|
||||
message = fields.Char(string="Info: ", readonly=True, store=True)
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<odoo>
|
||||
<record id="view_info_result_import_wizard" model="ir.ui.view">
|
||||
<field name="name">info.result.import.wizard.form</field>
|
||||
<field name="model">info.result.import.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Info">
|
||||
<group>
|
||||
<field name="message" widget="text"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button string="OK" special="cancel" class="oe_highlight"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -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 Custom_import_wizard Module - custom_import_wizard
|
||||
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.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Configuration
|
||||
|
||||
Refer to Odoo settings for custom_import_wizard. Configure related models, access rights, and options as needed.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Controllers
|
||||
|
||||
This module does not define custom HTTP controllers.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Dependencies
|
||||
|
||||
No explicit module dependencies declared.
|
||||
4
odoo-bringout-ventor-custom_import_wizard/doc/FAQ.md
Normal file
4
odoo-bringout-ventor-custom_import_wizard/doc/FAQ.md
Normal 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 custom_import_wizard or install in UI.
|
||||
7
odoo-bringout-ventor-custom_import_wizard/doc/INSTALL.md
Normal file
7
odoo-bringout-ventor-custom_import_wizard/doc/INSTALL.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Install
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-ventor-custom_import_wizard"
|
||||
# or
|
||||
uv pip install odoo-bringout-ventor-custom_import_wizard"
|
||||
```
|
||||
12
odoo-bringout-ventor-custom_import_wizard/doc/MODELS.md
Normal file
12
odoo-bringout-ventor-custom_import_wizard/doc/MODELS.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Models
|
||||
|
||||
Detected core models and extensions in custom_import_wizard.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class custom_import_history
|
||||
```
|
||||
|
||||
Notes
|
||||
- Classes show model technical names; fields omitted for brevity.
|
||||
- Items listed under _inherit are extensions of existing models.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Overview
|
||||
|
||||
Packaged Odoo addon: custom_import_wizard. Provides features documented in upstream Odoo 16 under this addon.
|
||||
|
||||
- Source: OCA/OCB 16.0, addon custom_import_wizard
|
||||
- License: LGPL-3
|
||||
3
odoo-bringout-ventor-custom_import_wizard/doc/REPORTS.md
Normal file
3
odoo-bringout-ventor-custom_import_wizard/doc/REPORTS.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Reports
|
||||
|
||||
This module does not define custom reports.
|
||||
42
odoo-bringout-ventor-custom_import_wizard/doc/SECURITY.md
Normal file
42
odoo-bringout-ventor-custom_import_wizard/doc/SECURITY.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# Security
|
||||
|
||||
Access control and security definitions in custom_import_wizard.
|
||||
|
||||
## Access Control Lists (ACLs)
|
||||
|
||||
Model access permissions defined in:
|
||||
- **[ir.model.access.csv](../custom_import_wizard/security/ir.model.access.csv)**
|
||||
- 4 model access rules
|
||||
|
||||
## Record Rules
|
||||
|
||||
Row-level security rules defined in:
|
||||
|
||||
## Security Groups & Configuration
|
||||
|
||||
Security groups and permissions defined in:
|
||||
- **[security.xml](../custom_import_wizard/security/security.xml)**
|
||||
- 1 security groups defined
|
||||
|
||||
```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](../custom_import_wizard/security/ir.model.access.csv)**
|
||||
- Model access permissions (CRUD rights)
|
||||
- **[security.xml](../custom_import_wizard/security/security.xml)**
|
||||
- Security groups, categories, and XML-based rules
|
||||
|
||||
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
|
||||
|
|
@ -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.
|
||||
7
odoo-bringout-ventor-custom_import_wizard/doc/USAGE.md
Normal file
7
odoo-bringout-ventor-custom_import_wizard/doc/USAGE.md
Normal 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 custom_import_wizard
|
||||
```
|
||||
9
odoo-bringout-ventor-custom_import_wizard/doc/WIZARDS.md
Normal file
9
odoo-bringout-ventor-custom_import_wizard/doc/WIZARDS.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Wizards
|
||||
|
||||
Transient models exposed as UI wizards in custom_import_wizard.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class CustomImportWizard
|
||||
class InfoResultImportWizard
|
||||
```
|
||||
41
odoo-bringout-ventor-custom_import_wizard/pyproject.toml
Normal file
41
odoo-bringout-ventor-custom_import_wizard/pyproject.toml
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
[project]
|
||||
name = "odoo-bringout-ventor-custom_import_wizard"
|
||||
version = "16.0.0"
|
||||
description = "Custom Import Wizard - Custom Odoo addon"
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"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 = ["custom_import_wizard"]
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pytest>=8.4.1",
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue