Commit 781c705b by adrian

Merge branch 'master' of git.anacsoft.com:matu/hgt_transportar

2 parents 1bfbade0 5bc5a47a
...@@ -2,3 +2,6 @@ ...@@ -2,3 +2,6 @@
from . import controllers from . import controllers
from . import altausuario from . import altausuario
from . import check
from . import recursos
from . import resetart_pass
\ No newline at end of file \ No newline at end of file
# -*- coding: utf-8 -*-
from odoo import http
from datetime import datetime, timedelta
import json, random, string
#(datetime.now() - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M')
class hgt_login(http.Controller):
"""Controlador para chequear usuario contraseña y eso"""
@http.route('/app/login_check_pass', auth='public', type='json' , website=False ,csrf=False, methods = ['POST','GET'])
def index(self, **kw):
user = kw.get('user')
passw = kw.get('pass')
user = self.login(user,passw)
rta = {"login":user[0],"id":user[1]}
return(rta)
def login(self, User, Pass):
user = http.request.env['res.users'].sudo().search([["login", "=", User]])
try:
user_id = user.id
user.sudo(user_id).check_credentials(Pass)
#user.sudo(user_id)._update_last_login()
return(True,user_id)
except:
return(False,0)
\ No newline at end of file \ No newline at end of file
from odoo import http
import werkzeug
import random, os, json
import base64, string, random
class restablecedor(http.Controller):
"""Controlador acceso recursos publicos"""
@http.route('/lappa/tipificacion', auth='public', type='http' , website=True ,csrf=False, methods = ['POST','GET'])
def index(self, **kw):
tipo_transpor = http.request.env['trans.tipo_transporte'].sudo().search([])
no_transporta = http.request.env['trans.no_transporta'].sudo().search([])
tp = []
nt =[]
for tipo_transporte in tipo_transpor:
#print(tipo_transporte.id,tipo_transporte.tt_tipo)
tmp = [tipo_transporte.id,tipo_transporte.tt_tipo]
tp.append(tmp)
for no_trans in no_transporta:
#print(no_trans)
#print(no_trans.id,no_trans.name)
tmp = [no_trans.id,no_trans.name]
nt.append(tmp)
rta = {"tipo_transportista":tp,"no_transporta":nt}
#print(rta)
rt0 = json.dumps(rta)
return(rt0)
\ No newline at end of file \ No newline at end of file
# -*- coding: utf-8 -*-
from odoo import http
import werkzeug
import random, os, json
import base64, string, random
TextoAlta = """Se a pedido resetear la contraseña de tu usuario {} de LAIKA, si no fuiste vos no hagas nada. Si quieres hacerlo sigue el siguiente enlase {}/usuarios/resetearconntrasenaetp2?vewrftbv={}&vfds={}&wdcwexas=dwdwqcaA"""
TextoRecuperacion = """Se a pedido resetear la contraseña de tu usuario {} de LAIKA, si no fuiste vos innforma al administrador. CODIGO: {}"""
class restablecedor(http.Controller):
"""Controlador de acceso a firmas"""
@http.route('/lappa/resetearconntrasena', auth='public', type='json' , website=True ,csrf=False, methods = ['POST','GET'])
def index(self, **kw):
try:
token = self.ResetUsuario(kw["celular"])
mensaje = "Se envio el codigo por ws"
except:
mensaje = "Fallo el envio, intente nuevamente en unos minutos o contacte soporte por mail en soporte@hgtsa.com.ar"
#print(token)
usuario = token["usuario"]
usuario.lappa_token_pass = token["token"][1]
usuario.lappa_token_ws = token["token"][0]
return({"token":token["token"][1],"mensaje":mensaje,"celular":usuario.CelularRecuperacion})
@http.route('/lappa/reset_segunda_etapa', auth='public', type='json' , website=True ,csrf=False, methods = ['GET','POST'])
def index3(self, **kw):
#print(kw)
try:
celular = kw["celular"]
token = kw["token"]
passw = kw["password"]
codigo = kw["codigo"]
except:
return({"mensaje":"Falta de datos para procegir"})
dominio = [
["CelularRecuperacion","=",celular],
["lappa_token_pass","=",token],
["lappa_token_ws","=",codigo]
]
#print(dominio)
user = http.request.env['res.users'].sudo().search(dominio)
if len(user) != 1:
return({"mensaje":"No se validaron los datos recividos"})
else:
self.cambiar_pass(user.id, passw)
return({"mensaje":"Se cambio la contraseña"})
def ResetUsuario(self,celular):
rto = False
user = http.request.env['res.users'].sudo().search([["CelularRecuperacion","=",celular]])
if len(user) == 1:
clave = self.GeneradorClave(6)#Cantidad de caracteres en la clabe
text = TextoRecuperacion.format(user.display_name, clave[0])#lo que se envia por mensaje
self.enviar_mensaje(mensaje=text,telefono=celular,titulo="Administracion LAIKA")
rto = {"token": clave, "usuario":user,}
return(rto)
def enviar_mensaje(self, tipo='Whatsapp', mensaje="mensaje", titulo="Titulo",email="",telefono=""):#Crea mensaje y lo envia
#Hay que agregar al modelo la relacion con los mensajes para tener trazavilidad
vals = {"mensaje_nombre":titulo,
"mensaje_descripcion":mensaje,
"mensaje_numero_whatsapp":telefono,
"mensaje_direccion_mail":email,
"identidad":1}
mensaje = http.request.env['asw.mensaje'].sudo().create(vals)
mensaje.tipo = tipo
mensaje.enviar()
def cambiar_pass(self,UID, passw):
user = http.request.env['res.users'].sudo().search([["id","=",UID]])
#user.password = passw#Descomentar en productivo
def GeneradorClave(self,largo=6):
codigo = self.cualquiera(largo)
token = self.cualquiera(32)
return(codigo,token)
def cualquiera(self,largo=6):
return(''.join(random.choice(string.digits + string.ascii_letters) for _ in range(largo)))
...@@ -7,3 +7,5 @@ from . import dias ...@@ -7,3 +7,5 @@ from . import dias
from . import solicitudes from . import solicitudes
from . import mensajes from . import mensajes
from . import no_transporta from . import no_transporta
from . import comprobante
from . import user
\ No newline at end of file \ No newline at end of file
# -*- coding: utf-8 -*-
from odoo import models, fields, api, exceptions
from odoo.exceptions import UserError, ValidationError, Warning, RedirectWarning
import base64
class asw_comprobante(models.Model):
_inherit = 'asw.comprobante'
_order = 'id desc'
tipo_comprobante_lappa = fields.Char(string='Tipo de comprobante',
readonly=True, compute="_tipo_comprobante_lappa")
@api.depends('tipo_comprobante_lappa')
def _tipo_comprobante_lappa(self):
adap = {"fac":"Factura","rec":"Recivo"}
for rec in self:
tal = rec.comp_talonario.tal_menu
if tal in ["fac","rec"]:
tipo = adap[tal]
else:
tipo = "otro"
rec.tipo_comprobante_lappa = tipo
def DescargarPDF(self,val):
if len(self) != 1:
raise Warning("Seleccione un regisrto")
print(val)
rec = self.sudo(8)# usuario que pueda imprimir bien
result = rec.imprimir()
report_action = rec.env[result['type']]._get_report_from_name(result['report_name'])
pdf = report_action.render_aeroo([rec.id], {'context': rec.env.context})
nombre_pdf = pdf[2].replace(' ', '').replace(".pdf.pdf",".pdf")
contenido = base64.b64encode(pdf[0])
return({"filename":nombre_pdf,"file":contenido})
\ No newline at end of file \ No newline at end of file
...@@ -71,6 +71,30 @@ class trans_punto_retiro(models.Model): ...@@ -71,6 +71,30 @@ class trans_punto_retiro(models.Model):
column1='trans_transportista_id', column1='trans_transportista_id',
) )
pr_coordenadas = fields.Char(string='Coordenas punto retiro',
readonly=True,
compute="compute_pr_coordenadas")
dias_arribo = fields.Char(string='Dias internos')
entrega_domicilio = fields.Boolean(string='Entrega a domicilio')
retira_domicilio = fields.Boolean(string='Retira a domicilio')
celular = fields.Char(string='Celular')
autoelevador = fields.Boolean(string='Autoelevador')
@api.depends('pr_coordenadas')
def compute_pr_coordenadas(self):
for rec in self:
loc = rec.pr_localidad.coordenadas
if loc == False:
loc = "-32.946832, -60.640122"
rec.pr_coordenadas = loc
@api.one @api.one
@api.constrains('pr_telefono') @api.constrains('pr_telefono')
def _requerir_tel(self): def _requerir_tel(self):
......
...@@ -65,6 +65,16 @@ class trans_transportista(models.Model): ...@@ -65,6 +65,16 @@ class trans_transportista(models.Model):
string=u'Elementos que no transporta', string=u'Elementos que no transporta',
help='Aclarar aquí qué elementos no transporta, si los hubiera', help='Aclarar aquí qué elementos no transporta, si los hubiera',
) )
#trans_domicilio
trans_domicilio = fields.Char(string='Domicilio fiscal')
#condicion_iva
condicion_iva = fields.Char(string='Condicio de iva')
#probincia char
probincia = fields.Char(string='Provincia ingreso brutos')
#constancia_afip_contenido
constancia_afip_contenido = fields.Binary(string='Constancia afip')
#constancia_afip_nombre
constancia_afip_nombre = fields.Char(string='Constancia afip')
trans_tipo = fields.Many2many( trans_tipo = fields.Many2many(
string=u'Tipo de Transporte', string=u'Tipo de Transporte',
...@@ -422,3 +432,12 @@ class trans_transportista(models.Model): ...@@ -422,3 +432,12 @@ class trans_transportista(models.Model):
def Confirmacion(self): def Confirmacion(self):
self.trans_categoria = "p" self.trans_categoria = "p"
def AgregarPuntoRetiroWEB(self,vals):
print(self)
Ids = self.trans_pto_retiro.ids
punto = self.env['trans.punto_retiro'].create(vals)
Ids.append(punto.id)
self.trans_pto_retiro = Ids
\ No newline at end of file \ No newline at end of file
from odoo import models, fields, api, exceptions
from odoo.exceptions import UserError, ValidationError, Warning, RedirectWarning
import base64, json, requests
from passlib.context import CryptContext
class res_users(models.Model):
_inherit = 'res.users'
_order = 'id desc'
lappa_token_pass = fields.Char(string='Token de confirmacion')
lappa_token_ws = fields.Char(string='Token de confirmacion 2')
def CambiarContrasenia(self,val):
print(self.id, self.env.user.id)
#Validar pass minimo
#may min numero minimo 8 caracteres
if self.id != self.env.user.id:
return("No se puede cambiar contraseña agena")
print(val)
headers = {'Content-Type': 'application/json'}
data = {'params':{'user':self.login,'pass':val["pass_actual"]}}
data_json = json.dumps(data)
r = requests.post('http://127.0.0.1:8001/app/login_check_pass', data=data_json, headers=headers)
respuesta = r.json()
user = respuesta["result"]
print(user)
if not user["login"]:
return("Contraseña no coincide cancelando proceso")
return(f"""Seteando contraseña nueva {val["pass_nueva"]}/No habilitado""")
def CambiarMail(self,val):
print(self.id, self.env.user.id)
#Validar pass minimo
#may min numero minimo 8 caracteres
if self.id != self.env.user.id:
return("No se puede cambiar mail ajeno")
print(val)
headers = {'Content-Type': 'application/json'}
data = {'params':{'user':self.login,'pass':val["pass_actual"]}}
print(data)
data_json = json.dumps(data)
r = requests.post('http://127.0.0.1:8001/app/login_check_pass', data=data_json, headers=headers)
respuesta = r.json()
user = respuesta["result"]
print(user)
if not user["login"]:
return("Contraseña no coincide cancelando proceso")
return(f"""Seteando mail nuevo {val["user_nuevo"]}/No habilitado""")
\ No newline at end of file \ No newline at end of file
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
</group> </group>
<group col="4" string="Facturas"> <group col="4" string="Facturas">
<field name="comprobantes" readonly="1" colspan="4" nolabel="1"/> <field name="comprobantes" readonly="0" colspan="4" nolabel="1"/>
</group> </group>
<!--</sheet> --> <!--</sheet> -->
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!