controller_mensaje.py 2.98 KB
#!/usr/bin/python3
from requests.sessions import session
from odoo import http

TOKEN ="""34567uykjhgfd4567iukhjgfe43567ujhgfder456yhgfde"""

class controlador_soporte_mensajes(http.Controller):
    """Controlador orientado al envio de mensajes entre incidencias y soporte"""

    @http.route('/soporteIncidencias/soporteMensaje', auth='public', type='json' , website=False ,csrf=False, methods = ['POST','GET'])
    def index(self, **kw):
        if not kw["token"] == TOKEN:
            return({"resultado":"ALERTA DE SEGURIDAD error autenticacion"})
        print(kw)
        inci_model = http.request.env["hgt.soporte_incidencia"].sudo()
        incidencia = inci_model.search([('id', '=', kw["id_incide_original"] )])

        model =  http.request.env["hgt.soporte_mensaje"].sudo()

        if incidencia: 
            lista = incidencia.si_mensajes.ids 
            nvo_mensaje = self.crearMensaje(model,incidencia, kw)
            lista.append(nvo_mensaje.id)
            incidencia.si_mensajes = lista 
            incidencia.registrar_mensaje(nvo_mensaje)
            
            return ("Exito")
  
    def NotificarMensajeNuevo(self,incidencia):
        """Este solo funciona en el server de soporte"""
        print("Notificador de incidencia")
        try:
            notif_push = incidencias.env['ext.notificador'].sudo()
        except Exception as e:
            print(e)
            return()
        try:
            self._NotificarMensajeNuevo(incidencia,notif_push)
        except Exception as e:
            print(e)
        
    def _NotificarMensajeNuevo(self,incidencia,notif_push):
        uids = []
        for mensaje in incidencia.si_mensajes:
            #print(mensaje.si_creador.id)
            if not mensaje.si_creador.id in uids:
                uids.append(mensaje.si_creador.id)
        msm = f"""Se a recivido un mensaje en el incidente {incidencia.si_descripcion}"""
        notif_push.GenerarMensajeMasivo(mensaje=msm,titulo="",users=uids)

            


    def crearMensaje(self, model, incidencia, kw):
        self.NotificarMensajeNuevo(incidencia)
        nvo_mens = model.create({
            'si_mensaje': kw['si_mensaje'],
            'si_creador_nombre': kw['si_creador_nombre'],
            'si_mens_fecha': kw['si_mens_fecha'],
        })
        return(nvo_mens)


    #     else:
    #         nva_incidencia = self.crearIncidencia(inci_model, kw)
    #         nvo_mensaje = self.crearMensaje(model,nva_incidencia, kw)
    #         nva_incidencia.si_mensajes = (4, nvo_mensaje.id)
    #         nva_incidencia.registrar_mensaje(nvo_mensaje)
    #         print("en mensajes soporte el valor d in id si es: " + nva_incidencia.si_id_in)
        
    #     return({"resultado":"OK",
    #     "argum": kw})

    # def crearIncidencia(self, model, kw):
    #     nva_inci = model.create({
    #         'si_fecha': kw['si_fecha'],
    #         'responsable': kw['responsable'],
    #         'name': kw['name'],
    #         'si_id_in': kw["si_id_in"],
    #     })
    #     return(nva_inci)