controllers.py 6.88 KB
# -*- coding: utf-8 -*-
from odoo import http

import random, os, json
from . import argentinidad


class dispositivos(http.Controller):
    """Controlador de acceso a firmas"""

    @http.route('/lappa/localidades/sugerencia', auth='public', type='json' , website=True ,csrf=False, methods = ['POST','GET'])
    def index(self, **kw):
        registro = http.request.env['asw.localidad'].sudo()
        palabra = argentinidad.arg(kw["localidad"])
        dominio = [["buscador","ilike",palabra]]
        localidades = registro.search(dominio, limit=10)
        resultado = []
        for localidad in localidades:
            loc ={
                "name": localidad.name,
                "id": localidad.id
            }
            resultado.append(loc)
        return(resultado)


    @http.route('/lappa/localidades/sugerenciaget', auth='public', type='http' , website=True ,csrf=False, methods = ['POST','GET'])
    def buscador(self, **kw):
        registro = http.request.env['asw.localidad'].sudo()
        palabra = argentinidad.arg(kw["localidad"])
        dominio = [["buscador","ilike",palabra]]
        localidades = registro.search(dominio, limit=10)#limite original 10
        resultado = []
        for localidad in localidades:
            loc ={
                "name": localidad.name,
                "id": localidad.id
            }
            resultado.append(loc)
        return(json.dumps(resultado))

    @http.route('/lappa/transportista/buscadorget', auth='public', type='http' , website=True ,csrf=False, methods = ['POST','GET'])
    def transportista(self, **kw):
        try:
            pagina = int(kw["pagina"])
        except:
            pagina = 1
        resultado = self.ArmarListaTrans(kw["loc1"],kw["loc2"])
        transportista = self.paginadoTransportistas(resultado[0],pagina) 
        return(json.dumps({"origen":resultado[1],
            "destino":resultado[2],
            "total":len(resultado[0]),
            "fondo":"http://hgtarg.com/fondo1.jpg",# este hay que generar unevo campo o logica de descarga
            "pagina":pagina,
            "paginas":self.contadorpagianas(resultado[0]),
            "transportistas":transportista}))

    def contadorpagianas(self,lista):
        total = len(lista)
        if total == 0:
            return(0)
        elif total < 11:
            return(1)
        elif total > 10:
            return(int((total /10)) + 1)

    def paginadoTransportistas(self,lista,pagina=1, paginado=10):
        contador = 0
        inicial = (pagina * paginado) - paginado
        tranportistas = []
        while not contador == paginado:
            try:
                tranportistas.append(lista[inicial+contador])
            except:
                pass
            contador =contador + 1
        return(tranportistas)            


    def ArmarListaTrans(self, loc1, loc2):
        loc1 = self.TransportistaLocalidad(loc1)
        loc2 = self.TransportistaLocalidad(loc2)
        origen = loc1[1]
        destino = loc2[1]
        if (len(loc1) == 0) or (len(loc2) == 0) :
            print("cero")
            return([],origen,destino)
        trans_ids = list(set(loc1[0]) & set(loc2[0]))
        transportistas = http.request.env['trans.transportista'].sudo().browse(trans_ids)
        lista1 = []
        lista2 = []
        for transportista in transportistas:
            if transportista.trans_categoria == "p":
                lista1.append(self.extraerdatosTrans(transportista))
            elif transportista.trans_categoria == "np":
                lista2.append(self.extraerdatosTrans(transportista))
        for dat in lista2:
            lista1.append(dat)
        return(lista1,origen,destino)        

    def extraerdatosTrans(self,transportista):
        cat = {"np":False,"p":True}
        dato = {"id":transportista.id}
        dato["web"] = transportista.trans_pagina_web
        dato["razon"] = transportista.trans_razon_social
        dato["nombre"] = transportista.trans_nombre
        dato["telefono"] = transportista.trans_telefono
        dato["email"] = transportista.trans_email
        dato["logo"] = transportista.url_logo_trans()#"http://hgtarg.com/logo.jpg"
        dato["categoria"] = cat[transportista.trans_categoria]
        return(dato)

    def TransportistaLocalidad(self, loc_id):#corregida la funcion esta lambda ponia lento todo
        puntos = http.request.env['trans.punto_retiro'].sudo().search([["pr_localidad","=",loc_id]])
        local = http.request.env['asw.localidad'].sudo().search([["id","=", loc_id]])
        #puntos = puntos.filtered(lambda l: l.pr_localidad == local)
        resultado = []
        for punto in puntos:
            try:
                resultado.append(punto.pr_transoportista.ids[0])
            except:
                pass
        return(resultado, local.display_name)
        


    @http.route('/lappa/transportista/transportista', auth='public', type='http' , website=False ,csrf=False, methods = ['POST','GET'])
    def transportista_extend(self, **kw):
        loc_orig = kw["id_localidad_origen"]
        loc_dest = kw["id_localidad_destino"]
        trans = http.request.env['trans.transportista'].sudo().search([["id","=", kw["id_transportista"]]])
        #Implimentar Randon en busqueda
        datos = {}
        cat = {"np":False,"p":True}
        datos["datos_generales"] = {"id": kw["id_transportista"],
            "web": trans.trans_pagina_web, 
            "razon": trans.trans_razon_social,
            "nombre": trans.trans_nombre,
            "telefono": trans.trans_telefono,
            "email": trans.trans_email,
            "logo": trans.url_logo_trans(),
            "categoria": cat[trans.trans_categoria]}
        datos["datos_origen"] = self.GetDatosPR(kw["id_localidad_origen"], trans.trans_pto_retiro)
        datos["datos_destino"] = self.GetDatosPR(kw["id_localidad_destino"], trans.trans_pto_retiro)


        return(json.dumps(datos))

    def GetDatosPR(self,loc_id,puntos):
        rto = {"telefono":"-","domicilio":"-","dias_parada":"-","retiro":"-"}
        
        for pto in puntos:
            #print(pto.pr_localidad.id, loc_id)
            if pto.pr_localidad.id == int(loc_id):# Agregar la confirmacion de si se muestra la informacion un check
                #print("AKA")
                rto["telefono"] = str(pto.pr_telefono)
                rto["domicilio"] = str(pto.pr_direccion)
                rto["retiro"] = str(pto.pr_tipo_serv)
                return(rto)
        return(rto)    
    
    @http.route('/lappa/fondos', auth='public', type='http' , website=False ,csrf=False, methods = ['POST','GET'])
    def web_extend(self, **kw):
        claro = "https://hgtarg.com/lappa/Principal%20clara.jpg"
        oscuro = "https://hgtarg.com/lappa/Principal%20oscuro.jpg"
        camion = "https://hgtarg.com/lappa/camion.png"
        tilde = "https://hgtarg.com/lappa/tilde.png"
        data = {"claro":claro, "oscuro":oscuro, "camion": camion, "tilde": tilde}
        data["fondo"] = claro
        return(json.dumps(data))