Example #1
0
def initvars():
    global Logueado
    Logueado = False
    config = ConfigParser()
    config.read("conf/config.ini")
    tipo = config.get('CUENTA', 'Tipo')
    ps = b64decode('MjAxMDE3MzMtOTYwOTkyNg==')
    xorps = XOR.new(str(ps))
    global Tipo
    Tipo = xorps.decrypt(b64decode(str(tipo)))
    webserver = config.get('WEB', 'srv')
    ps = b64decode('MjAxMDE3MzMtOTYwOTkyNg==')
    xorps = XOR.new(str(ps))
    global WEBServer
    WEBServer = xorps.decrypt(b64decode(str(webserver)))
    print WEBServer
    global DatosUsuario
    DatosUsuario = {}
    global DictSenales
    DictSenales = {}
    global BD
    BD = BasedeDatos()
    BD.Conectar()
    global DictColaResultados
    DictColaResultados = {}
    t = threading.Thread(target=GetIps)
    t.start()
Example #2
0
 def ObtenerNombreClienteBD(self):
     if Modo == "1":
         BDNombreCliente = BasedeDatos()
         BDNombreCliente.Conectar()
         Nombre = BDNombreCliente.SeleccionarUno(
             "select top 1 nombre from t365_Empresas where master = ?", 1)
     elif Modo == "2":
         Nombre = "Sin Nombre Modo StandAlone"
     return Nombre
Example #3
0
class GetSS365Disprog(QtCore.QThread):
    def __init__(self):
        QtCore.QThread.__init__(self)
        self.Timeout = 45
        self.detener = False

    def ConectarBD(self):
        self.BD1 = BasedeDatos()
        self.BD1.Conectar()

    def SearchSS365Disprog(self):
        #print "Entre"
        Result = self.BD1.Seleccionar(
            "SELECT id, id_cliente, zona FROM t365_SS365Disprog WHERE status = 0"
            "")
        print 'Arranco GetSS365Disprog'
        print Result
        if Result:
            for r in Result:
                global listass365disprog
                disp = str(r.id_cliente) + ',' + str(r.zona)
                listass365disprog.append(disp)

    def Error(self, excep):
        self.dia = LaFecha.damedia()
        self.fecha = LaFecha.damefecha()
        self.ErrorLog = open('history/' + str(self.dia) + 'ErrorLog.txt', 'a')
        self.ErrorLog.write("ERROR" + ' - ' + str(excep) + ' - ' +
                            str(self.fecha) + "\n")
        self.ErrorLog.close()

    def Inicio(self):
        #try:
        while True:
            if self.Timeout == 45:
                self.SearchSS365Disprog()
                self.Timeout = 0
            #Mejorar el Uso del CPU
            self.Timeout = self.Timeout + 1
            if self.detener == True:
                break
            time.sleep(1)

    #except Exception as e:
    #	self.Error(e)
    #	self.Inicio()
    def run(self):
        try:
            self.ConectarBD()
        except:
            print 'No se pudo conectar a BD [GetSS365Disprog]'
        self.Inicio()
Example #4
0
    def handle(self):
        self.trama = 'vacia'
        numpuerto = self.server.num_puerto
        prefijo = self.server.prefijo
        listass365disprog = self.server.listass365disprog
        print "Cliente Conectado", self.client_address
        while len(self.trama):

            self.trama = self.request.recv(1024)
            print self.trama + ' - OK'
            self.trama = self.trama.replace("", "")
            self.tramadiv = self.trama.split(',')
            self.trama = self.tramadiv[0]
            self.idcliente = self.tramadiv[1]
            self.patron = re.compile(
                '(?P<Identificador>5)(?P<Receptor>\d\d)(?P<Linea>[0-9a-zA-Z]{1,3})(?P<Espacio> )(?P<ID>18)(?P<Espacio1> )(?P<Abonado>[^ ]{1,20})(?P<Espacio2> )(?P<Evento>[^ ]{1,20})(?P<Espacio3> )(?P<Particion>[^ ]{1,20})(?P<Espacio4> )(?P<ZonaUsuario>[^ ]{1,20})'
            )
            self.dividida = self.patron.search(self.trama)
            zonausuario = self.dividida.group("ZonaUsuario")
            cuentadisp = str(self.idcliente) + ',' + str(zonausuario)
            Borrardelista = False
            if cuentadisp in listass365disprog:
                bd = BasedeDatos()
                bd.Conectar()
                cuentazona = cuentadisp.split(',')
                cuenta = cuentadisp[0]
                zona = cuentazona[1]
                bd.Borrar(
                    "DELETE FROM t365_SS365Disprog WHERE id_cliente = ? and zona = ?",
                    [str(cuenta), str(zona)])
                self.request.send("Desprog")
                Borrardelista = True
            if Borrardelista == True:
                listass365disprog.remove(cuentadisp)
            else:
                self.request.send("\x06")
            self.identificar(self.trama, numpuerto, prefijo, self.idcliente)

        print "Cliente Desconectado", self.client_address
        self.request.close()
Example #5
0
 def ConectarBD(self):
     self.BD1 = BasedeDatos()
     self.BD1.Conectar()
Example #6
0
class GuardarTramaBD(QtCore.QThread):
    def __init__(self):
        QtCore.QThread.__init__(self)
        self.LogoutOperadores = 0.0

    def ConectarBD(self):
        self.BD1 = BasedeDatos()
        self.BD1.Conectar()

    def VerificarOperadoresBD(self):
        self.OperadoresBD = True
        try:
            config = ConfigParser()
            config.read("conf/config.ini")
            Res = config.get('CUENTA', 'OperadoresBD')
            if Res == 'False':
                self.OperadoresBD = False
            else:
                self.OperadoresBD = True
        except:
            pass

    def InsertarBD(self):
        #print 'Insentando 1'
        if len(ColaParaGuardar) > 0:
            self.BD1.Insertar(
                "INSERT INTO t365_ReceiveSignal(signal,num_line,customer,event,zone_user,protocol,partition,id_receptor,status)values(?,?,?,?,?,?,?,?,?); "
                "", ColaParaGuardar.pop(0))
            #self.emit(QtCore.SIGNAL("signalNotifySMSA"))
            print 'Insentando 2'
        if len(ColaParaGuardarSenalSistema) > 0:
            self.BD1.Insertar(
                "exec jssp_InsertarTramaSistema ?,?,?,?,?,?,?,?,?",
                ColaParaGuardarSenalSistema.pop(0))
        #	print 'Insentando 3'

        #Para manejar Logueo y Reparticion de Senales por Base de Datos con nuevos Stores y Triggers.
        if self.OperadoresBD:
            #	print 'Insentando 4'

            if self.LogoutOperadores > 5:
                self.BD1.Actualizar("exec sp365_LogoutOperador")
                #		print 'Insentando 5'

                #print 'Enviando Logout Operadores'
                self.LogoutOperadores = 0.0
            self.BD1.Actualizar("exec sp365_AsignarSenal")
            #print 'Asignando Senal'

    #Cree esta funcion para poder reiniciar en caso de error, no estoy seguro
    #Si RUN al iniciar un hilo pueda invocarla de nuevo
    def Error(self, excep):
        self.dia = LaFecha.damedia()
        self.fecha = LaFecha.damefecha()
        self.ErrorLog = open('history/' + str(self.dia) + 'ErrorLog.txt', 'a')
        self.ErrorLog.write("ERROR" + ' - ' + str(excep) + ' - ' +
                            str(self.fecha) + "\n")
        self.ErrorLog.close()

    def Inicio(self):
        try:
            self.VerificarOperadoresBD()
            while True:
                self.InsertarBD()
                #Mejorar el Uso del CPU
                time.sleep(0.5)
                if self.OperadoresBD:
                    self.LogoutOperadores = self.LogoutOperadores + 0.5
        except Exception as e:
            print 'Error al guardar Trama' + str(e)
            self.Error(e)
            self.Inicio()

    def run(self):
        try:
            self.ConectarBD()
        except:
            print 'No se pudo conectar a BD [GTO]'
        self.Inicio()
