From df455303fa6214721e515c3f9d879fdc9a277ebc Mon Sep 17 00:00:00 2001 From: Boris Gallet Date: Wed, 6 Mar 2024 11:35:02 +0100 Subject: [PATCH] [MIG] partner_profiles: Migration to 16.0 --- partner_profiles/.gitignore | 2 + partner_profiles/README.rst | 43 ++ partner_profiles/__init__.py | 3 + partner_profiles/__manifest__.py | 44 ++ .../data/partner_profile_data.xml | 19 + partner_profiles/data/res_partner_data.xml | 29 ++ partner_profiles/i18n/README | 1 + partner_profiles/i18n/fr.po | 388 ++++++++++++++++ partner_profiles/i18n/partner_profiles.pot | 373 +++++++++++++++ partner_profiles/models/__init__.py | 5 + partner_profiles/models/partner_profile.py | 14 + partner_profiles/models/res_partner.py | 439 ++++++++++++++++++ partner_profiles/security/ir.model.access.csv | 4 + .../views/partner_profile_view.xml | 24 + partner_profiles/views/res_partner_view.xml | 261 +++++++++++ partner_profiles/wizard/__init__.py | 2 + .../wizard/create_position_profile.py | 65 +++ .../wizard/create_position_profile.xml | 50 ++ 18 files changed, 1766 insertions(+) create mode 100644 partner_profiles/.gitignore create mode 100644 partner_profiles/README.rst create mode 100644 partner_profiles/__init__.py create mode 100644 partner_profiles/__manifest__.py create mode 100644 partner_profiles/data/partner_profile_data.xml create mode 100644 partner_profiles/data/res_partner_data.xml create mode 100644 partner_profiles/i18n/README create mode 100644 partner_profiles/i18n/fr.po create mode 100644 partner_profiles/i18n/partner_profiles.pot create mode 100644 partner_profiles/models/__init__.py create mode 100644 partner_profiles/models/partner_profile.py create mode 100644 partner_profiles/models/res_partner.py create mode 100644 partner_profiles/security/ir.model.access.csv create mode 100644 partner_profiles/views/partner_profile_view.xml create mode 100644 partner_profiles/views/res_partner_view.xml create mode 100644 partner_profiles/wizard/__init__.py create mode 100644 partner_profiles/wizard/create_position_profile.py create mode 100644 partner_profiles/wizard/create_position_profile.xml diff --git a/partner_profiles/.gitignore b/partner_profiles/.gitignore new file mode 100644 index 0000000..6da5887 --- /dev/null +++ b/partner_profiles/.gitignore @@ -0,0 +1,2 @@ +*.*~ +*pyc diff --git a/partner_profiles/README.rst b/partner_profiles/README.rst new file mode 100644 index 0000000..314776d --- /dev/null +++ b/partner_profiles/README.rst @@ -0,0 +1,43 @@ +================ +partner_profiles +================ + +Provide several profiles for one person. + +Installation +============ + +Use Odoo normal module installation procedure to install +``partner_profiles``. + +Known issues / Roadmap +====================== + +None yet. +Bug Tracker +=========== + +Bugs are tracked on `our issues website `_. In case of +trouble, please check there if your issue has already been +reported. If you spotted it first, help us smashing it by providing a +detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Stéphan Sainléger + +Funders +------- + +The development of this module has been financially supported by: +* Elabore (https://elabore.coop) + + +Maintainer +---------- + +This module is maintained by Elabore. \ No newline at end of file diff --git a/partner_profiles/__init__.py b/partner_profiles/__init__.py new file mode 100644 index 0000000..c01a523 --- /dev/null +++ b/partner_profiles/__init__.py @@ -0,0 +1,3 @@ + +from . import models +from . import wizard \ No newline at end of file diff --git a/partner_profiles/__manifest__.py b/partner_profiles/__manifest__.py new file mode 100644 index 0000000..73dc3d9 --- /dev/null +++ b/partner_profiles/__manifest__.py @@ -0,0 +1,44 @@ +# Copyright 2022 Stéphan Sainléger (Elabore) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "partner_profiles", + "version": "16.0.1.0.0", + "author": "Elabore", + "website": "https://elabore.coop", + "maintainer": "Stéphan Sainléger", + "license": "AGPL-3", + "category": "Tools", + "summary": "Provide several profiles for one person.", + # any module necessary for this one to work correctly + "depends": [ + "base", + "calendar", + "contacts", + "partner_contact_in_several_companies", + ], + "qweb": [ + # "static/src/xml/*.xml", + ], + "external_dependencies": { + "python": [], + }, + # always loaded + "data": [ + "security/ir.model.access.csv", + "wizard/create_position_profile.xml", + "views/res_partner_view.xml", + "views/partner_profile_view.xml", + "data/partner_profile_data.xml", + "data/res_partner_data.xml", + ], + # only loaded in demonstration mode + "demo": [], + "js": [], + "css": [], + "installable": True, + # Install this module automatically if all dependency have been previously + # and independently installed. Used for synergetic or glue modules. + "auto_install": False, + "application": False, +} diff --git a/partner_profiles/data/partner_profile_data.xml b/partner_profiles/data/partner_profile_data.xml new file mode 100644 index 0000000..941f72a --- /dev/null +++ b/partner_profiles/data/partner_profile_data.xml @@ -0,0 +1,19 @@ + + + + + Main Profile + partner_profile_main + + + + Public Profile + partner_profile_public + + + + Position Profile + partner_profile_position + + + \ No newline at end of file diff --git a/partner_profiles/data/res_partner_data.xml b/partner_profiles/data/res_partner_data.xml new file mode 100644 index 0000000..63ebddc --- /dev/null +++ b/partner_profiles/data/res_partner_data.xml @@ -0,0 +1,29 @@ + + + + + Partner: generate missing public profiles + + code + model._cron_generate_missing_public_profiles() + days + -1 + 0 + + + + Partner: Migration Standard Partners to Partners with Profiles + + code + +model._migration_create_pro_profiles(limit=200) +model._migration_person_without_parent(limit=200) +model._migration_person_with_parent_and_existing_main(limit=200) +model._migration_person_with_parent_not_existing_main(limit=200) + + days + -1 + 0 + + + diff --git a/partner_profiles/i18n/README b/partner_profiles/i18n/README new file mode 100644 index 0000000..62197a1 --- /dev/null +++ b/partner_profiles/i18n/README @@ -0,0 +1 @@ +This directory should contain the *.po for Odoo translation. diff --git a/partner_profiles/i18n/fr.po b/partner_profiles/i18n/fr.po new file mode 100644 index 0000000..1b55041 --- /dev/null +++ b/partner_profiles/i18n/fr.po @@ -0,0 +1,388 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * partner_profiles +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-12 15:03+0000\n" +"PO-Revision-Date: 2023-09-12 15:03+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: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_kanban_view +msgid "génère\n" +" uniquement des profils principaux." + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Please find here all the addresses/contacts linked to\n" +" this main profile. Contact creation from this tab only\n" +" generates new main profiles." +msgstr "Vous trouverez ici tou(te)s les adresses/contacts lié(e)s avec cette\n" +" fiche administrative. La création de contact depuis cet onglet génère\n" +" uniquement des profils principaux." + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.create_position_wizard_view_form +msgid "You are about to create a Position Profile which\n" +" represents the role or the job of a person in a structure." +msgstr "Vous allez créer une fiche Fonction qui\n" +" représente le rôle que tient une personne au sein d'une structure.\"" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Address" +msgstr "Adresse" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.create_position_wizard_view_form +msgid "Cancel" +msgstr "Annuler" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "City" +msgstr "Ville" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Company" +msgstr "Société" + +#. module: partner_profiles +#: model:ir.model,name:partner_profiles.model_res_partner +msgid "Contact" +msgstr "" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__child_ids +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__child_ids +msgid "Contacts" +msgstr "" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Country" +msgstr "Pays" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.create_position_wizard_view_form +msgid "Create" +msgstr "Créer" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Create New Position" +msgstr "Créer une nouvelle fonction" + +#. module: partner_profiles +#: model:ir.actions.act_window,name:partner_profiles.action_create_position_profile_wizard +msgid "Create Position Profile" +msgstr "Créer une fiche Fonction" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Create Public Profile" +msgstr "Ajouter des coordonnées publiques" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.create_position_wizard_view_form +msgid "Create a position profile" +msgstr "Créer une fiche Fonction" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__create_uid +#: model:ir.model.fields,field_description:partner_profiles.field_partner_profile__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__create_date +#: model:ir.model.fields,field_description:partner_profiles.field_partner_profile__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__display_name +#: model:ir.model.fields,field_description:partner_profiles.field_partner_profile__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__email +msgid "Email" +msgstr "Courriel" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__function +msgid "Function" +msgstr "Fonction" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__has_position +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__has_position +msgid "Has Position" +msgstr "A une fonction" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__id +#: model:ir.model.fields,field_description:partner_profiles.field_partner_profile__id +msgid "ID" +msgstr "" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__is_company +msgid "Is Company" +msgstr "Est une société" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__is_main_profile +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__is_main_profile +msgid "Is Main Profile" +msgstr "Est une fiche administrative" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__is_position_profile +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__is_position_profile +msgid "Is Position Profile" +msgstr "Est une fiche fontion" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__is_public_profile +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__is_public_profile +msgid "Is Public Profile" +msgstr "Est un fiche de coordonnées publiques" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile____last_update +#: model:ir.model.fields,field_description:partner_profiles.field_partner_profile____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__write_uid +#: model:ir.model.fields,field_description:partner_profiles.field_partner_profile__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__write_date +#: model:ir.model.fields,field_description:partner_profiles.field_partner_profile__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__contact_id +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__contact_id +msgid "Main Contact" +msgstr "Fiche administrative" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +#: model:partner.profile,name:partner_profiles.partner_profile_main +msgid "Main Profile" +msgstr "Fiche administrative" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Mobile:" +msgstr "Mobile :" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_partner_profile__name +msgid "Name" +msgstr "Nom" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__comment +msgid "Notes" +msgstr "Commentaires" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__other_contact_ids +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__other_contact_ids +msgid "Others Positions" +msgstr "Autres fonctions" + +#. module: partner_profiles +#: model:ir.actions.act_window,name:partner_profiles.partner_profile_action +msgid "Partner Profiles" +msgstr "Profiles de contact" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__partner_profile +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__partner_profile +msgid "Partner profile" +msgstr "Profil de contact" + +#. module: partner_profiles +#: model:ir.model,name:partner_profiles.model_partner_profile +msgid "Partner profile to differentiate the attached partner entries" +msgstr "Profil de contact pour différentier les champs du contact" + +#. module: partner_profiles +#: model:ir.ui.menu,name:partner_profiles.menu_partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profile_view_tree +msgid "Partner profiles" +msgstr "Profiles de contact" + +#. module: partner_profiles +#: model:ir.actions.server,name:partner_profiles.ir_cron_migration_partner_profiles_ir_actions_server +#: model:ir.cron,cron_name:partner_profiles.ir_cron_migration_partner_profiles +#: model:ir.cron,name:partner_profiles.ir_cron_migration_partner_profiles +msgid "Partner: Migration Standard Partners to Partners with Profiles" +msgstr "Contact : Migration des Contacts standards aux Conctacts à profile" + +#. module: partner_profiles +#: model:ir.actions.server,name:partner_profiles.ir_cron_generate_missing_public_profiles_ir_actions_server +#: model:ir.cron,cron_name:partner_profiles.ir_cron_generate_missing_public_profiles +#: model:ir.cron,name:partner_profiles.ir_cron_generate_missing_public_profiles +msgid "Partner: generate missing public profiles" +msgstr "Contact : Générer les fiches de coordonnées publiques manquantes" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__partner_id +msgid "Person" +msgstr "Personne" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__phone +msgid "Phone" +msgstr "Téléphone" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Phone:" +msgstr "Téléphone :" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +#: model:partner.profile,name:partner_profiles.partner_profile_position +msgid "Position Profile" +msgstr "Fiche fonction" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Positions" +msgstr "Fonctions" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +#: model:partner.profile,name:partner_profiles.partner_profile_public +msgid "Public Profile" +msgstr "Coordonnées publiques" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__public_profile_id +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__public_profile_id +msgid "Public profile" +msgstr "Coordonnées publiques" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_partner_profile__ref +msgid "Ref" +msgstr "" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "State" +msgstr "État" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Street 2..." +msgstr "Rue 2..." + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Street..." +msgstr "Rue..." + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_create_position_profile__structure_id +msgid "Structure" +msgstr "" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__structure_position_ids +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__structure_position_ids +msgid "Structure's positions" +msgstr "Fonctions occupées dans la structures" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "Sync data" +msgstr "Synchroniser" + +#. module: partner_profiles +#: model:ir.actions.server,name:partner_profiles.sync_public_data_action_server +msgid "Synchronize main and public data" +msgstr "Synchroniser les données publiques" + +#. module: partner_profiles +#: model:ir.model.fields,field_description:partner_profiles.field_res_partner__to_migrate +#: model:ir.model.fields,field_description:partner_profiles.field_res_users__to_migrate +msgid "To Migrate" +msgstr "A migrer" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "ZIP" +msgstr "Code postal" + +#. module: partner_profiles +#: model:ir.model,name:partner_profiles.model_create_position_profile +msgid "create Position Profile" +msgstr "créer une fiche fonction" + +#. module: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_form_view +msgid "e.g. https://www.odoo.com" +msgstr "e.x. https://www.odoo.com" + diff --git a/partner_profiles/i18n/partner_profiles.pot b/partner_profiles/i18n/partner_profiles.pot new file mode 100644 index 0000000..1d70b96 --- /dev/null +++ b/partner_profiles/i18n/partner_profiles.pot @@ -0,0 +1,373 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * partner_profiles +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-12 15:02+0000\n" +"PO-Revision-Date: 2023-09-12 15:02+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: partner_profiles +#: model_terms:ir.ui.view,arch_db:partner_profiles.partner_profiles_kanban_view +msgid " [%s] %s " + % (partner.id, partner.name, main_partner.id, main_partner.name) + ) + partner.write( + { + "partner_profile": partner_profile_position.id, + "contact_id": main_partner.id, + "type": "other", + } + ) + count += 1 + _logger.debug("Last clean") \ No newline at end of file diff --git a/partner_profiles/security/ir.model.access.csv b/partner_profiles/security/ir.model.access.csv new file mode 100644 index 0000000..1468a75 --- /dev/null +++ b/partner_profiles/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_partner_profile_public,partner_profile_public,model_partner_profile,,1,0,0,0 +access_partner_profile_admin,partner_profile_admin,model_partner_profile,base.group_partner_manager,1,1,1,1 +access_create_position_profile,create_position_profile_admin,model_create_position_profile,base.group_partner_manager,1,1,1,1 \ No newline at end of file diff --git a/partner_profiles/views/partner_profile_view.xml b/partner_profiles/views/partner_profile_view.xml new file mode 100644 index 0000000..7e2164c --- /dev/null +++ b/partner_profiles/views/partner_profile_view.xml @@ -0,0 +1,24 @@ + + + + + partner.profile.view.tree + partner.profile + + + + + + + + + + Partner Profiles + partner.profile + tree + + + + \ No newline at end of file diff --git a/partner_profiles/views/res_partner_view.xml b/partner_profiles/views/res_partner_view.xml new file mode 100644 index 0000000..79c2273 --- /dev/null +++ b/partner_profiles/views/res_partner_view.xml @@ -0,0 +1,261 @@ + + + + + Partner Profiles Form View + res.partner + + + + + + + +

Main Profile

+

Public Profile

+

Position Profile

+
+ + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ +
+ +
+
+ +
+
Phone:
+
Mobile:
+
+
+
+
+
+
+