Skip to content

Commit

Permalink
Merge PR #1525 into 16.0
Browse files Browse the repository at this point in the history
Signed-off-by sebastienbeau
  • Loading branch information
shopinvader-git-bot committed Jun 4, 2024
2 parents 2de3137 + 7bb0cbc commit bca4463
Show file tree
Hide file tree
Showing 16 changed files with 687 additions and 0 deletions.
6 changes: 6 additions & 0 deletions setup/shopinvader_api_lead/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)
61 changes: 61 additions & 0 deletions shopinvader_api_lead/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
====================
Shopinvader API Lead
====================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d2d1149686c5507f0e6531ff1fede8002b86efb86e63f5800a695e13abe424df
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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-shopinvader%2Fodoo--shopinvader-lightgray.png?logo=github
:target: https://github.com/shopinvader/odoo-shopinvader/tree/16.0/shopinvader_api_lead
:alt: shopinvader/odoo-shopinvader

|badge1| |badge2| |badge3|

This addon defines a new Lead router and a new service to be able
to create simple CRM leads.

**Table of contents**

.. contents::
:local:

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

Bugs are tracked on `GitHub Issues <https://github.com/shopinvader/odoo-shopinvader/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/shopinvader/odoo-shopinvader/issues/new?body=module:%20shopinvader_api_lead%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
~~~~~~~

* ACSONE SA/NV

Contributors
~~~~~~~~~~~~

* Marie Lejeune <marie.lejeune@acsone.eu>

Maintainers
~~~~~~~~~~~

This module is part of the `shopinvader/odoo-shopinvader <https://github.com/shopinvader/odoo-shopinvader/tree/16.0/shopinvader_api_lead>`_ project on GitHub.

You are welcome to contribute.
2 changes: 2 additions & 0 deletions shopinvader_api_lead/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import schemas
from . import routers
27 changes: 27 additions & 0 deletions shopinvader_api_lead/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Shopinvader API Lead",
"summary": """
Lead FastAPI adding a service for creating CRM leads.""",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"author": "ACSONE SA/NV",
"website": "https://github.com/shopinvader/odoo-shopinvader",
"depends": [
"crm",
"extendable_fastapi",
],
"data": [
"security/groups.xml",
"security/acl_crm_lead.xml",
],
"external_dependencies": {
"python": [
"fastapi",
"pydantic>=2.0.0",
"extendable-pydantic>=1.2.0",
]
},
}
1 change: 1 addition & 0 deletions shopinvader_api_lead/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* Marie Lejeune <marie.lejeune@acsone.eu>
2 changes: 2 additions & 0 deletions shopinvader_api_lead/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
This addon defines a new Lead router and a new service to be able
to create simple CRM leads.
1 change: 1 addition & 0 deletions shopinvader_api_lead/routers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .lead import lead_router
22 changes: 22 additions & 0 deletions shopinvader_api_lead/routers/lead.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from typing import Annotated

from fastapi import APIRouter, Depends

from odoo import api

from odoo.addons.fastapi.dependencies import odoo_env

from ..schemas import Lead, LeadInput

lead_router = APIRouter(tags=["leads"])


@lead_router.post("/leads", status_code=201)
def create(
data: LeadInput,
env: Annotated[api.Environment, Depends(odoo_env)],
) -> Lead | None:
lead = env["crm.lead"].create(data.to_crm_lead_vals())
return Lead.from_crm_lead(lead)
1 change: 1 addition & 0 deletions shopinvader_api_lead/schemas/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .lead import Lead, LeadInput
34 changes: 34 additions & 0 deletions shopinvader_api_lead/schemas/lead.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright 2024 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).


from extendable_pydantic import StrictExtendableBaseModel


class Lead(StrictExtendableBaseModel):
id: int
subject: str
email: str | None = None
description: str | None = None

@classmethod
def from_crm_lead(cls, lead):
return cls.model_construct(
id=lead.id,
subject=lead.name,
email=lead.email_from or None,
description=lead.description or None,
)


class LeadInput(StrictExtendableBaseModel):
subject: str
email: str | None = None
description: str | None = None

def to_crm_lead_vals(self) -> dict:
return {
"name": self.subject,
"email_from": self.email,
"description": self.description,
}
16 changes: 16 additions & 0 deletions shopinvader_api_lead/security/acl_crm_lead.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2024 ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>

<record model="ir.model.access" id="shopinvader_crm_lead_access_view">
<field name="name">crm.lead shopinvader lead user access</field>
<field name="model_id" ref="crm.model_crm_lead" />
<field name="group_id" ref="shopinvader_lead_user_group" />
<field name="perm_read" eval="1" />
<field name="perm_create" eval="1" />
<field name="perm_unlink" eval="0" />
<field name="perm_write" eval="1" />
</record>

</odoo>
15 changes: 15 additions & 0 deletions shopinvader_api_lead/security/groups.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2024 ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="shopinvader_lead_user_group" model="res.groups">
<field name="name">CRM Lead user</field>
<field
name="implied_ids"
eval="[
(4, ref('fastapi.group_fastapi_endpoint_runner')),
]"
/>
</record>

</odoo>
Loading

0 comments on commit bca4463

Please sign in to comment.