Commit 4b0a02e6 by juan

Se agrega confirmacion de estado

1 parent 9f93efeb
......@@ -18,3 +18,6 @@ WsClientesBrowser = {
5493412671594:"http://192.168.15.246:13434/"
}
resp_defect_int = {'success': True, 'uid': WS_uid, 'hook_url': None, 'alias': 'HGT SA Notificaciones', 'platform': 'android', 'battery': None, 'plugged': None, 'locale': '-'}
SESSION_MONGODB_DB = "sms_mail_server"
SESSION_MONGODB_COLLECT = "estados_msj"
MONGO_URI = "mongodb://localhost:27017/"
\ No newline at end of file
......@@ -90,6 +90,7 @@ class DBconnection:
def check(self,information):
valid = True
for column in information:
#print(column)
# columna no existe en la tabla
if not Table.validate(column):
......
......@@ -6,6 +6,7 @@ from python_arptable import get_arp_table
from enums import States, Table
from Wpp1State import StatePhoneWs, StateMail, AndroidStatus
import os, ipdb, time, threading, random, datetime, config
import mongo_db
app = Flask(__name__)
......@@ -68,6 +69,12 @@ def estadoSMS():
print(test)
return(jsonify(test))
@app.route("/status/<Id>", methods = ['GET','POST'])
def estadoGeneral(Id):
Id = str(Id)
rta = mongo_db.obtener_estado(Id)
return jsonify({"estado":rta})
# Guarda archivos del emisor en una nueva carpeta (desencriptados)
# Pide guardar en base de datos una preinstancia del mensaje
@app.route('/data', methods = ['POST'])
......@@ -98,9 +105,13 @@ def data():
#if key:
# os.remove(path + "rand.key")
return str(process.datastore(
devolucion = process.datastore(
random.randrange(minid,maxid),
path))
path)
#print(devolucion)
#for msj_id in devolucion:
mongo_db.crear(devolucion)
return str(devolucion)
# Devuelve un string al azar entre [0-9,a-z,A-Z]
def newprefix():
......@@ -131,6 +142,7 @@ def msg():
}
#if request.values.get('ws_chrome_server'):
state = process.paramstore(query)
print(state)
return state
# Consulta el estado de un mensaje dado su id
......
from pymongo import MongoClient
from config import *
# Conectar a la base de datos MongoDB
client = MongoClient(MONGO_URI) # Reemplaza con tu cadena de conexión
db = client[SESSION_MONGODB_DB]
collection = db[SESSION_MONGODB_COLLECT]
def crear(id_mensaje):
# Crear un documento con el estado "En cola"
if type(id_mensaje) != int:
return None
id_mensaje = str(id_mensaje)
nuevo_documento = {
"_id": id_mensaje,
"estado": "En cola"
}
try:
collection.insert_one(nuevo_documento)
print(f"Mensaje con id {id_mensaje} creado con estado 'En cola'.")
except Exception as e:
print(f"Error al crear el mensaje: {e}")
def editar(id_mensaje, nuevo_estado):
# Editar el estado del documento con el id_mensaje dado
try:
resultado = collection.update_one({"_id": str(id_mensaje)}, {"$set": {"estado": nuevo_estado}})
if resultado.matched_count:
print(f"Mensaje con id {id_mensaje} actualizado a estado '{nuevo_estado}'.")
else:
print(f"No se encontró ningún mensaje con id {id_mensaje}.")
except Exception as e:
print(f"Error al editar el mensaje: {e}")
def obtener_estado(id_mensaje):
# Obtener el estado del documento con el id_mensaje dado
try:
documento = collection.find_one({"_id": str(id_mensaje)})
if documento:
return documento["estado"]
else:
print(f"No se encontró ningún mensaje con id {id_mensaje}.")
return None
except Exception as e:
print(f"Error al obtener el estado del mensaje: {e}")
return None
# Ejemplo de uso
crear("mensaje1")
print(obtener_estado("mensaje1"))
editar("mensaje1", "Procesado")
print(obtener_estado("mensaje1"))
......@@ -24,6 +24,7 @@ class Process:
# Guarda los parámetros
def paramstore(self,query):
#print(Table)
row = self.lookup(query[Table.id])
# id no existe
if type(row) == str:
......@@ -110,6 +111,7 @@ class Process:
def lookup(self,id):
rows = self.conn.query("SELECT * FROM msg WHERE id = ?",(id,))
#print(rows)
if rows == []:
return "El id " + str(id) + " no existe"
......
......@@ -8,6 +8,7 @@ from email.mime.application import MIMEApplication
from ValidacionTelefonos import ValidacionTelefonosArgentinos, ValidacionCorreo
import requests, json, os, smtplib, config, base64
import SmsGateway24 as Sms
import mongo_db
import re
......@@ -71,7 +72,8 @@ class Wpp1(ServiceBase):
return(n)
def _send(self,data,stadotel):
print(data)
#print(data)
ID_Consulta = data["id"]
types = json.loads(data[Table.type])
try:
origen = json.loads(data["info"])["origin"]
......@@ -100,8 +102,11 @@ class Wpp1(ServiceBase):
path = requests.post(url = Wpp1.server, files = { 'data' : (file,open(filepath,'rb')) })
result = requests.get(url = Wpp1.URL + Wpp1.URLmode[types[file]],params = {'token':Wpp1.token,'uid':origen,'to':data[Table.dest],'url':Wpp1.server + path.text})
succ[file] = result.json()['success']
mongo_db.editar(ID_Consulta, "Enviado")
except Exception as E:
print(f"ROMPIO ALGO EN EL ENVIO: {E}")
Mensaje = str(f"ROMPIO ALGO EN EL ENVIO: {E}")
mongo_db.editar(ID_Consulta, Mensaje)
print(Mensaje)
succ[file] = False
return succ
......@@ -162,6 +167,8 @@ class Mail(ServiceBase):
def _sendClasico(self,data,stadomail):
types = json.loads(data[Table.type])
info = json.loads(data[Table.info])
#print("166",data)
ID_Consulta = data["id"]
self.TextoaEnviar = ""
msg = MIMEMultipart()
Cr = ValidacionCorreo()
......@@ -170,7 +177,7 @@ class Mail(ServiceBase):
#print(destino)
msg['Subject'] = info['subject']
msg["To"] = filtrar_no_ascii(Cr.ValidarCorreo(destino))
print("destino",msg["To"])
#print("destino",msg["To"])
succ = {}
if msg['To'] == False:
print("mail no sale")
......@@ -188,15 +195,18 @@ class Mail(ServiceBase):
#for destino in msg['To'].split(","):
# Msg = msg.copy()
# Msg["To"] = Cr.ValidarCorreo(destino)
print(info)
print("info",info)
self.Envio(msg,info,stadomail)
#self.Envio(msg,info,stadomail)
mongo_db.editar(ID_Consulta, "Enviado")
else:
succ[file] = False
except Exception as E:
print(f"ROMPIO ALGO EN EL ENVIO: {E}")
mensaje = (f"ROMPIO ALGO EN EL ENVIO: {E}")
mongo_db.editar(ID_Consulta, mensaje)
print(mensaje)
#print("msg",msg)
print("data",data)
#print("data",data)
#tenemos q filtrar from
stadomail.MailRompedor.append(msg['From'])
succ[file] = False
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!