# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, models class ResPartner(models.Model): _inherit = "res.partner" @api.model def _signup_retrieve_info(self, token): """Extend the core's token-based signup info with `firstname` and `lastname` so the signup form (extended by this module to collect them separately via `partner_firstname`) can be pre-filled and shown readonly when the visitor follows an invitation link. The core (`auth_signup/models/res_partner.py:_signup_retrieve_info`) only returns `name`, `login` and `email`. Our signup template replaced the single `name` input with `firstname` / `lastname` inputs, so without this override those inputs would be empty (and readonly, because `only_passwords` is True for token flows) when an invited partner already has the split fields populated. We keep `name` in the returned dict (the core's contract) and add the two split fields so the controller's `setdefault` populates the qcontext transparently. """ res = super()._signup_retrieve_info(token) partner = self._get_partner_from_token(token) if partner: res["firstname"] = partner.firstname or "" res["lastname"] = partner.lastname or "" return res