Ejemplo n.º 1
0
    def enviaInstrucoesNovaSenha(self, emailDestination, ID_USUARIO):
        try:
            message = MIMEMultipart()
            message["From"] = self.__user
            message["To"] = emailDestination
            message["Subject"] = 'Datamigra - Definição de nova senha'

            cifrada = Cifra.cifra(ID_USUARIO)
            link = ''

            html = ''.join((
                "<br>Clique no link abaixo para acessar a área de <b>reset</b> de sua senha:<br><br>",
                "<a href='" + link + "?view=" + cifrada + "'>" + link +
                "</a><br><br>"))

            part = MIMEText(html, "html")
            message.attach(part)

            context = ssl.create_default_context()

            with smtplib.SMTP_SSL(self.__smtpAddress,
                                  self.__port,
                                  context=context) as server:
                server.login(self.__user, self.__password)
                server.send_message(self.__user, emailDestination,
                                    message.as_string())

        except Exception as ex:
            qex.throw(ex)

        finally:
            server.quit()
Ejemplo n.º 2
0
    def validaLogin(self, EMAIL_USUARIO, SENHA_USUARIO):
        try:
            rec = ctx.session.query(ctx.mapUsuario).\
                filter(ctx.mapUsuario.EMAIL_USUARIO == EMAIL_USUARIO).first()
        except:
            return qex.throw('Usuário não cadastrado')

        if rec == None:
            return qex.throw('Usuário não cadastrado')

        # senhaDecifrada = Cifra.decifra(rec.SENHA_USUARIO)

        if rec.SENHA_USUARIO != SENHA_USUARIO:
            return qex.throw('Senha incorreta')

        if float(rec.TIPO_USUARIO) != 1:
            return qex.throw('Acesso negado')

        # keep = Cifra.cifra(super().TrataDataHora()).decode('utf8')
        keep = '8Kd4KmTesIXTOI8awHuhod1X7ERl3divuinW5b8CSNhcO2kITIwUkJDzZpHgZyXx'

        return json.dumps({
            'status': 'OK',
            'id': rec.ID_USUARIO,
            'TIPO': rec.TIPO_USUARIO,
            'keep': keep
        })
Ejemplo n.º 3
0
    def recoverPass(self, EMAIL_USUARIO):
        rec = ctx.session.query(ctx.mapUsuario).\
        filter(ctx.mapUsuario.EMAIL_USUARIO == EMAIL_USUARIO).first()

        if rec is None:
            return qex.throw('Usuário não cadastrado')

        mail = qMail('smtp.doran.com.br', 587, '*****@*****.**',
                     '56Runna01')
        mail.enviaInstrucoesNovaSenha(EMAIL_USUARIO, rec.ID_USUARIO)
        del mail
Ejemplo n.º 4
0
    def __gravaTabelaTemporaria(self, msec, _table, finalFile):

        recs = []

        firstLine = True

        try:
            with open(finalFile, mode='rb') as file:

                for lineIn in file:

                    if firstLine:
                        firstLine = False
                        continue

                    row = lineIn.decode('utf-8').replace('"', '').replace(
                        '\r\n', '').split(';')

                    recs.append({
                        'ID_TEMP': 0,
                        'MILISEC': msec,
                        'TABELA_ORIGEM': _table,
                        'ANO': row[0]
                    })

                    if (len(recs) % self.__rowsBulkInsert) == 0:
                        self.__bulkInsert(mapTEMP, recs)
                        recs = []

            if len(recs) > 0:
                self.__bulkInsert(mapTEMP, recs)

        except ValueError as err:
            return qex.throw(err)

        select1 = ctx.session.query(ctx.mapTEMP.ANO).distinct().filter(
            ctx.mapTEMP.MILISEC == msec
            and ctx.mapTEMP.TABELA_ORIGEM == _table).all()

        lista = []

        [(lista.append((row.ANO))) for row in select1]

        return lista
