Exemple #1
0
def Association(idTabela, filtro, qtd_regras):

    tabela = imp.ObterTabela(idTabela)

    sql = dbTab.GerarSQL(idTabela, 'S')
    if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '':
        if filtro == 'H':
            sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')'
        elif filtro == 'A':
            sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')'

    lista = db.consultarSQL(sql)
    regras = desc.Association(lista, int(qtd_regras))

    dp_regras = json.dumps(regras)

    session = db.getSession()
    tabDesc = session.query(db.TabelaDescricao).filter_by(
        id_tabela=idTabela).filter_by(id_alg=id_alg_rule_association).first()
    if tabDesc == None:
        tabDesc = db.TabelaDescricao(None, idTabela, id_alg_rule_association,
                                     dp_regras, datetime.now())
        session.add(tabDesc)
    else:
        tabDesc.modelo = dp_regras
        tabDesc.dt_processo = datetime.now()

    session.commit()
    session.close()

    return tabDesc
def profAlunos():
    seg.ChecarPerfil(seg.PERFIL_Professor)

    colunaIdAluno = meta.ObterColunaIdAluno()
    nomeColunaClasse, idColunaClasse = meta.ObterColunaClasse(
        colunaIdAluno.id_tabela)

    sql = dbTab.GerarSQL(colunaIdAluno.id_tabela, 'O',
                         [colunaIdAluno.id, idColunaClasse])
    df = dm.db.consultarSQLDataFrame(sql)

    lista = []
    for index, row in df.iterrows():
        login_aluno = row[colunaIdAluno.nome]
        usuario = usu.ObterUsuarioPorLogin(login_aluno)
        lista.append(usuario)

    campos = ({
        'campo': 'login',
        'titulo': 'matricula'
    }, {
        'campo': 'nome',
        'titulo': 'Nome'
    })

    grd = comp.grid('Lista de Alunos', lista, campos)

    return dict(grid=grd)
def ListarCampos(idTabela, edt = True, splColunas = []):
    listaCampos = meta.ListarColunas(idTabela)
    listaExibicao = dbTab.ListarExibicao(idTabela)

    campos = [ ]

    for col in listaCampos:
        if col.desabilitado == True:
            continue

        if len(splColunas) != 0:
            existeColunaFiltro = False
            for idCol in splColunas:
                if int(idCol) == int(col.id):
                    existeColunaFiltro = True

            if existeColunaFiltro == False:
                continue


        if col.chave_estrangeira == False or edt == False:
            c_campo = {'campo': col.nome, 'titulo': col.titulo }
        else:
            c_campo = {'campo': col.nome, 'titulo': '<a href="transformacao_sel?idTabela=' + str(idTabela) + '&idColuna=' + str(col.id) + '">' + col.titulo + '</a>' }

        campos.append(c_campo)

    conta_tb = 0
    for colExib in listaExibicao:

        col = meta.ObterColuna(colExib.id_coluna_fk)
        if col.desabilitado == True:
            continue

        if len(splColunas) != 0:
            existeColunaFiltro = False
            for idCol in splColunas:
                if int(idCol) == int(col.id):
                    existeColunaFiltro = True

            if existeColunaFiltro == False:
                continue

        conta_tb = conta_tb + 1

        if edt == True:
            c_campo = {'campo': col.nome, 'titulo': '<a href="#" style="color: red;">' + col.titulo + '</a>' }
        else:
            c_campo = {'campo': col.nome, 'titulo': col.titulo }


        campos.append(c_campo)

    return campos
Exemple #4
0
def visao_exibir():
    seg.ChecarPerfil(seg.PERFIL_Analista)

    idVisao = request.params.get('id')
    visao = vis.ObterVisao(idVisao)
    objGrf = dbTab.GerarVisao(idVisao)


    return dict(idTabela=visao.id_tabela,
                html=objGrf.grf,
                js=objGrf.js)