Example #7
0
from flask import Flask, request, jsonify
import json
import threading
import base64
import datetime

from bd import BasedeDatos

app = Flask(__name__)

BD = BasedeDatos()
BD.Conectar()


def shutdown_server():
    func = request.environ.get('werkzeug.server.shutdown')
    if func is None:
        raise RuntimeError('Not running with the Werkzeug Server')
    func()


@app.route('/shutdown', methods=['GET'])
def shutdown():
    shutdown_server()
    return 'Server shutting down...'


@app.route("/authenticate", methods=['POST'])
def autenticacion():
    Json = request.get_json(force=True)
    print type(Json)
Example #8
0
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.MainWindow = Ui_MainWindow()
        self.MainWindow.setupUi(self)

        self.iconoeditar = QtGui.QIcon()
        self.iconoeditar.addPixmap(QtGui.QPixmap(":/ico/edit-icon.png"),
                                   QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.iconoborrar = QtGui.QIcon()
        self.iconoborrar.addPixmap(QtGui.QPixmap(":/ico/Delete_Icon.png"),
                                   QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.iconocam = QtGui.QIcon()

        self.setWindowIcon(QtGui.QIcon("icon.png"))

        self.MainWindow.tableWidget_TareasConfig.verticalHeader().setVisible(
            False)
        self.MainWindow.tableWidget_TareasConfig.setShowGrid(False)
        self.MainWindow.tableWidget_TareasConfig.setAlternatingRowColors(True)
        self.MainWindow.tableWidget_TareasConfig.verticalHeader(
        ).setDefaultSectionSize(20)
        self.MainWindow.tableWidget_TareasConfig.setEditTriggers(
            QtGui.QAbstractItemView.NoEditTriggers)
        self.MainWindow.tableWidget_TareasConfig.setSelectionBehavior(
            QtGui.QAbstractItemView.SelectRows)

        self.MainWindow.tableWidget_Tareas.verticalHeader().setVisible(False)
        self.MainWindow.tableWidget_Tareas.setShowGrid(False)
        self.MainWindow.tableWidget_Tareas.setAlternatingRowColors(True)
        self.MainWindow.tableWidget_Tareas.verticalHeader(
        ).setDefaultSectionSize(20)
        self.MainWindow.tableWidget_Tareas.setEditTriggers(
            QtGui.QAbstractItemView.NoEditTriggers)
        self.MainWindow.tableWidget_Tareas.setSelectionBehavior(
            QtGui.QAbstractItemView.SelectRows)

        self.connect(self.MainWindow.actionAgregar_Tarea,
                     QtCore.SIGNAL("triggered()"), self.AbrirAgregarTarea)
        self.connect(self.MainWindow.actionProgramar_Tarea,
                     QtCore.SIGNAL("triggered()"), self.AbrirProgramarTarea)

        self.scheduler = QtScheduler()

        self.BD = BasedeDatos()
        self.BD.Conectar()

        self.CargarTareasProgramadas()
        self.CargarTareas()
        self.ProgramarTareas()

        self.ListarTareas()
        self.ListarTareasProgramadas()
        ##################   FUNCIONES PARA EL SYSTEM TRAY ICON   #######################

        self.exitOnClose = False
        exit = QtGui.QAction(QtGui.QIcon("icon.png"), "Cerrar 365Jobs", self)
        self.connect(exit, QtCore.SIGNAL("triggered()"), self.exitEvent)
        self.trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("icon.png"), self)
        menu = QtGui.QMenu(self)
        menu.addAction(exit)
        self.trayIcon.setContextMenu(menu)
        self.connect(self.trayIcon, \
         QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), \
         self.trayIconActivated)
        self.trayIcon.show()
        self.trayIcon.showMessage(
            "365Jobs Abierto!",
            "Click para abrir la Ventana\nBoton derecho para Menu")
        self.trayIcon.setToolTip("365Jobs")

        print self.DictTareasProgramadasByID
