Hello,
There are two kind of solutions:
Solution 1:
import xmlrpc.client
# Odoo XML-RPC parameters
url = 'http://your-odoo-instance'
db = 'database_name'
username = 'user'
password = 'password'
# Connect to Odoo XML-RPC server
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})
# Create a proxy object for the CRM module
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
# Create a lead in Odoo
lead_data = {
'name': 'John Doe',
'contact_name': 'John Doe',
'email_from': 'john@example.com',
'description': 'Interested in your products',
# Add more fields as needed
}
lead_id = models.execute_kw(db, uid, password, 'crm.lead', 'create', [lead_data])
Solution 2:
from odoo import http
from odoo.http import request
class ExternalFormController(http.Controller):
@http.route('/your/endpoint', type='http', auth='public', methods=['POST'])
def handle_contact_form(self, **post):
# Extract data from the incoming request
name = post.get('name')
email = post.get('email')
message = post.get('message')
# Create a lead/contact in Odoo
Lead = request.env['crm.lead']
lead_vals = {
'name': name,
'contact_name': name,
'email_from': email,
'description': message,
# Add more fields as needed
}
lead = Lead.create(lead_vals)
# You may want to return a response to the external form indicating success or failure
return "Success" # Or you can return JSON/XML response