# © 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import http


class AlfrescoController(http.Controller):
    @http.route(["/web/alfresco/session"], type="json", auth="user", method=["POST"])
    def get_alf_ticket(self, username):
        data = http.request.env["cgscop.alfresco"].alfresco_get_ticket(username)
        return data

    @http.route(
        ["/web/alfresco/session-backend"],
        type="json", auth="user", method=["POST"]
    )
    def get_session_backend(self, username):
        ticket = http.request.env["cgscop.alfresco"].alfresco_get_ticket(username)
        backend = http.request.env["cmis.backend"].search([], limit=1)
        return {
            "ticket": ticket,
            "backend_location": backend.location,
        }

    # ------------------------------------------------------
    # Override parent
    # ------------------------------------------------------
    @http.route(
        "/web/cmis/field/create_value",
        type="json",
        methods=["POST"],
        auth="user",
    )
    def create_field_value(self, model_name, res_id, field_name):
        """
        Override parent to return dict with res_id key to avoid error on OCB
        form_widget rendering
        :return: { object_id: nodeRef }
        """
        model_inst = http.request.env[model_name].browse(int(res_id))
        model_inst._fields[field_name].create_value(model_inst)
        value = getattr(model_inst, field_name)
        return {res_id: value}