Exemple #5
0
def ObterAlunosParaRecomendacoes(id_aluno):
    listaMensanges = []
    nomeAluno = ''
    tx_acerto = 0

    nomeColuna, id_colunaClasse = meta.ObterColunaClasse()

    colunaClasse = meta.ObterColuna(id_colunaClasse)
    tabela = imp.ObterTabela(colunaClasse.id_tabela)

    colunaIdAluno = meta.ObterColunaIdAluno(colunaClasse.id_tabela)

    listaAlunos = []
    listaColunas = []
    listaColunas.append(colunaIdAluno.id)
    listaColunas.append(colunaClasse.id)

    sql = dbTab.GerarSQL(tabela.id, 'O', listaColunas)
    dfAlunos = db.consultarSQLDataFrame(sql)

    session = db.getSession()

    for index, row in dfAlunos.iterrows():
        usuario = session.query(
            db.Usuario).filter_by(login=row[colunaIdAluno.nome]).first()
        usuario.selecionado = False

        if id_aluno == usuario.id:
            nomeAluno = usuario.nome
            usuario.selecionado = True

        listaAlunos.append(usuario)

    session.close()

    algPredicao = ObterTabelaPredicao(tabela.id)
    for alg in algPredicao.Alg:
        if alg.selecionado:
            tx_acerto = alg.tx_acerto

    if id_aluno != 0:
        listaMensanges = ObterRecomendacoesPorAluno(id_aluno)

    return dict(listaAlunos=listaAlunos,
                listaMensanges=listaMensanges,
                id_aluno=id_aluno,
                nomeAluno=nomeAluno,
                tx_acerto=tx_acerto)
def ObterColunaClasse(idTabela):
    session = db.getSession()
    obj = session.query(db.Coluna).filter_by(id_tabela=idTabela).filter_by(classe=True).first()
    session.close()
    if obj != None:
        return obj.nome, obj.id       
    else:
        listaExibicao = dbTab.ListarExibicao(idTabela)

        for colExib in listaExibicao:
            col = meta.ObterColuna(colExib.id_coluna_fk)

            if col.classe:
                return col.nome, col.id

    return '', None
Exemple #7
0
def Cluster(idTabela, filtro, qtd_clusters):

    tabela = imp.ObterTabela(idTabela)

    sql = dbTab.GerarSQL(idTabela, 'S')
    if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '':
        if filtro == 'H':
            sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')'
        elif filtro == 'A':
            sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')'

    lista = db.consultarSQLDataFrame(sql)
    modeloDados, listaCopy = ut.PrepararLista(lista)

    kmeans = desc.Cluster(listaCopy, int(qtd_clusters))
    clusters = kmeans.cluster_centers_
    labels = kmeans.labels_

    display = list()
    for x in range(0, int(qtd_clusters)):
        display.append('Cluster_' + str(x))

    objModelo = {
        'n_clusters': qtd_clusters,
        'modeloDados': modeloDados,
        'clusters': clusters.tolist(),
        'labels': labels.tolist(),
        'display': display
    }

    md_clusters = json.dumps(objModelo)

    session = db.getSession()
    tabDesc = session.query(db.TabelaDescricao).filter_by(
        id_tabela=idTabela).filter_by(id_alg=id_alg_clusters).first()
    if tabDesc == None:
        tabDesc = db.TabelaDescricao(None, idTabela, id_alg_clusters,
                                     md_clusters, datetime.now())
        session.add(tabDesc)
    else:
        tabDesc.modelo = md_clusters
        tabDesc.dt_processo = datetime.now()

    session.commit()
    session.close()

    return None
Exemple #8
0
def CalcularPreditivo(idTabela, id_coluna, tam_tst):
    sql = dbTab.GerarSQL(idTabela, 'S')
    lista = db.consultarSQLDataFrame(sql)

    del lista['rowid']

    colunaClasse = meta.ObterColuna(id_coluna)

    modeloDados, listaCopy = ut.PrepararLista(lista)
    listaModeloPred = None

    jsModeloDados = json.dumps(modeloDados, default=iDefault)

    if colunaClasse.tipo == 'N':
        listaCopy[colunaClasse.nome] = ut.TransformarNumeros(
            lista[colunaClasse.nome].values())
        listaModeloPred = pred.ModeloReg(listaCopy, colunaClasse.nome, tam_tst)
    else:
        listaModeloPred, clfTree = pred.ModeloClf(listaCopy, colunaClasse.nome,
                                                  tam_tst)

    lstPesos = pred.ObterPesos(lista, clfTree, colunaClasse.nome,
                               colunaClasse.val_aluno_risco)
    strPesos = json.dumps(lstPesos)

    maiorTxAcerto = 0
    id_alg_sel = 0
    for modelo in listaModeloPred:
        txAcerto = modelo['TxAcerto']

        if maiorTxAcerto < txAcerto:
            id_alg_sel = modelo['id_alg']
            maiorTxAcerto = txAcerto

    tabPred = db.TabelaPredicao(0, idTabela, jsModeloDados, None, tam_tst,
                                strPesos, id_alg_sel)

    tabPred = SalvarTabelaPredicao(tabPred)
    SalvarTabelaPredicaoAlg(tabPred.id, listaModeloPred, lstPesos)

    #modelo2, listaCopy2 = ut.PrepararListaComModelo(modeloDados, lista)

    ExportarDados(idTabela)

    return listaModeloPred
