adjuntos.py 2.54 KB
# -*- coding: utf-8 -*-
from odoo import models, fields, api
import requests, json
from datetime import datetime
headers = {'Content-Type': 'application/json'}

class hgt_soporte_adjunto(models.Model):
    _name = 'hgt.soporte_adjunto'
    _order = 'id desc'

    name = fields.Char(string='Codigo')
    
    creador = fields.Many2one(
        string = 'Creador',
        comodel_name = 'res.users',
        ondelete = 'set null',
        default = lambda self: self.env.user.id,
    )

    fecha = fields.Datetime(
        string = u'Fecha de envío',
        default=lambda self: datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    )

    incidencia = fields.Many2one(
        comodel_name='hgt.soporte_incidencia', 
        string='Incidencia')
    

    remoto = fields.Boolean(string='Remoto')

    usuario = fields.Char(string='Usuario',
        default=lambda self: self.env.user.display_name,
        readonly=True)

    orden = fields.Integer(string='Archivo')

    file_name = fields.Char(string='Nombre', default='')

    file = fields.Binary(string='Capturas')

    def CodigoBase(self):
        """Codigo que se mostrara en el id de archivo"""
        return("ADJ_LOC")

    def GenerarCodigoArchivo(self):
        self.name = f"""{self.CodigoBase()}_{str(self.id).zfill(5)}"""

    def DescargarArchivo(self):
        if self.remoto:
            vals = self.BuscarArchivoRemoto()
        else:
            vals = {
                "file_name":    self.file_name,
                "file":         self.file,
            }
        adjunto = self.env['soporte.descarga_wiz'].create(vals)
        return {
            'name': "Adjunto",
            'type': 'ir.actions.act_window',
            'res_model': 'soporte.descarga_wiz',
            'view_mode': 'form',
            'view_type': 'form',
            'res_id': adjunto.id,
            'target': 'new',
        }

    def BuscarArchivoRemoto(self):
        database = self.env.cr.dbname
        datos = {
            'params': { 'token':self.incidencia.GenerarToken(),
                        'name': self.name
                        }
            }
        datos_json = json.dumps(datos)
        f = requests.post(f"{self.incidencia.UrlBaseHGT()}soporteIncidencias/BajarAdjunto", data=datos_json, headers=headers)
        frespuesta = f.json()
        #print(frespuesta,f"{self.incidencia.UrlBaseHGT()}soporteIncidencias/BajarAdjunto")
        vals = {
                "file_name":    frespuesta["result"][0]["file_name"],
                "file":         frespuesta["result"][0]["file"],
            }
        return(vals)