# Copyright 2019 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import models


class Base(models.AbstractModel):
    _inherit = "base"

    def _get_record_parents(self, field):
        if not self or not hasattr(self, self._parent_name):
            return []
        return getattr(self, self._parent_name)._get_record_parents(field) + [
            (self.id, str(getattr(self, field)))
        ]

    def _get_record_direct_childs(self, field, domain):
        if not hasattr(self, self._parent_name):
            return []
        return [
            (r.id, str(getattr(r, field)))
            for r in self.search([(self._parent_name, "=", self.id or False)] + domain)
        ]

    def get_record_direct_childs_parents(self, options, domain=False):
        if not domain:
            domain = []
        field = options.get("child_selection_field", "display_name")
        return {
            "childs": self._get_record_direct_childs(field, domain),
            "parents": self._get_record_parents(field),
        }