Exemple #9
0
def viewdashboar():
    seg.ChecarPerfil(seg.PERFIL_Analista)

    id = request.params.get('id')
    painel = pnl.ObterPainel(id)

    if painel.modelo.startswith('http') == False:
        objModelo = json.loads(painel.modelo)
        if len(objModelo) == 0:
            redirect('/dashboard')

        ultObj = objModelo[len(objModelo) - 1]

        html = ''
        js = ''

        ultLinha = int(ultObj['idLinha'])

        for linha in range(1, ultLinha + 1):
            htmlLinha = '<div id="row' + str(linha) + '" class="row">'

            for i in range(0, len(objModelo)):
                corrObjModelo = objModelo[i]

                if corrObjModelo['idLinha'] == linha:
                    id_visao = corrObjModelo['id_visao']

                    objGrf = comp.defGrafico('', '')
                    if id_visao != 0:
                        objGrf = dbTab.GerarVisao(id_visao)

                    htmlCell = '<div class="col-lg-' + corrObjModelo[
                        'opcaoColuna'] + '">' + objGrf.grf + '</div>'
                    htmlLinha = htmlLinha + htmlCell
                    js = js + objGrf.js

            htmlLinha = htmlLinha + '</div><br>'
            html = html + htmlLinha
    else:
        html = '<div id="rptEmbed"></div>'
        js = '<script type="text/javascript">initViz("' + painel.modelo + '", "rptEmbed");</script>'

    return dict(titulo=painel.nome, html=html, js=js)
Exemple #10
0
def Outlier(idTabela, filtro, campoD, campoV):

    tabela = imp.ObterTabela(idTabela)

    sql = dbTab.GerarSQL(idTabela, 'S')
    if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '':
        if filtro == 'H':
            sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')'
        elif filtro == 'A':
            sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')'

    lista = db.consultarSQLDataFrame(sql)

    campoVal = meta.ObterColuna(campoV).nome
    campoDesc = meta.ObterColuna(campoD).nome

    existeOutlier, listaDf = desc.Outliers(lista, campoVal, campoDesc)

    modelo = {
        'campoV': campoVal,
        'campoD': campoDesc,
        'existe': existeOutlier,
        'lista': listaDf
    }

    md_outlier = json.dumps(modelo)

    session = db.getSession()
    tabDesc = session.query(db.TabelaDescricao).filter_by(
        id_tabela=idTabela).filter_by(id_alg=id_alg_outliers).first()
    if tabDesc == None:
        tabDesc = db.TabelaDescricao(None, idTabela, id_alg_outliers,
                                     md_outlier, datetime.now())
        session.add(tabDesc)
    else:
        tabDesc.modelo = md_outlier
        tabDesc.dt_processo = datetime.now()

    session.commit()
    session.close()

    return "OK"
def painel_aluno_vw():
    seg.ChecarPerfil(seg.PERFIL_Estudante)

    id = request.params.get('id')
    painel = pnl.ObterPainel(id)

    # somente dados dos alunos
    if painel.tipo != 'A':
        redirect('/homeEstudante')

    objModelo = json.loads(painel.modelo)
    ultObj = objModelo[len(objModelo) - 1]

    html = ''
    js = ''

    ultLinha = ultObj['idLinha']

    for linha in range(1, ultLinha + 1):
        htmlLinha = '<div id="row' + str(linha) + '" class="row">'

        for i in range(0, len(objModelo)):
            corrObjModelo = objModelo[i]

            if corrObjModelo['idLinha'] == linha:
                id_visao = corrObjModelo['id_visao']

                objGrf = comp.defGrafico('', '')
                if id_visao != 0:
                    objGrf = dbTab.GerarVisao(id_visao)

                htmlCell = '<div class="col-lg-' + corrObjModelo[
                    'opcaoColuna'] + '">' + objGrf.grf + '</div>'
                htmlLinha = htmlLinha + htmlCell
                js = js + objGrf.js

        htmlLinha = htmlLinha + '</div><br>'
        html = html + htmlLinha

    return dict(titulo=painel.nome, html=html, js=js)
