[NEW] partner_profiles_gogocarto_export: create add-on
This commit is contained in:
committed by
Stéphan Sainléger
parent
597340ff98
commit
7a43a39e4f
2
partner_profiles_gogocarto_export/.gitignore
vendored
Normal file
2
partner_profiles_gogocarto_export/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.*~
|
||||
*pyc
|
56
partner_profiles_gogocarto_export/README.rst
Normal file
56
partner_profiles_gogocarto_export/README.rst
Normal file
@@ -0,0 +1,56 @@
|
||||
================================
|
||||
partner_profiles_gogocarto_export
|
||||
================================
|
||||
|
||||
Adapt data export for gogocarto to partner profiles logic
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
Use Odoo normal module installation procedure to install
|
||||
``partner_profiles_gogocarto_export``.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To export public partners data:
|
||||
|
||||
#. Set the fields you want to export in Settings / Gogocarto, in the dedicated parameter for public profiles.
|
||||
#. Check the field *"Export to Gogocarto"* in the partner form view of the main profile.
|
||||
|
||||
And use the link *https://yourodoo.com/web/<company_id>/get_http_gogocarto_elements* in Gogocarto server import configuration (*https://video.colibris-outilslibres.org/videos/watch/c74fc469-c822-4ab8-82a7-a2555e49e576*)
|
||||
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
None yet.
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `our issues website <https://github.com/elabore-coop/partner-tools/issues>`_. In case of
|
||||
trouble, please check there if your issue has already been
|
||||
reported. If you spotted it first, help us smashing it by providing a
|
||||
detailed and welcomed feedback.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
* Stéphan Sainléger
|
||||
|
||||
Funders
|
||||
-------
|
||||
|
||||
The development of this module has been financially supported by:
|
||||
* Elabore (https://elabore.coop)
|
||||
* Lokavaluto (https://lokavaluto.fr)
|
||||
|
||||
|
||||
Maintainer
|
||||
----------
|
||||
|
||||
This module is maintained by Elabore and Lokavaluto.
|
3
partner_profiles_gogocarto_export/__init__.py
Normal file
3
partner_profiles_gogocarto_export/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import models
|
41
partner_profiles_gogocarto_export/__manifest__.py
Normal file
41
partner_profiles_gogocarto_export/__manifest__.py
Normal file
@@ -0,0 +1,41 @@
|
||||
# Copyright 2023 Stéphan Sainléger (Elabore)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
{
|
||||
"name": "partner_profiles_gogocarto_export",
|
||||
"version": "12.0.1.0.0",
|
||||
"author": "Elabore",
|
||||
"website": "https://elabore.coop",
|
||||
"maintainer": "Stéphan Sainléger",
|
||||
"license": "AGPL-3",
|
||||
"category": "Tools",
|
||||
"summary": "Adapt data export for gogocarto to partner profiles logic",
|
||||
# any module necessary for this one to work correctly
|
||||
"depends": [
|
||||
"base",
|
||||
"partner_gogocarto_export_api",
|
||||
"partner_profiles",
|
||||
"partner_profiles_geolocalize_usability",
|
||||
],
|
||||
"qweb": [
|
||||
# "static/src/xml/*.xml",
|
||||
],
|
||||
"external_dependencies": {
|
||||
"python": [],
|
||||
},
|
||||
# always loaded
|
||||
"data": [
|
||||
"views/res_partner.xml",
|
||||
"views/config_settings_view.xml",
|
||||
"views/res_company_view.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,
|
||||
}
|
1
partner_profiles_gogocarto_export/i18n/README
Normal file
1
partner_profiles_gogocarto_export/i18n/README
Normal file
@@ -0,0 +1 @@
|
||||
This directory should contain the *.po for Odoo translation.
|
3
partner_profiles_gogocarto_export/models/__init__.py
Normal file
3
partner_profiles_gogocarto_export/models/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from . import res_config_settings
|
||||
from . import company
|
||||
from . import res_partner
|
14
partner_profiles_gogocarto_export/models/company.py
Normal file
14
partner_profiles_gogocarto_export/models/company.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from odoo import models, fields
|
||||
|
||||
|
||||
class Company(models.Model):
|
||||
_inherit = "res.company"
|
||||
|
||||
export_gogocarto_public_fields = fields.Many2many(
|
||||
'ir.model.fields',
|
||||
relation='ir_model_fields_gogocarto_public',
|
||||
domain=[
|
||||
('model_id', '=', 'res.partner'),
|
||||
('name', 'not in', ['id', 'name', 'partner_longitude', 'partner_latitude'])
|
||||
]
|
||||
)
|
@@ -0,0 +1,23 @@
|
||||
import logging
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
export_gogocarto_public_fields = fields.Many2many(
|
||||
related='company_id.export_gogocarto_public_fields',
|
||||
relation='ir.model.fields',
|
||||
string='GogoCarto Exported Public fields',
|
||||
readonly=False,
|
||||
domain=[
|
||||
('model_id', '=', 'res.partner'),
|
||||
('name', 'not in', ['name',
|
||||
'partner_longitude',
|
||||
'partner_latitude',
|
||||
'id'])
|
||||
]
|
||||
)
|
29
partner_profiles_gogocarto_export/models/res_partner.py
Normal file
29
partner_profiles_gogocarto_export/models/res_partner.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from odoo import models
|
||||
import logging
|
||||
|
||||
|
||||
class ResPartner(models.Model):
|
||||
""" Inherits partner, adds Gogocarto public fields in the partner form, and functions"""
|
||||
_inherit = 'res.partner'
|
||||
|
||||
def _get_gogocarto_domain(self, company_id):
|
||||
# To OVERRIDE in sub_modules to customize the partner selection
|
||||
res = super(ResPartner, self)._get_gogocarto_domain(company_id)
|
||||
res.extend([('is_main_profile', '=', True)])
|
||||
return res
|
||||
|
||||
def _get_gogocarto_parser(self, company_id):
|
||||
parser = super(ResPartner, self)._get_gogocarto_parser(company_id)
|
||||
public_fields = self._get_export_public_fields(company_id)
|
||||
public_parser = self._get_generic_parser(public_fields)
|
||||
parser.append(("public_profile_id", public_parser))
|
||||
return parser
|
||||
|
||||
def _get_export_public_fields(self, company_id):
|
||||
CompanySudo = self.env['res.company'].sudo().search([('id', '=', company_id)])
|
||||
default_fields = self.env['ir.model.fields'].sudo().search([
|
||||
('model_id', '=', 'res.partner'),
|
||||
('name', 'in', ['id', 'name', 'partner_longitude', 'partner_latitude'])])
|
||||
company_fields = CompanySudo.export_gogocarto_public_fields
|
||||
export_fields = default_fields | company_fields
|
||||
return export_fields
|
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="res_config_settings_view_form_gogocarto_public" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.view.form.inherit.gogocarto.public</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="inherit_id"
|
||||
ref="partner_gogocarto_export_api.res_config_settings_view_form_gogocarto" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='gogocarto_selection_settings']" position="inside">
|
||||
<div class="col-12 col-lg-6 o_setting_box" id="gogocarto_public_fields">
|
||||
<div class="o_setting_right_pane">
|
||||
<div class="text-muted">
|
||||
Partner public fields to export for Gogocarto map.
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16">
|
||||
<field name="export_gogocarto_public_fields" widget="many2many_tags"
|
||||
options="{'no_create': True, 'no_open': True}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
16
partner_profiles_gogocarto_export/views/res_company_view.xml
Normal file
16
partner_profiles_gogocarto_export/views/res_company_view.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record model="ir.ui.view" id="res_company_gogocarto_public_form_view">
|
||||
<field name="name">res_company.gogocarto.public.form</field>
|
||||
<field name="model">res.company</field>
|
||||
<field name="inherit_id" ref="partner_gogocarto_export_api.res_company_gogocarto_form_view" />
|
||||
<field name='priority'>99</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//page[@name='gogocarto']" position="inside">
|
||||
<group>
|
||||
<field name="export_gogocarto_public_fields" />
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
23
partner_profiles_gogocarto_export/views/res_partner.xml
Normal file
23
partner_profiles_gogocarto_export/views/res_partner.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record model="ir.ui.view" id="partner_gogocarto_form_view_public">
|
||||
<field name="name">partner.gogocarto.form.public</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="partner_profiles.partner_profiles_form_view" />
|
||||
<field name='priority'>99</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group[@id='public_data']" position="inside">
|
||||
<group>
|
||||
<button
|
||||
string="Geolocate"
|
||||
name="geo_localize"
|
||||
colspan="2"
|
||||
icon="fa-check"
|
||||
type="object" />
|
||||
<field name="partner_latitude" />
|
||||
<field name="partner_longitude" />
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
Reference in New Issue
Block a user