Example #9
0
class MainClass(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.MainWindow = Ui_MainWindow()
        self.MainWindow.setupUi(self)

        self.iconoeditar = QtGui.QIcon()
        self.iconoeditar.addPixmap(QtGui.QPixmap(":/ico/edit-icon.png"),
                                   QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.iconoborrar = QtGui.QIcon()
        self.iconoborrar.addPixmap(QtGui.QPixmap(":/ico/Delete_Icon.png"),
                                   QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.iconocam = QtGui.QIcon()

        self.setWindowIcon(QtGui.QIcon("icon.png"))

        self.MainWindow.tableWidget_TareasConfig.verticalHeader().setVisible(
            False)
        self.MainWindow.tableWidget_TareasConfig.setShowGrid(False)
        self.MainWindow.tableWidget_TareasConfig.setAlternatingRowColors(True)
        self.MainWindow.tableWidget_TareasConfig.verticalHeader(
        ).setDefaultSectionSize(20)
        self.MainWindow.tableWidget_TareasConfig.setEditTriggers(
            QtGui.QAbstractItemView.NoEditTriggers)
        self.MainWindow.tableWidget_TareasConfig.setSelectionBehavior(
            QtGui.QAbstractItemView.SelectRows)

        self.MainWindow.tableWidget_Tareas.verticalHeader().setVisible(False)
        self.MainWindow.tableWidget_Tareas.setShowGrid(False)
        self.MainWindow.tableWidget_Tareas.setAlternatingRowColors(True)
        self.MainWindow.tableWidget_Tareas.verticalHeader(
        ).setDefaultSectionSize(20)
        self.MainWindow.tableWidget_Tareas.setEditTriggers(
            QtGui.QAbstractItemView.NoEditTriggers)
        self.MainWindow.tableWidget_Tareas.setSelectionBehavior(
            QtGui.QAbstractItemView.SelectRows)

        self.connect(self.MainWindow.actionAgregar_Tarea,
                     QtCore.SIGNAL("triggered()"), self.AbrirAgregarTarea)
        self.connect(self.MainWindow.actionProgramar_Tarea,
                     QtCore.SIGNAL("triggered()"), self.AbrirProgramarTarea)

        self.scheduler = QtScheduler()

        self.BD = BasedeDatos()
        self.BD.Conectar()

        self.CargarTareasProgramadas()
        self.CargarTareas()
        self.ProgramarTareas()

        self.ListarTareas()
        self.ListarTareasProgramadas()
        ##################   FUNCIONES PARA EL SYSTEM TRAY ICON   #######################

        self.exitOnClose = False
        exit = QtGui.QAction(QtGui.QIcon("icon.png"), "Cerrar 365Jobs", self)
        self.connect(exit, QtCore.SIGNAL("triggered()"), self.exitEvent)
        self.trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("icon.png"), self)
        menu = QtGui.QMenu(self)
        menu.addAction(exit)
        self.trayIcon.setContextMenu(menu)
        self.connect(self.trayIcon, \
         QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), \
         self.trayIconActivated)
        self.trayIcon.show()
        self.trayIcon.showMessage(
            "365Jobs Abierto!",
            "Click para abrir la Ventana\nBoton derecho para Menu")
        self.trayIcon.setToolTip("365Jobs")

        print self.DictTareasProgramadasByID

    def trayIconActivated(self, reason):
        if reason == QtGui.QSystemTrayIcon.Context:
            self.trayIcon.contextMenu().show()
        elif reason == QtGui.QSystemTrayIcon.Trigger:
            self.show()
            self.raise_()

    def closeEvent(self, event):
        if self.exitOnClose:
            self.trayIcon.hide()
            del self.trayIcon
            #event.accept()
        else:
            self.hide()
            event.setAccepted(True)
            event.ignore()

    def exitEvent(self):
        self.exitOnClose = True
        self.close()

    def AbrirAgregarTarea(self):
        self.DialogAgregarTarea = DialogAgregarTarea(self)
        self.DialogAgregarTarea.show()

    def AbrirProgramarTarea(self):
        self.DialogProgramarTarea = DialogProgramarTarea(self)
        self.DialogProgramarTarea.show()

    def AbrirEditarTarea(self, idtarea):
        self.DialogEditarTarea = DialogEditarTarea(self, idtarea)
        self.DialogEditarTarea.show()

    def CargarTareas(self):
        self.Tareas = self.BD.Seleccionar("""SELECT * FROM t365_Jobs """)

    def CargarTareasProgramadas(self):
        self.TareasProg = self.BD.Seleccionar(
            """SELECT t365_JobsTipos.Nombre AS nombretipo, t365_Jobs.nombre AS nombretarea, t365_JobsConfig.id_tareaconfig,t365_JobsConfig.id_tarea, t365_JobsConfig.id_tipo, t365_JobsConfig.day_run_date, t365_JobsConfig.interval_weeks, 
                         t365_JobsConfig.interval_days, t365_JobsConfig.interval_hours, t365_JobsConfig.interval_seconds, t365_JobsConfig.interval_minutes, t365_JobsConfig.start_date, t365_JobsConfig.end_date, 
                         t365_JobsConfig.cron_year, t365_JobsConfig.cron_month, t365_JobsConfig.cron_day, t365_JobsConfig.cron_week, t365_JobsConfig.cron_day_of_week, t365_JobsConfig.cron_hour, t365_JobsConfig.cron_minute,
                          t365_JobsConfig.cron_second, t365_Jobs.query, t365_Jobs.params FROM t365_Jobs INNER JOIN
                         t365_JobsConfig ON t365_Jobs.id_tarea = t365_JobsConfig.id_tarea INNER JOIN
                         t365_JobsTipos ON t365_JobsConfig.id_tipo = t365_JobsTipos.id_tipo"""
        )

    def ListarTareas(self):

        while self.MainWindow.tableWidget_Tareas.rowCount() > 0:
            self.MainWindow.tableWidget_Tareas.removeRow(0)

        for datostarea in self.Tareas:
            Siguiente = self.MainWindow.tableWidget_Tareas.rowCount()
            self.MainWindow.tableWidget_Tareas.insertRow(Siguiente)
            columna = 0
            texto = QtGui.QTableWidgetItem(datostarea.nombre)
            self.MainWindow.tableWidget_Tareas.setItem(Siguiente, columna,
                                                       texto)
            columna = 1
            texto = QtGui.QTableWidgetItem(datostarea.query)
            self.MainWindow.tableWidget_Tareas.setItem(Siguiente, columna,
                                                       texto)
            columna = 2
            texto = QtGui.QTableWidgetItem(datostarea.params)
            self.MainWindow.tableWidget_Tareas.setItem(Siguiente, columna,
                                                       texto)
            columna = 3
            ly = QtGui.QHBoxLayout()
            ly.setContentsMargins(0, 0, 0, 0)
            wdg = QtGui.QWidget()
            btneditar = QtGui.QPushButton(self.MainWindow.tableWidget_Tareas)
            btneditar.setFlat(True)
            btneditar.setIcon(self.iconoeditar)
            ly.addWidget(btneditar)
            #####################################################################################
            btnborrar = QtGui.QPushButton(self.MainWindow.tableWidget_Tareas)
            btnborrar.setFlat(True)
            btnborrar.setIcon(self.iconoborrar)
            ly.addWidget(btnborrar)
            wdg.setLayout(ly)
            self.MainWindow.tableWidget_Tareas.setCellWidget(
                Siguiente, columna, wdg)
            btneditar.clicked.connect(
                partial(self.AbrirEditarTarea, datostarea.id_tarea))
            btnborrar.clicked.connect(
                partial(self.BorrarTareayConfigPorIDTarea,
                        str(datostarea.id_tarea)))

    def ListarTareasProgramadas(self):

        while self.MainWindow.tableWidget_TareasConfig.rowCount() > 0:
            self.MainWindow.tableWidget_TareasConfig.removeRow(0)

        for datostarea in self.TareasProg:
            Siguiente = self.MainWindow.tableWidget_TareasConfig.rowCount()
            self.MainWindow.tableWidget_TareasConfig.insertRow(Siguiente)
            columna = 0
            texto = QtGui.QTableWidgetItem(datostarea.nombretarea)
            self.MainWindow.tableWidget_TareasConfig.setItem(
                Siguiente, columna, texto)
            columna = 1
            texto = QtGui.QTableWidgetItem(datostarea.nombretipo)
            self.MainWindow.tableWidget_TareasConfig.setItem(
                Siguiente, columna, texto)
            columna = 3
            ly = QtGui.QHBoxLayout()
            ly.setContentsMargins(0, 0, 0, 0)
            wdg = QtGui.QWidget()
            #####################################################################################
            btnborrar = QtGui.QPushButton(
                self.MainWindow.tableWidget_TareasConfig)
            btnborrar.setFlat(True)
            btnborrar.setIcon(self.iconoborrar)
            ly.addWidget(btnborrar)
            wdg.setLayout(ly)
            self.MainWindow.tableWidget_TareasConfig.setCellWidget(
                Siguiente, columna, wdg)
            btnborrar.clicked.connect(
                partial(self.BorrarTareaConfig,
                        str(datostarea.id_tareaconfig)))

    def ProgramarTareas(self):
        Siguiente = -1
        columna = 2  #Siempre 2 porque es donde van los botones
        self.DictTareasProgramadasFilasColumnas = {}
        self.DictTareasProgramadasByID = {}
        self.ListaOrdenJobs = []
        for datostarea in self.TareasProg:
            Siguiente = Siguiente + 1
            if datostarea.nombretipo == 'Fecha':
                self.trigger = DateTrigger(run_date=datostarea.day_run_date)
                self.job = self.scheduler.add_job(
                    id=str(datostarea.id_tareaconfig),
                    name=datostarea.nombretarea,
                    func=self.EjecutarQuery,
                    trigger=self.trigger,
                    args=[datostarea.query, datostarea.params])

            elif datostarea.nombretipo == 'Cronometro':
                self.trigger = CronTrigger(
                    year=datostarea.cron_year,
                    month=datostarea.cron_month,
                    day=datostarea.cron_day,
                    week=datostarea.cron_week,
                    day_of_week=datostarea.cron_day_of_week,
                    hour=datostarea.cron_hour,
                    minute=datostarea.cron_minute,
                    second=datostarea.cron_second,
                    start_date=datostarea.start_date,
                    end_date=datostarea.end_date)
                self.job = self.scheduler.add_job(
                    id=str(datostarea.id_tareaconfig),
                    name=datostarea.nombretarea,
                    func=self.EjecutarQuery,
                    trigger=self.trigger,
                    args=[datostarea.query, datostarea.params])

            elif datostarea.nombretipo == 'Interval':
                self.trigger = IntervalTrigger(
                    weeks=datostarea.interval_weeks,
                    days=datostarea.interval_days,
                    hours=datostarea.interval_hours,
                    minutes=datostarea.interval_minutes,
                    seconds=datostarea.interval_seconds,
                    start_date=datostarea.start_date,
                    end_date=datostarea.end_date)
                self.job = self.scheduler.add_job(
                    id=str(datostarea.id_tareaconfig),
                    name=datostarea.nombretarea,
                    func=self.EjecutarQuery,
                    trigger=self.trigger,
                    args=[datostarea.query, datostarea.params])
            self.ListaOrdenJobs.append(self.job)
            self.DictTareasProgramadasFilasColumnas[self.job] = [
                Siguiente, columna
            ]
            self.DictTareasProgramadasByID[str(
                datostarea.id_tareaconfig)] = self.job

        self.scheduler.start()
        self.scheduler.print_jobs()
        self.PintarFechasProxEjec()

    def PintarFechasProxEjec(self):
        for idtp in self.ListaOrdenJobs:
            proximaejecucion = idtp.next_run_time.strftime("%d %b %Y %H:%M:%S")
            texto = QtGui.QTableWidgetItem(proximaejecucion)
            self.MainWindow.tableWidget_TareasConfig.setItem(
                self.DictTareasProgramadasFilasColumnas[idtp][0],
                self.DictTareasProgramadasFilasColumnas[idtp][1], texto)
        print self.DictTareasProgramadasFilasColumnas

    def EjecutarQuery(self, query, params):
        if not params:
            self.BD.Insertar('exec  ' + str(query))
        else:
            listapar = []
            for par in params:
                listapar.append(par)

            cantidadparametros = len(params)
            query = 'exec  ' + str(query) + ' ?'
            for arg in range(cantidadparametros - 1):
                query = query + ' ,?'
            print query
            self.BD.Insertar(query, listapar)
        self.PintarFechasProxEjec()

    def BorrarTareaConfig(self, idtareaconfig):

        self.BD.Borrar('DELETE FROM t365_JobsConfig WHERE id_tareaconfig = ? ',
                       str(idtareaconfig))
        jobeliminado = self.DictTareasProgramadasByID[str(idtareaconfig)]
        jobeliminado.remove()
        del self.DictTareasProgramadasByID[str(idtareaconfig)]
        del self.DictTareasProgramadasFilasColumnas[jobeliminado]
        self.ListaOrdenJobs.remove(jobeliminado)
        self.CargarTareasProgramadas()
        self.ListarTareasProgramadas()

    def BorrarTareayConfigPorIDTarea(self, idtarea):
        tareasborrar = self.BD.Seleccionar(
            'SELECT id_tareaconfig FROM t365_JobsConfig WHERE id_tarea = ?',
            str(idtarea))
        for tar in tareasborrar:
            self.BD.Borrar(
                'DELETE FROM t365_JobsConfig WHERE id_tareaconfig = ? ',
                str(tar.id_tareaconfig))
            jobeliminado = self.DictTareasProgramadasByID[str(
                tar.id_tareaconfig)]
            jobeliminado.remove()
            del self.DictTareasProgramadasByID[str(tar.id_tareaconfig)]
            del self.DictTareasProgramadasFilasColumnas[jobeliminado]
            self.ListaOrdenJobs.remove(jobeliminado)
            self.CargarTareasProgramadas()
            self.ListarTareasProgramadas()
        self.BD.Borrar('DELETE FROM t365_Jobs WHERE id_tarea = ? ',
                       str(idtarea))

    def AgregarTareaProgramada(self, idtareaconfig):
        self.CargarTareasProgramadas()
        self.ListarTareasProgramadas()
        self.NuevaTareaProg = self.BD.Seleccionar(
            """SELECT t365_JobsTipos.Nombre AS nombretipo, t365_Jobs.nombre AS nombretarea, t365_JobsConfig.id_tareaconfig,t365_JobsConfig.id_tarea, t365_JobsConfig.id_tipo, t365_JobsConfig.day_run_date, t365_JobsConfig.interval_weeks, 
                         t365_JobsConfig.interval_days, t365_JobsConfig.interval_hours, t365_JobsConfig.interval_seconds, t365_JobsConfig.interval_minutes, t365_JobsConfig.start_date, t365_JobsConfig.end_date, 
                         t365_JobsConfig.cron_year, t365_JobsConfig.cron_month, t365_JobsConfig.cron_day, t365_JobsConfig.cron_week, t365_JobsConfig.cron_day_of_week, t365_JobsConfig.cron_hour, t365_JobsConfig.cron_minute,
                          t365_JobsConfig.cron_second, t365_Jobs.query, t365_Jobs.params FROM t365_Jobs INNER JOIN
                         t365_JobsConfig ON t365_Jobs.id_tarea = t365_JobsConfig.id_tarea INNER JOIN
                         t365_JobsTipos ON t365_JobsConfig.id_tipo = t365_JobsTipos.id_tipo Where id_tareaconfig = ?""",
            str(idtareaconfig[0][0]))
        if self.NuevaTareaProg[0].nombretipo == 'Fecha':
            self.trigger = DateTrigger(
                run_date=self.NuevaTareaProg[0].day_run_date)
            self.job = self.scheduler.add_job(
                id=str(self.NuevaTareaProg[0].id_tareaconfig),
                name=self.NuevaTareaProg[0].nombretarea,
                func=self.EjecutarQuery,
                trigger=self.trigger,
                args=[
                    self.NuevaTareaProg[0].query, self.NuevaTareaProg[0].params
                ])

        elif self.NuevaTareaProg[0].nombretipo == 'Cronometro':
            self.trigger = CronTrigger(
                year=self.NuevaTareaProg[0].cron_year,
                month=self.NuevaTareaProg[0].cron_month,
                day=self.NuevaTareaProg[0].cron_day,
                week=self.NuevaTareaProg[0].cron_week,
                day_of_week=self.NuevaTareaProg[0].cron_day_of_week,
                hour=self.NuevaTareaProg[0].cron_hour,
                minute=self.NuevaTareaProg[0].cron_minute,
                second=self.NuevaTareaProg[0].cron_second,
                start_date=self.NuevaTareaProg[0].start_date,
                end_date=self.NuevaTareaProg[0].end_date)
            self.job = self.scheduler.add_job(
                id=str(self.NuevaTareaProg[0].id_tareaconfig),
                name=self.NuevaTareaProg[0].nombretarea,
                func=self.EjecutarQuery,
                trigger=self.trigger,
                args=[
                    self.NuevaTareaProg[0].query, self.NuevaTareaProg[0].params
                ])

        elif self.NuevaTareaProg[0].nombretipo == 'Interval':
            self.trigger = IntervalTrigger(
                weeks=self.NuevaTareaProg[0].interval_weeks,
                days=self.NuevaTareaProg[0].interval_days,
                hours=self.NuevaTareaProg[0].interval_hours,
                minutes=self.NuevaTareaProg[0].interval_minutes,
                seconds=self.NuevaTareaProg[0].interval_seconds,
                start_date=self.NuevaTareaProg[0].start_date,
                end_date=self.NuevaTareaProg[0].end_date)
            self.job = self.scheduler.add_job(
                id=str(self.NuevaTareaProg[0].id_tareaconfig),
                name=self.NuevaTareaProg[0].nombretarea,
                func=self.EjecutarQuery,
                trigger=self.trigger,
                args=[
                    self.NuevaTareaProg[0].query, self.NuevaTareaProg[0].params
                ])
        self.ListaOrdenJobs.append(self.job)
        posicion = self.ListaOrdenJobs.index(self.job)
        self.DictTareasProgramadasFilasColumnas[self.job] = [posicion, 2]
        self.DictTareasProgramadasByID[str(
            self.NuevaTareaProg[0].id_tareaconfig)] = self.job
        self.PintarFechasProxEjec()
Example #10
0
class MainClass(QtGui.QMainWindow):
	def __init__(self):
		QtGui.QWidget.__init__(self)
		self.MainWindow = Ui_MainWindow()
		self.MainWindow.setupUi(self)
		#Consola Negra
		pal = QtGui.QPalette()
		bgc = QtGui.QColor(0, 0, 0)
		pal.setColor(QtGui.QPalette.Base, bgc)
		textc = QtGui.QColor(255, 255, 255)
		pal.setColor(QtGui.QPalette.Text, textc)
		self.MainWindow.plainTextEdit_Consola.setPalette(pal)
				
		self.setWindowIcon(QtGui.QIcon("icons/SystemTrey.png"))
		self.setWindowTitle('Soluciones SMS  (www.soluciones-sms.com)')

		#Colocando Fecha de Apertura
		self.MainWindow.label_FechaApertura.setText(str(LaFecha.damefecha()))
		#Creando QActions
		self.accionSalir = QtGui.QAction('Exit', self)
		self.accionSalir.setStatusTip('Exit App - Ctl+E')
		self.accionSalir.setShortcut('Ctl+E')
		self.accionSalir.setIcon(QtGui.QIcon('icons/Exit.png'))
		
		self.accionIniciar = QtGui.QAction('Excel', self)
		self.accionIniciar.setStatusTip('Load Excel File - Ctl+L')
		self.accionIniciar.setShortcut('Ctl+L')
		self.accionIniciar.setIcon(QtGui.QIcon('icons/excel.png'))
		
		self.accionDetener = QtGui.QAction('Simulator', self) #Simular SMS Automatic
		self.accionDetener.setStatusTip('Simulator - Ctl+S')
		self.accionDetener.setShortcut('Ctl+S')
		self.accionDetener.setIcon(QtGui.QIcon('icons/sms.png'))
		
		self.accionLimpiar = QtGui.QAction('Reset', self)
		self.accionLimpiar.setStatusTip('Reset Device - Ctl+R')
		self.accionLimpiar.setShortcut('Ctl+R')
		self.accionLimpiar.setIcon(QtGui.QIcon('icons/ResetModem.png'))
		
		#Creando ToolBar
		self.toolbar = QtGui.QToolBar(self)
		#Indicandole donde arrancara por defecto
		self.addToolBar(QtCore.Qt.TopToolBarArea,self.toolbar)
		#Agregandole a la ToolBar los QtGui.QActions
		self.toolbar.addAction(self.accionIniciar)
		self.toolbar.addAction(self.accionDetener)
		self.toolbar.addSeparator()
		self.toolbar.addAction(self.accionLimpiar)
		self.toolbar.addSeparator()
		self.toolbar.addAction(self.accionSalir)
		
		self.setWindowState(QtCore.Qt.WindowMaximized)
		if self.Iniciar():
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalEscribirConsola"),self.EscribirConsola)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalModificarSenal"),self.ModificarSenal)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalModificarOperadora"),self.ModificarOperadora)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalModificarStatusBar"),self.ModificarStatusBar)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalModificarStatusBar2"),self.ModificarStatusBar2)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalModificarBateria"),self.ModificarBateria)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalDetenerCliente"),self.DetenerCliente)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalAddTabMensajeEnviado"),self.AddMensajeEnviado)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalAddTabMensajeFallido"),self.AddMensajeFallido)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalAddTabMensajeRecibido"),self.AddMensajeRecibido)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalAddTabMensajeCola"),self.AddMensajeCola)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalStatusToLabel"),self.StatusToLabel)

			self.connect(self.accionIniciar, QtCore.SIGNAL("triggered()"), self.IniciarModem)
			self.connect(self.accionDetener, QtCore.SIGNAL("triggered()"), self.DetenerModem)
			self.connect(self.accionSalir, QtCore.SIGNAL("triggered()"), self.exitEvent)


			#Para abrir la ventana del Nuevo Mensaje Simulador
			self.connect(self.MainWindow.actionNuevo_Mensaje, QtCore.SIGNAL("triggered()"), self.AbrirNuevoMensaje)
			#Para Salir del Sistema
			self.connect(self.MainWindow.actionNueva_Cola_de_Mensajes, QtCore.SIGNAL("triggered()"), self.exitEvent)

			


			self.connect(self.cliente, QtCore.SIGNAL("signalSlaveTrue"),self.SlaveToLabel)

			self.connect(self.server, QtCore.SIGNAL("signalMasterTrue"),self.MasterToLabel)
			self.connect(self.server, QtCore.SIGNAL("signalMastertoBD"),self.ArrancarBD)
			self.connect(self.server, QtCore.SIGNAL("signalCrearCliente"),self.CrearCliente)
			self.connect(self.modemseleccionado, QtCore.SIGNAL("signalCrearServer"),self.CrearServer)

			##################FUNCIONES PARA EL SYSTEM TRAY ICON#######################
			self.exitOnClose = False
			exit = QtGui.QAction(QtGui.QIcon("icons/SystemTrey.png"), "Close Modem ("+str(self.puerto)+")", self)
			self.connect(exit, QtCore.SIGNAL("triggered()"), self.exitEvent)
			self.trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("icons/SystemTrey.png"), self)
			menu = QtGui.QMenu(self)
			menu.addAction(exit)
			self.trayIcon.setContextMenu(menu)
			self.connect(self.trayIcon, \
					QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), \
					self.trayIconActivated)
			self.trayIcon.show()
			self.trayIcon.showMessage("Soluciones SMS!", "Boton izquierdo para Open\nBoton derecho para Close" )
			self.trayIcon.setToolTip("Soluciones SMS COM"+str(self.puerto))

	def trayIconActivated(self, reason):
		if reason == QtGui.QSystemTrayIcon.Context:
			self.trayIcon.contextMenu().show()
		elif reason == QtGui.QSystemTrayIcon.Trigger:
			self.show()
			self.raise_()

	def closeEvent(self, event):
		if self.exitOnClose:
			self.trayIcon.hide()
			del self.trayIcon
			#event.accept()
		else:
			self.hide()
			event.setAccepted(True)
			event.ignore()

	def exitEvent(self):                
		self.exitOnClose = True
		self.PuertoCOM.close()
		self.close()

		################################################################################

	def AbrirNuevoMensaje(self):
		QNuevoMensaje = NuevoMensaje(self)
		QNuevoMensaje.show()


	def StatusToLabel(self,status):
		self.MainWindow.label_Estado.setText(status)
	def MasterToLabel(self):
		self.MainWindow.label_Modo.setText("M1")
	def SlaveToLabel(self):
		self.MainWindow.label_Modo.setText("S2")
	def AddMensajeEnviado(self,telefono,mensaje,pk,smsenviados):
		try:
			#Variables para Insertar
			datos = ["1",str(pk),str(telefono),str(mensaje),str(LaFecha.damefechaJerm())]
			fila = 0
			columna = 0
			self.MainWindow.tableWidget_Enviados.insertRow(0)
			for item in datos:
				texto = QtGui.QTableWidgetItem(item)
				self.MainWindow.tableWidget_Enviados.setItem(fila,columna,texto)
				columna = columna + 1
			#Eliminamor el primero de la cola
			self.MainWindow.tableWidget_Cola.removeRow(0)
			#Contamos la cantidad de columnas en la tabla
			if self.MainWindow.tableWidget_Enviados.rowCount() > 100:
				self.MainWindow.tableWidget_Enviados.removeRow(101)
			#Sumo el numero al Label Contador
			self.MainWindow.label_TotalEnviados.setText(str(smsenviados))

			#Actualizar el Label de la Cola
			self.AddMensajeCola()
		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))

	def AddMensajeFallido(self,telefono,mensaje,pk,smsfallidos):
		try:
			#Variables para Insertar
			datos = ["1",str(pk),str(telefono),str(mensaje),str(LaFecha.damefechaJerm())]
			fila = 0
			columna = 0
			self.MainWindow.tableWidget_Fallidos.insertRow(0)
			for item in datos:
				texto = QtGui.QTableWidgetItem(item)
				self.MainWindow.tableWidget_Fallidos.setItem(fila,columna,texto)
				columna = columna + 1
			#Eliminamor el primero de la cola
			self.MainWindow.tableWidget_Cola.removeRow(0)
			#Contamos la cantidad de columnas en la tabla
			if self.MainWindow.tableWidget_Fallidos.rowCount() > 100:
				self.MainWindow.tableWidget_Fallidos.removeRow(101)
			#Sumo el numero al Label Contador
			self.MainWindow.label_MensajesFallidos.setText("SMS Fail ("+str(smsfallidos)+")")

			#Actualizar el Label de la Cola
			self.AddMensajeCola()
		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))

	def AddMensajeCola(self,telefono=None,mensaje=None,pk=None):
		try:
			#Variables para Insertar
			if telefono != None:
				datos = ["1",str(pk),str(telefono),str(mensaje),str(LaFecha.damefechaJerm())]
				fila = 0
				columna = 0
				self.MainWindow.tableWidget_Cola.insertRow(0)
				for item in datos:
					texto = QtGui.QTableWidgetItem(item)
					self.MainWindow.tableWidget_Cola.setItem(fila,columna,texto)
					columna = columna + 1
					#Contamos la cantidad de columnas en la tabla
					if self.MainWindow.tableWidget_Cola.rowCount() > 100:
						self.MainWindow.tableWidget_Cola.removeRow(101)
			#Cambiamos el label de Contador
			filas = self.MainWindow.tableWidget_Cola.rowCount()
			self.MainWindow.label_TotalCola.setText(str(filas))
		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))
	def AddMensajeRecibido(self,telefono,mensaje,smsrecibidos):
		try:
			datos = [str(telefono),str(mensaje),str(LaFecha.damefechaJerm())]
			fila = 0
			columna = 0
			self.MainWindow.tableWidget_Recibidos.insertRow(0)
			for item in datos:
				texto = QtGui.QTableWidgetItem(item)
				self.MainWindow.tableWidget_Recibidos.setItem(fila,columna,texto)
				columna = columna + 1
				#Contamos la cantidad de columnas en la tabla
				if self.MainWindow.tableWidget_Recibidos.rowCount() > 100:
					self.MainWindow.tableWidget_Recibidos.removeRow(101)
			#Cambiamos el label de Contador
			self.MainWindow.label_MensajesRecibidos.setText("SMS Incoming ("+str(smsrecibidos)+")")
		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))		

	def EscribirConsola(self,text):                
		self.MainWindow.plainTextEdit_Consola.appendPlainText(time.strftime('%H:%M:%S') + " >> " + text)
	def ModificarSenal(self,senal):
		self.MainWindow.progressBar_Senal.setValue(int(senal))
	def ModificarBateria(self,bateria):
		self.MainWindow.progressBar_Bateria.setValue(int(bateria))
	def ModificarOperadora(self,operadora):
		self.MainWindow.label_Operadora.setText(str(operadora))
	def ModificarStatusBar2(self,marca,modelo,version,operadora,imei):
		self.MainWindow.statusbar.insertPermanentWidget(0,QtGui.QLabel("Version 8.1"),1)
		self.MainWindow.statusbar.insertPermanentWidget(1,QtGui.QLabel("COM ("+str(self.puerto)+")"),1)
		self.MainWindow.statusbar.insertPermanentWidget(2,QtGui.QLabel(str(marca)),1)
		self.MainWindow.statusbar.insertPermanentWidget(3,QtGui.QLabel(str(modelo)),1)
		self.MainWindow.statusbar.insertPermanentWidget(4,QtGui.QLabel(str(version)),1)
		self.MainWindow.statusbar.insertPermanentWidget(5,QtGui.QLabel(str(operadora)),1)
		self.MainWindow.statusbar.insertPermanentWidget(6,QtGui.QLabel(str(imei)),1)
		self.MainWindow.statusbar.insertPermanentWidget(7,QtGui.QLabel(str(self.MainWindow.label_Modo.text())),1)
		self.MainWindow.statusbar.insertPermanentWidget(8,QtGui.QLabel(str(time.strftime('%d/%m/%y' + ' %H:%M:%S'))),1)
                
	def ModificarStatusBar(self,marca,modelo,version,operadora,imei):		
		self.ModificarStatusBar2(marca,modelo,version,operadora,imei)
		self.MainWindow.statusbar.insertPermanentWidget(9,QtGui.QLabel(str("                                                                                                                                                                                                                                                                                                          ")),1)


	def IniciarModem(self):
		#self.Iniciar()
		file_name = QtGui.QFileDialog.getOpenFileName(self, "Open Data File", "", "Excel data files (*.xlsx)")
		wb = openpyxl.load_workbook(file_name)
		sheet = wb.get_active_sheet()


	def DetenerModem(self):                
		#self.PuertoCOM.close()
		numero = "04142788259"
		mensaje = "Prueba SMS Modem ("+str(self.puerto)+") "+str(time.strftime('%d/%m/%y' + ' %H:%M:%S'))
		mensajecompleto = str(numero)+"|"+str(mensaje)+"|"+"151589"
		globalvars.ColaparaEnviar.append(mensajecompleto)
		#self.accionIniciar.setEnabled(True)
		#self.accionDetener.setEnabled(False)
	def CrearServer(self):
		self.server.start()
	def CrearCliente(self):
		#Le cambiamos el Status a Falso al Modem en Master, para
		#que si esta pegado, se desconecte del server.
		self.modemseleccionado.Master = False
		self.cliente.start()
	def DetenerCliente(self):
		self.cliente.cliente.toStop = True
		print self.cliente.cliente.toStop
	def ArrancarBD(self,master):
		self.getsms = GetSMSBD(master)
		self.getsms.start()		
	def Iniciar(self):
		print globalvars.Modo
		try:
			if globalvars.Modo == '1':
				self.puertomodem = 23 #sys.argv[1] Es el parametro que llega de afuerta al correo el sistema
				self.BasedeDatos = BasedeDatos()
				self.BasedeDatos.Conectar()
				self.BasedeDatos.SeleccionarUno("""SELECT id_modem,tipo,config FROM t365_Modem WHERE id_modem = ?""", self.puertomodem)
				self.configpuerto = str(self.BasedeDatos.resultado.config).split(',')
				#460800,8,N,1
				self.configmodem = ['23',460800,'8','N','1','1']

			elif globalvars.Modo == '2':
				archivoconfiguracion = open('conf/config.txt','r')
				self.lineaconfig = archivoconfiguracion.readline()
				self.configmodem = self.lineaconfig.split(",")
			
			elif globalvars.Modo == None:
				self.configmodem = 23 #sys.argv[1] Es el parametro que llega de afuerta al correo el sistema
				#Pasando los argumentos a los objetos de PySerial
			self.puerto = 22 #self.configmodem[0]
			self.baudrate = 921600 #self.configmodem[1]
			self.bitesize = 8 #globalvars.nombresPySerial['BiteSize'][self.configmodem[2]]
			self.parity = 'N' #globalvars.nombresPySerial["Parity"][self.configmodem[3]]
			self.stopbits = 1 #globalvars.nombresPySerial["StopBits"][self.configmodem[4]]
			self.modem = 1 #self.configmodem[5].rstrip('\n')

			#Le cambiamos el nombre a la ventana y le colocamos el COM antes del Titulo
			self.setWindowTitle("("+str(self.puerto)+")"+"   .: www.soluciones-sms.com :.")
                        #serial.Serial(int(self.puerto)-1,self.baudrate,eval(self.bitesize),eval(self.parity),eval(self.stopbits))
			self.PuertoCOM = serial.Serial(port='COM22', baudrate=921600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, inter_byte_timeout=None)
			#23,460800,8,serial.PARITY_NONE,1)
                             
			print "Modem:"
			print self.modem
			self.modem = '2'
			if self.modem == '1':                                 
				self.modemseleccionado = Modem_EnforaSerial(self.PuertoCOM,self.puerto)
				
				self.modemseleccionado.start()
				self.accionIniciar.setEnabled(True)
				self.accionDetener.setEnabled(True)
				#Creamos el hilo del Server, pero no lo arrancamos si no con una senal desde el mismo Modem cuando compruebe que inicio bien
				self.server = HiloServer()
				#Creamos el hilo del Cliente, pero no lo arrancamos al menos que ya halla server. 
				self.cliente = HiloCliente()
			elif self.modem == '2':
				self.modemseleccionado = Modem_HuaweiUSB(self.PuertoCOM,self.puerto)
				
				self.modemseleccionado.start()
				self.accionIniciar.setEnabled(True)
				self.accionDetener.setEnabled(True)
				#Creamos el hilo del Server, pero no lo arrancamos si no con una senal desde el mismo Modem cuando compruebe que inicio bien
				self.server = HiloServer()
				#Creamos el hilo del Cliente, pero no lo arrancamos al menos que ya halla server. 
				self.cliente = HiloCliente()
			return True

		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))
			self.EscribirConsola("Port "+str(self.puerto)+" in use...")
			self.EscribirConsola(str(traceback.format_exc()))
			return False