Ejemplo n.º 5
0
    def __gravaSTI(self, finalFile):

        recs = []

        firstLine = True

        try:
            with open(finalFile, mode='rb') as file:

                for lineIn in file:

                    if firstLine:
                        firstLine = False
                        continue

                    row = lineIn.decode('utf-8').replace('"', '').replace(
                        '\r\n', '').split(';')

                    recs.append({
                        'ID_STI': 0,
                        'ANO': row[0],
                        'MES': row[1],
                        'UF': row[2],
                        'PAIS': row[3],
                        'CONTINENTE': row[4],
                        'TIPO_MOVIMENTO': row[5],
                        'TIPOLOGIA_ENTRADA': row[6],
                        'SEXO': row[7]
                    })

                    if (len(recs) % self.__rowsBulkInsert) == 0:
                        self.__bulkInsert(mapSTI, recs, 1)
                        recs = []

                file.close()

            if len(recs) > 0:
                self.__bulkInsert(mapSTI, recs, 1)

        except ValueError as err:
            return qex.throw(err)
Ejemplo n.º 6
0
    def __gravaCAGED(self, finalFile):

        recs = []

        firstLine = True

        try:
            with open(finalFile, mode='rb') as file:

                for lineIn in file:

                    if firstLine:
                        firstLine = False
                        continue

                    row = lineIn.decode('utf-8').replace('"', '').replace(
                        '\r\n', '').split(';')

                    recs.append({
                        'ID_CAGED': 0,
                        'ANO': row[0],
                        'MES': row[1],
                        'UF': row[2],
                        'MUNICIPIO': row[3],
                        'PAIS': row[4],
                        'CONTINENTE': row[5],
                        'ADMITIDOS_DESLIGADOS': row[6],
                        'SEXO': row[7]
                    })

                    if (len(recs) % self.__rowsBulkInsert) == 0:
                        self.__bulkInsert(mapCAGED, recs, 1)
                        recs = []

            if len(recs) > 0:
                self.__bulkInsert(mapCAGED, recs, 1)

        except ValueError as err:
            return qex.throw(err.args[0])