Exemple #12
0
def ExportarDados(id_tabela):
    tabela = imp.ObterTabela(id_tabela)
    #-- Rede Gazeta
    #path = "C:/Users/bstoll/source/repos/LA-Intervencao/LA-Intervencao/arquivosUpld"
    #-- pythonanywhere
    path = "/home/bstoll/mysite/arquivosUpld"
    #-- Casa
    #path = "C:/Users/Bruno Stoll/source/repos/LA-Intervencao/LA-Intervencao"

    pathFile = "{path}/{file}".format(path=path, file=tabela.nome + ".csv")

    listaColunas = meta.ListarColunas(id_tabela)
    ar_lst_cols = []
    for col in listaColunas:
        ar_lst_cols.append(col.id)

    sql = dbTab.GerarSQL(id_tabela, 'O', ar_lst_cols)
    df = dbTab.db.consultarSQLDataFrame(sql)
    if os.path.isfile(pathFile):
        os.remove(pathFile)

    df.to_csv(pathFile, index=False)
Exemple #13
0
def GerarDfVisaoPln(id_tabela, colunasDimensoes, colunasMedidas, filtro=''):
    # montar itens da visão
    listaColunas = []
    listaTodasColunas = []
    listaColunasExibGrd = []
    defColunasAgrp = {  }
    campoCateg = None
    filtroClasse = 'O'
    for coluna in colunasDimensoes:
        listaColunas.append(coluna.id)
        nomeCampo = coluna.nome

        if campoCateg == '':
            campoCateg = coluna.nome
        else:
            campoSerie = coluna.nome

        defColunasAgrp[coluna.id] = ''
        listaTodasColunas.append(nomeCampo)
        listaColunasExibGrd.append( {'campo': coluna.nome, 'titulo': coluna.titulo } )

    for coluna in colunasMedidas:
        listaColunas.append(coluna.id)
        nomeCampo = coluna.nome

        if coluna.tipo == 'N':
            defColunasAgrp[coluna.id] = 'Sum'

        listaTodasColunas.append(nomeCampo)
        listaColunasExibGrd.append( {'campo': coluna.nome, 'titulo': coluna.titulo } )

    sql = dbTab.GerarSQL(id_tabela, filtroClasse, listaColunas, True, defColunasAgrp, filtro)
    df = db.consultarSQLDataFrame(sql)
    for col in df.columns:
        if col == 'final_result':
            df[col][df[col] == 'LA :: Prev :: Falha'] = 'Falha'
            df[col][df[col] == 'LA :: Prev :: Sucesso'] = 'Sucesso'

    return df
def explorar_dados():
    seg.ChecarPerfil(seg.PERFIL_Analista)

    idTabela = request.params.get('id')
    idColunas = request.params.get('idColunas')
    tipo = request.params.get('tipo')

    listaTabelas = imp.ListarTabelas()
    listaColunas = []
    grid = ''

    if tipo == None:
        tipo = 'D'

    if idTabela == None:
        idTabela = 0
        idColunas = ''
        tipo = 'D'

    else:
        for col in meta.ListarColunas(idTabela):
            listaColunas.append(col)

        listaExibicao = dbTab.ListarExibicao(idTabela)

        for colExib in listaExibicao:
            col_lookup = meta.ObterColuna(colExib.id_coluna_fk)
            listaColunas.append(col_lookup)

        for col in listaColunas:
            col.selecionado = False

        if idColunas == None or idColunas == '':
            idColunas = ''
        else:
            splColunas = idColunas.split(',')

            for col in listaColunas:
                for idCol in splColunas:
                    if int(idCol) == int(col.id):
                        col.selecionado = True

            if len(splColunas) != 0:
                campos = meta.ListarCampos(idTabela, False, splColunas)
                if tipo == 'D':
                    resultado = dbTab.ListarDados(idTabela, splColunas)
                    grid = comp.grid('Registros', resultado, campos, '')
                elif tipo == 'I':
                    resultado = dbTab.InformDados(idTabela, splColunas)
                    #grid = comp.grid('Registros', resultado, campos, '')

    for tab in listaTabelas:
        tab.selecionado = False
        if int(tab.id) == int(idTabela):
            tab.selecionado = True

    return dict(idTabela=idTabela,
                idColunas=idColunas,
                tipo=tipo,
                listaTabelas=listaTabelas,
                listaColunas=listaColunas,
                grid=grid)
def GerarSQLTop10(idTabela):
    return dbTab.GerarSQL(idTabela) + ' LIMIT 10'
Exemple #16
0
def ObterDadosPrevisao(idTabela):
    sql = dbTab.GerarSQL(idTabela, 'O')
    return db.consultarSQLDataFrame(sql)