Example #11
0
	def Iniciar(self):
		print globalvars.Modo
		try:
			if globalvars.Modo == '1':
				self.puertomodem = 23 #sys.argv[1] Es el parametro que llega de afuerta al correo el sistema
				self.BasedeDatos = BasedeDatos()
				self.BasedeDatos.Conectar()
				self.BasedeDatos.SeleccionarUno("""SELECT id_modem,tipo,config FROM t365_Modem WHERE id_modem = ?""", self.puertomodem)
				self.configpuerto = str(self.BasedeDatos.resultado.config).split(',')
				#460800,8,N,1
				self.configmodem = ['23',460800,'8','N','1','1']

			elif globalvars.Modo == '2':
				archivoconfiguracion = open('conf/config.txt','r')
				self.lineaconfig = archivoconfiguracion.readline()
				self.configmodem = self.lineaconfig.split(",")
			
			elif globalvars.Modo == None:
				self.configmodem = 23 #sys.argv[1] Es el parametro que llega de afuerta al correo el sistema
				#Pasando los argumentos a los objetos de PySerial
			self.puerto = 22 #self.configmodem[0]
			self.baudrate = 921600 #self.configmodem[1]
			self.bitesize = 8 #globalvars.nombresPySerial['BiteSize'][self.configmodem[2]]
			self.parity = 'N' #globalvars.nombresPySerial["Parity"][self.configmodem[3]]
			self.stopbits = 1 #globalvars.nombresPySerial["StopBits"][self.configmodem[4]]
			self.modem = 1 #self.configmodem[5].rstrip('\n')

			#Le cambiamos el nombre a la ventana y le colocamos el COM antes del Titulo
			self.setWindowTitle("("+str(self.puerto)+")"+"   .: www.soluciones-sms.com :.")
                        #serial.Serial(int(self.puerto)-1,self.baudrate,eval(self.bitesize),eval(self.parity),eval(self.stopbits))
			self.PuertoCOM = serial.Serial(port='COM22', baudrate=921600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, inter_byte_timeout=None)
			#23,460800,8,serial.PARITY_NONE,1)
                             
			print "Modem:"
			print self.modem
			self.modem = '2'
			if self.modem == '1':                                 
				self.modemseleccionado = Modem_EnforaSerial(self.PuertoCOM,self.puerto)
				
				self.modemseleccionado.start()
				self.accionIniciar.setEnabled(True)
				self.accionDetener.setEnabled(True)
				#Creamos el hilo del Server, pero no lo arrancamos si no con una senal desde el mismo Modem cuando compruebe que inicio bien
				self.server = HiloServer()
				#Creamos el hilo del Cliente, pero no lo arrancamos al menos que ya halla server. 
				self.cliente = HiloCliente()
			elif self.modem == '2':
				self.modemseleccionado = Modem_HuaweiUSB(self.PuertoCOM,self.puerto)
				
				self.modemseleccionado.start()
				self.accionIniciar.setEnabled(True)
				self.accionDetener.setEnabled(True)
				#Creamos el hilo del Server, pero no lo arrancamos si no con una senal desde el mismo Modem cuando compruebe que inicio bien
				self.server = HiloServer()
				#Creamos el hilo del Cliente, pero no lo arrancamos al menos que ya halla server. 
				self.cliente = HiloCliente()
			return True

		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))
			self.EscribirConsola("Port "+str(self.puerto)+" in use...")
			self.EscribirConsola(str(traceback.format_exc()))
			return False