Ejemplo n.º 7
0
    def viewGrid(self, ANO, MES, UF, MUNICIPIO, PAIS, CONTINENTE, SEXO,
                 TIPO_VISTO, TIPOLOGIA_EXTRATOR, TIPO_MOVIMENTO,
                 ADMITIDOS_DESLIGADOS, table, eixoX, series):
        """
        Visualização dos dados em formato datatable jQuery

        params: 
            ANO = array  (2019, 2018)
            MES = array ('JANEIRO', 'SETEMBRO')

        Returns: 
            array collection columns from selected table in query

        """

        table = table.lower()
        where = ''

        if len(ANO) > 0:
            where += ''.join(('| ANO IN(', ', '.join(map(str, ANO)), ')'))

        if len(MES) > 0:
            where += ''.join(
                ('| MES IN(', ', '.join(map(lambda x: "'" + x + "'",
                                            MES)), ')'))

        if len(CONTINENTE) > 0:
            where += ''.join(
                ('| CONTINENTE IN(',
                 ', '.join(map(lambda x: "'" + x + "'", CONTINENTE)), ')'))

        if len(PAIS) > 0:
            where += ''.join(
                ('| PAIS IN(', ', '.join(map(lambda x: "'" + x + "'",
                                             PAIS)), ')'))

        if len(UF) > 0:
            where += ''.join(
                ('| UF IN(', ', '.join(map(lambda x: "'" + x + "'", UF)), ')'))

        if len(MUNICIPIO) > 0:
            where += ''.join(('| MUNICIPIO IN(',
                              ', '.join(map(lambda x: "'" + x + "'",
                                            MUNICIPIO)), ')'))

        if len(SEXO) > 0:
            where += ''.join(
                ('| SEXO IN(', ', '.join(map(lambda x: "'" + x + "'",
                                             SEXO)), ')'))

        if len(TIPO_VISTO) > 0:
            where += ''.join(
                ('| TIPO_VISTO IN(',
                 ', '.join(map(lambda x: "'" + x + "'", TIPO_VISTO)), ')'))

        if len(TIPO_MOVIMENTO) > 0:
            where += ''.join(
                ('| TIPO_MOVIMENTO IN(',
                 ', '.join(map(lambda x: "'" + x + "'", TIPO_MOVIMENTO)), ')'))

        if len(TIPOLOGIA_EXTRATOR) > 0:
            where += ''.join(
                ('| TIPOLOGIA_EXTRATOR IN(',
                 ', '.join(map(lambda x: "'" + x + "'",
                               TIPOLOGIA_EXTRATOR)), ')'))

        if len(ADMITIDOS_DESLIGADOS) > 0:
            where += ''.join(
                ('| ADMITIDOS_DESLIGADOS IN(',
                 ', '.join(map(lambda x: "'" + x + "'",
                               ADMITIDOS_DESLIGADOS)), ')'))

        if len(where) > 0:
            where = ''.join((' where ', where[2:].replace('|', ' AND')))

        table = table.replace('rb_', 'tb_')

        toProceed = self.__checkFilters(
            series[0],
            table,
            where,
            ANO=ANO,
            MES=MES,
            UF=UF,
            MUNICIPIO=MUNICIPIO,
            CONTINENTE=CONTINENTE,
            PAIS=PAIS,
            SEXO=SEXO,
            TIPO_VISTO=TIPO_VISTO,
            TIPOLOGIA_EXTRATOR=TIPOLOGIA_EXTRATOR,
            TIPO_MOVIMENTO=TIPO_MOVIMENTO,
            ADMITIDOS_DESLIGADOS=ADMITIDOS_DESLIGADOS)

        if toProceed == 0:
            _message = 'Numero de filtros não permitido'
            raise HTTPException(_message)
            return qex.throw(_message)
            # return '[[], []]'

        selectX = []
        selectSerie = []

        sql = ''.join(('SELECT DISTINCT({}) as {}, '.format(eixoX,
                                                            eixoX)[0:-2],
                       ' FROM {}'.format(table), where))

        select1 = ctx.engine.execute(sql).fetchall()

        [(selectX.append(list(row))) for row in select1]

        #

        sql = ''.join(
            ('SELECT DISTINCT({}) as {}, '.format(series[0], series[0])[0:-2],
             ' FROM {}'.format(table), where))

        select2 = ctx.engine.execute(sql).fetchall()

        [(selectSerie.append(list(row))) for row in select2]

        listaFinal = []
        columns = ["'" + eixoX + "'"]

        [columns.append("'" + serie[0] + "'") for serie in selectSerie]

        # chart
        listaChart = []
        strChart = "['" + eixoX + "'"

        for row in selectSerie:
            strChart += ", '" + row[0] + "'"

        strChart += "]"

        listaChart.append(strChart)

        for item in selectX:
            str1 = ''
            strChart = ''

            for item1 in selectSerie:
                where1 = where

                where1 = ' WHERE ' if len(where) == 0 else where + ' AND '

                sql = ''.join(
                    ('SELECT COUNT(*) as {} FROM {}'.format(series[0],
                                                            table), where1,
                     "{} = '{}' AND {} = '{}'".format(eixoX, item[0],
                                                      series[0], item1[0])))

                contador = ctx.engine.execute(sql).scalar()

                str1 += ', ' + str(contador)
                strChart += ', ' + str(contador)

            listaFinal.append(["'{}'".format(item[0]) + str1])
            listaChart.append("['{}'".format(item[0]) + strChart + "]")

        retorno = []
        retorno.append(super().toJson([columns, listaFinal]))
        retorno.append('[' + ', '.join(listaChart) + ']')

        return super().toJson(retorno)
