예제 #1
0
def login(flag):
    if session.get('username'):
        return redirect(url_for('index'))

    else:
        form = login_form.LoginForm(username=session.get('username'))
        form2 = login_form.LoginFormForgotPass()
        now = datetime.datetime.now()
        if request.method == 'POST':
            if request.form['action'] == 'Entrar':
                if form.validate_on_submit():
                    db = UsuarioModel()
                    username = request.form['username']
                    password = request.form['password']
                    error = None
                    result = db.find_all_username(username)
                    if result is None:
                        error = 'Credenciais inválidas!'
                        flash(error)

                    elif not check_password_hash(result[2], password):
                        error = 'Credenciais inválidas!'
                        flash(error)

                    if error is None:
                        session.clear()
                        session['user_id'] = result[0]
                        session['group'] = result[9]
                        session['username'] = result[1]
                        session['email'] = result[4]
                        session['nome'] = result[3]
                        session['last_active'] = now
                        return redirect(url_for('index'))

            elif request.form['action'] == 'Resetar':
                if form2.validate_on_submit():
                    email = request.form['email']
                    if email:
                        email = request.form['email']
                        flag = 0
                        flash(
                            'Instruções de reset de senha enviadas para {} com sucesso!'
                            .format(email))
                        return redirect(url_for('login', flag=flag))
                    else:
                        flag = 1
                        return redirect(url_for('login', flag=flag))
                else:
                    email = request.form['email']
                    flash('Email {} inválido!'.format(email))
                    return redirect(url_for('login', flag=flag))

    return render_template('auth/login.html',
                           content_type='application/json',
                           flag=flag,
                           form=form,
                           form2=form2,
                           pagina='')
예제 #2
0
def exclui_usuario(id):
    db = UsuarioModel()
    result = db.get_user(id)
    flag = 1
    if request.method == 'POST':
        if request.form['submit_button'] == 'Excluir usuário':
            if result:
                if db.update_status_user(result[0]):
                    flash('usuário excluído com sucesso!')
                    flag = 0

    return render_template('usuario/excluir_usuario.html', pagina='Excluir Usuário', result=result, flag=flag)
예제 #3
0
def usuarios():
    db = UsuarioModel()
    users = db.get_users()
    search = False
    q = request.args.get('q')
    if q:
        search = True
    page = request.args.get(get_page_parameter(), type=int, default=1)
    pagination = Pagination(page=page, total=len(users), search=search, record_name='users', per_page=1,
                            css_framework='bootstrap4')
    group = session.get('group')
    if group == "Administrador":
        return render_template('usuario/listar_usuarios.html', result=users, group=group, pagina='Listar Usuários',
                               pagination=pagination)
    else:
        user_id = session.get('user_id')
        user = db.get_user(user_id)
        return render_template('usuario/listar_usuarios.html', result=user, group=group, pagina='Listar Usuários',
                               pagination=pagination)
예제 #4
0
def register():
    form = register_form.RegisterForm()
    if form.validate_on_submit():
        db = UsuarioModel()
        username = request.form['username']
        name = request.form['nome']
        password = request.form['password']
        email = request.form['email']
        error = None
        if db.find_username(username) is not None:
            error = 'Username {} já existe. Por favor escolha outro Username!'.format(
                username)
            flash(error)
        if error is None:
            db.insert_user(username, generate_password_hash(password), name,
                           email)
            message = 'Cadastro efetuado com sucesso!'
            flash(message)
            return redirect(url_for('register', form=form))

    return render_template('auth/register.html', form=form, pagina=' Cadastro')