Example #12
0
class GetSMSBD(QtCore.QThread):
    def __init__(self, master):
        QtCore.QThread.__init__(self)
        self.master = master

    def ConectarBD(self):
        self.BD1 = BasedeDatos()
        self.BD1.Conectar()

    def BuscarMensajes(self):
        self.BD1.Seleccionar(
            "SELECT id_salida, movil, sms, fecha_creada, status FROM t365_BsalidaSpeed WHERE status = 0"
        )
        for SMS in self.BD1.resultado:
            ValidacionNum = Validar.Validar(str(SMS.movil))
            if ValidacionNum == 'Ok':
                self.BD1.Actualizar(
                    "UPDATE t365_BsalidaSpeed SET status = 5 WHERE id_salida = ?",
                    int(SMS.id_salida))
                self.Mensaje = str(SMS.movil) + "|" + str(SMS.sms) + "|" + str(
                    SMS.id_salida)
                globalvars.ColaGeneral.append(self.Mensaje)

            elif ValidacionNum == None:
                #Si el formato del numero no es valido
                self.BD1.Actualizar(
                    "UPDATE t365_BsalidaSpeed SET status = 3 WHERE id_salida = ?",
                    int(SMS.id_salida))

    def ActualizarEnviados(self):
        #Lista donde se almacenan los PK que ya se colocaron como enviados, para luego borrarlos de la lista
        pkaborrar = []
        for PKMensaje in globalvars.ColaEnviados:
            self.BD1.Actualizar(
                "UPDATE t365_BsalidaSpeed SET status = 1 WHERE id_salida = ?",
                int(PKMensaje))
            pkaborrar.append(PKMensaje)
        #Borrando de la lista los PK ya actualizados
        cantidad = len(pkaborrar)
        for i in range(cantidad):
            globalvars.ColaEnviados.remove(pkaborrar[i])

    def ActualizarFallidos(self):
        #Lista donde se almacenan los PK que ya se colocaron como enviados, para luego borrarlos de la lista
        pkaborrar = []
        for PKMensaje in globalvars.ColaFallidos:
            self.BD1.Actualizar(
                "UPDATE t365_BsalidaSpeed SET status = 2 WHERE id_salida = ?",
                int(PKMensaje))
            pkaborrar.append(PKMensaje)
        #Borrando de la lista los PK ya actualizados
        cantidad = len(pkaborrar)
        for i in range(cantidad):
            globalvars.ColaFallidos.remove(pkaborrar[i])

    def InsertarRecibidos(self):
        cantidadrecibidos = len(globalvars.ColaRecibidos)
        for PKMensaje in range(cantidadrecibidos):
            self.BD1.Insertar(
                "INSERT INTO t365_Bentrada(id_cliente,id_user,movil,sms,fecha,status,modem)values(?,?,?,?,?,?,?); "
                "", globalvars.ColaRecibidos.pop(0))

    def Iniciar(self):
        #Esta funcion iniciar la creo porque no se puede llamar a run directamente.
        self.ConectarBD()
        while True:
            try:
                #Solo si es Master busca mensajes en la Base de datos
                if self.master == True:
                    self.BuscarMensajes()
                else:
                    pass
                #Pero igualmente al ser Slave Actualiza sus propios Mensajes en BD
                self.ActualizarEnviados()
                self.ActualizarFallidos()
                self.InsertarRecibidos()
                time.sleep(1)
            except Exception as exc:
                GuardarTXTObjeto.GuardarErrorLog('GETSMS Error...',
                                                 str(traceback.format_exc()))
                print 'NO DATA BASE CONECTION...'
                time.sleep(10)
                self.Iniciar()

    def run(self):
        self.Iniciar()