Ejemplo n.º 8
0
    def viewChart(self, ANO, MES, UF, MUNICIPIO, PAIS, CONTINENTE, SEXO,
                  TIPO_VISTO, TIPOLOGIA_EXTRATOR, TIPO_MOVIMENTO,
                  ADMITIDOS_DESLIGADOS, table, eixoX, series):
        """ 
        Retorna dados para popular o chart
        Eixo X: ANO por exemplo e várias Series: PAIS, CONTINENTE, SEXO
        """
        table = table.lower()
        where = ''

        if len(ANO) > 0:
            where += ''.join(('| ANO IN(', ', '.join(map(str, ANO)), ')'))

        if len(MES) > 0:
            where += ''.join(
                ('| MES IN(', ', '.join(map(lambda x: "'" + x + "'",
                                            MES)), ')'))

        if len(CONTINENTE) > 0:
            where += ''.join(
                ('| CONTINENTE IN(',
                 ', '.join(map(lambda x: "'" + x + "'", CONTINENTE)), ')'))

        if len(PAIS) > 0:
            where += ''.join(
                ('| PAIS IN(', ', '.join(map(lambda x: "'" + x + "'",
                                             PAIS)), ')'))

        if len(UF) > 0:
            where += ''.join(
                ('| UF IN(', ', '.join(map(lambda x: "'" + x + "'", UF)), ')'))

        if len(MUNICIPIO) > 0:
            where += ''.join(('| MUNICIPIO IN(',
                              ', '.join(map(lambda x: "'" + x + "'",
                                            MUNICIPIO)), ')'))

        if len(SEXO) > 0:
            where += ''.join(
                ('| SEXO IN(', ', '.join(map(lambda x: "'" + x + "'",
                                             SEXO)), ')'))

        if len(where) > 0:
            where = ''.join((' where ', where[2:].replace('|', ' AND')))

        table = table.replace('rb_', 'tb_')

        toProceed = self.__checkFilters(
            series[0],
            table,
            where,
            ANO=ANO,
            MES=MES,
            UF=UF,
            MUNICIPIO=MUNICIPIO,
            CONTINENTE=CONTINENTE,
            PAIS=PAIS,
            SEXO=SEXO,
            TIPO_VISTO=TIPO_VISTO,
            TIPOLOGIA_EXTRATOR=TIPOLOGIA_EXTRATOR,
            TIPO_MOVIMENTO=TIPO_MOVIMENTO,
            ADMITIDOS_DESLIGADOS=ADMITIDOS_DESLIGADOS)

        if toProceed == 0:
            return qex.throw('Numero de filtros não permitidos')
            #return '[]'

        selectX = []
        selectSerie = []

        sql = ''.join(('SELECT DISTINCT({}) as {}, '.format(eixoX,
                                                            eixoX)[0:-2],
                       ' FROM {}'.format(table), where))

        select1 = ctx.engine.execute(sql).fetchall()

        [(selectX.append(list(row))) for row in select1]

        #

        sql = ''.join(
            ('SELECT DISTINCT({}) as {}, '.format(series[0], series[0])[0:-2],
             ' FROM {}'.format(table), where))

        select2 = ctx.engine.execute(sql).fetchall()

        [(selectSerie.append(list(row))) for row in select2]

        listaFinal = []

        str1 = "['" + eixoX + "'"

        for row in selectSerie:
            str1 += ", '" + row[0] + "'"

        str1 += "]"

        listaFinal.append(str1)

        for item in selectX:
            str1 = ''

            for item1 in selectSerie:
                where1 = where

                where1 = ' WHERE ' if len(where) == 0 else where + ' AND '

                sql = ''.join(
                    ('SELECT COUNT(*) as {} FROM {}'.format(series[0],
                                                            table), where1,
                     "{} = '{}' AND {} = '{}'".format(eixoX, item[0],
                                                      series[0], item1[0])))

                contador = ctx.engine.execute(sql).scalar()

                str1 += ', ' + str(contador)

            listaFinal.append("['{}'".format(item[0]) + str1 + "]")

        return '[' + ', '.join(listaFinal) + ']'