예제 #5
0
def edita_usuario(id):
    db = UsuarioModel()
    result = db.find_one_id(id)
    if session.get('group') == "Usuario":
        form = edit_forms.EditFormUser(
            username=result[0],
            nome=result[1],
            email=result[2],
            password=result[3],
            confirm=result[3],
            group=result[4]
        )
        if form.validate_on_submit():
            username = request.form['username']
            name = request.form['nome']
            email = request.form['email']
            password = request.form['password']
            group = request.form['group']
            if password:
                password = generate_password_hash(password)
                if db.update_user(username, name, email, password, group, id):
                    flash('Alterações salvas com sucesso!')
                else:
                    flash('Erro ao realizar as alterações, contate o administrador do sistema.')

            else:
                if db.update_user_2(username, name, email, group, id):
                    flash('Alterações salvas com sucesso!')

                else:
                    flash('Erro ao realizar as alterações, contate o administrador do sistema.')
    else:
        form = edit_forms.EditFormAdmin(
            username=result[0],
            nome=result[1],
            email=result[2],
            password=result[3],
            confirm=result[3],
            group=result[4]
        )
        if form.validate_on_submit():
            username = request.form['username']
            name = request.form['nome']
            email = request.form['email']
            password = request.form['password']
            group = request.form['group']
            if password:
                password = generate_password_hash(password)
                if db.update_user(username, name, email, password, group, id):
                    flash('Alterações salvas com sucesso!')
                else:
                    flash('Erro ao realizar as alterações, contate o administrador do sistema.')

            else:
                if db.update_user_2(username, name, email, group, id):
                    flash('Alterações salvas com sucesso!')

                else:
                    flash('Erro ao realizar as alterações, contate o administrador do sistema.')

    return render_template('usuario/editar_usuario.html', form=form, pagina='Editar Usuário')
예제 #6
0
def editar_cliente(id):
    db = ClienteModel()
    result_a = db.get_nj_porte_nome(id)
    result = db.find_one_id(id)
    # TODO atualizar no banco
    # TODO arrumar template quando otiver somente 1 cnae, carde esta desalinhado
    cnaes = result[18]
    cnaes = cnaes.replace('"', '')
    cnaes = cnaes.replace("'", "")
    cnaes = cnaes.replace('[', '')
    cnaes = cnaes.replace(']', '')
    cnaes = cnaes.replace(']', '')
    cnaes = cnaes.replace(' ', '')
    cnaes = cnaes.split(',')

    form = client_form.ClientForm(
        nome_responsavel=result_a[2],
        empresa=result[5],
        natureza_juridica=result_a[0],
        porte=result_a[1],
        cep=result[6],
        endereco=result[7],
        numero=result[8],
        complemento=result[9],
        cidade=result[10],
        bairro=result[11],
        estado=result[12],
        capital_social=result[13],
        nire=result[14],
        cnpj=result[15],
        inscricao_estadual=result[16],
        ccm=result[17],
        tributacao=result[19],
        cnaes=cnaes,
        dia_faturamento=result[20],
        folha_pagamento=result[21],
        certificado_digital=result[22],
        impugnacao=result[23],
        observacoes=result[24],
        nome=result[28],
        telefone=result[29],
        email=result[30],
        celular=result[31]
    )
    tamanho = len(cnaes)
    user_id = result[3]
    db = UsuarioModel()
    result = db.get_users()
    form.nome_responsavel.choices = [(row[0], row[2]) for row in result]
    form.nome_responsavel.choices.insert(0, (user_id, result_a[2]))

    db = ClienteModel()
    result = db.get_info_nj()
    form.natureza_juridica.choices = [(row[0], (row[1] + ' - ' + row[2])) for row in result]
    form.natureza_juridica.choices.insert(0, (1, result_a[0]))
    result = db.get_info_porte()
    form.porte.choices = [(row[0], row[1]) for row in result]
    form.porte.choices.insert(0, (1, result_a[1]))

    if request.method == 'POST':
        nome_responsavel = request.form['nome_responsavel']
        empresa = request.form['empresa']
        natureza_juridica = request.form['natureza_juridica']
        porte = request.form['porte']
        cep = request.form['cep']
        endereco = request.form['endereco']
        numero = request.form['numero']
        complemento = request.form['complemento']
        cidade = request.form['cidade']
        bairro = request.form['bairro']
        estado = request.form['estado']
        capital_social = request.form['capital_social']
        nire = request.form['nire']
        cnpj = request.form['cnpj']
        inscricao_estadual = request.form['inscricao_estadual']
        ccm = request.form['ccm']
        tributacao = request.form['tributacao']
        cnae_principal = request.form.getlist('cnae[]')
        dia_faturamento = request.form['dia_faturamento']
        folha_pagamento = request.form['folha_pagamento']
        certificado_digital = request.form['certificado_digital']
        impugnacao = request.form['impugnacao']
        observacoes = request.form['observacoes']
        id_responsavel = nome_responsavel
        nome = request.form['nome']
        email = request.form['email']
        telefone = request.form['telefone']
        celular = request.form['celular']
        validadores = Validadores()
        cnae = validadores.valida_cnae("https://servicodados.ibge.gov.br/api/v2/cnae/subclasses/", cnae_principal)
        if cnae == 1:
            flash('Erro de CNAE Secundário! Entre com um CNAE Secundário válido.')
            return redirect(url_for('editar_cliente', id=id))

        elif cnae == 2:
            flash('Erro de CNAE Primário! Entre com um CNAE Primário válido.')
            return redirect(url_for('editar_cliente', id=id))

        if validadores.validar_cnpj(cnpj):
            if db.update_company(empresa, natureza_juridica, porte, cep, endereco, numero, complemento, cidade, bairro,
                                 estado, capital_social, nire,
                                 cnpj, inscricao_estadual, ccm, tributacao, cnae_principal, cnae_secundaria,
                                 dia_faturamento, folha_pagamento, certificado_digital, impugnacao, observacoes,
                                 id_responsavel, id,
                                 nome, email, telefone, celular):

                flash('Alterações salvas com sucesso!')

            else:
                flash('Erro ao realizar as alterações, contate o administrador do sistema.')
        else:
            flash('Erro de CNPJ! Entre com um CNPJ válido.')

    return render_template('cliente/editar_cliente.html', form=form, cnaes=cnaes, tamanho=tamanho)
예제 #7
0
def cadastrar_cliente():
    user_id = session['user_id']
    user_name = session['nome']
    db = UsuarioModel()
    result = db.get_users()
    form = client_form.ClientForm()
    form.nome_responsavel.choices = [(row[0], row[2]) for row in result]
    form.nome_responsavel.choices.insert(0, (user_id, user_name))
    db = ClienteModel()
    result = db.get_info_nj()
    form.natureza_juridica.choices = [(row[0], (row[1] + ' - ' + row[2])) for row in result]
    result = db.get_info_porte()
    form.porte.choices = [(row[0], row[1]) for row in result]

    if request.method == 'POST':
        nome_responsavel = request.form['nome_responsavel']
        empresa = request.form['empresa']
        natureza_juridica = int(request.form['natureza_juridica'])
        porte = int(request.form['porte'])
        cep = request.form['cep']
        endereco = request.form['endereco']
        numero = request.form['numero']
        complemento = request.form['complemento']
        cidade = request.form['cidade']
        bairro = request.form['bairro']
        estado = request.form['estado']
        nome = request.form['nome']
        telefone = request.form['telefone']
        celular = request.form['celular']
        email = request.form['email']
        capital_social = request.form['capital_social']
        nire = request.form['nire']
        cnpj = request.form['cnpj']
        inscricao_estadual = request.form['inscricao_estadual']
        ccm = request.form['ccm']
        tributacao = request.form['tributacao']
        cnae_principal = request.form.getlist('cnae[]')
        dia_faturamento = request.form['dia_faturamento']
        folha_pagamento = request.form['folha_pagamento']
        certificado_digital = request.form['certificado_digital']
        impugnacao = request.form['impugnacao']
        observacoes = request.form['observacoes']
        id_responsavel = int(nome_responsavel)
        validadores = Validadores()
        cnaes = validadores.valida_cnae("https://servicodados.ibge.gov.br/api/v2/cnae/subclasses/", cnae_principal)
        if cnaes[0] == 0:
            flash('Erro de CNAE! O(s) CNAE(s) precisam ser válidos.')
            return render_template('cliente/cadastrar_cliente.html', form=form)


        # TODO codar validação para CNAES do mesmo nome
        # TODO verificar se a validação do mesmo cnpj esta funcionando corretamente
        if db.search_cnpj(cnpj) == 0:
            if validadores.validar_cnpj(cnpj):
                if db.insert_company(nome_responsavel, natureza_juridica, porte, id_responsavel, empresa, endereco,
                                     bairro,
                                     cep, cidade, numero, complemento, estado,
                                     capital_social, nire, cnpj, inscricao_estadual, ccm, str(cnaes[1]),
                                     tributacao, dia_faturamento, folha_pagamento, certificado_digital, impugnacao,
                                     observacoes, nome, telefone, email, celular):

                    flash('Empresa cadastrada com sucesso!')
                    return redirect(url_for('listar_clientes', form=form))
                else:
                    flash('Houve um erro ao inserir a cliente, contate o administrador do sistema')

            else:
                flash('Erro de CNPJ! Entre com um CNPJ válido.')

        else:
            flash('Empresa não cadastrada, CNPJ já existe no sistema!')

    return render_template('cliente/cadastrar_cliente.html', form=form)