コード例 #1
0
ファイル: users.py プロジェクト: danresende/biomed-websd
def criar():
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    if verify_dba(current_user):
        return redirect(url_for('despesas.listar'))

    form = UserForm()
    if form.validate_on_submit():
        uid = form.uid.data
        usuario = {
            'nome': form.nome.data,
            'sobrenome': form.sobrenome.data,
            'email': form.email.data,
            'departamento': form.departamento.data,
            'RD': form.representante.data,
            'DBA': form.dba.data,
            'Diretor': form.diretor.data
        }

        try:
            db.child('users').child(uid).update(usuario, current_user.idToken)
            return redirect(url_for('users.listar'))

        except Exception as e:
            mensagem = 'Não foi possível incluir este usuário.'
            print(e)
            flash(mensagem)
            return redirect(url_for('users.criar'))

    return render_template('users/criar.html', form=form)
コード例 #2
0
ファイル: users.py プロジェクト: danresende/biomed-websd
def detalhar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    if verify_dba(current_user):
        return redirect(url_for('despesas.listar'))


    usuario = db.child('users').child(id).get(current_user.idToken)
    usuario = dict(usuario.val())
    usuario['id'] = id

    return render_template('users/detalhar.html', usuario=usuario)
コード例 #3
0
def criar():
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    form = DespesaForm()
    if form.validate_on_submit():
        despesa = {
            'id': datetime.now().strftime('%Y%m%d%H%M%S'),
            'centro_custo': form.centro_custo.data,
            'criado_por': current_user.email,
            'modificado_por': current_user.email,
            'data_criacao': datetime.now().strftime('%d/%m/%Y'),
            'data_pagamento': form.data_pagamento.data.strftime('%d/%m/%Y'),
            'data_ult_alt': datetime.now().strftime('%d/%m/%Y'),
            'departamento': form.departamento.data,
            'descricao': form.descricao.data,
            'empresa': form.empresa.data,
            'fornecedor': form.fornecedor.data,
            'forma_pagamento': form.forma_pagamento.data,
            'previsao': form.previsao.data,
            'observacao': form.observacao.data,
            'tipo_solicitacao': form.tipo_solicitacao.data,
            'valor_total': '{:.2f}'.format(form.valor_total.data),
            'status': '1',
            'tem_arquivo': False
        }

        if form.boleto.data is not None:
            despesa['tem_arquivo'] = True
            boleto = os.path.join('/tmp', secure_filename(form.boleto.data.filename))
            form.boleto.data.save(boleto)

        if despesa['departamento'] == 'diretoria':
            despesa['status'] = '2'

        try:
            if form.boleto.data is not None:
                response = storage.child('boletos/' + despesa['id']).put(boleto, current_user.idToken)
                despesa['download_token'] = response['downloadTokens']
            db.child('despesas').child(despesa['id']).update(despesa, current_user.idToken)
            send_mail(despesa, current_user)
            return redirect(url_for('despesas.listar'))

        except Exception as e:
            mensagem = 'Não foi possível incluir essa despesa.'
            print(e)
            flash(mensagem)
            return redirect(url_for('despesas.criar'))

    return render_template('despesas/criar.html', form=form)
コード例 #4
0
def listar():
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    usuario = db.child('users').child(current_user.localId).get(current_user.idToken)
    usuario = dict(usuario.val())

    data = {}
    try:
        data = db.child('despesas').get(current_user.idToken)
        data = dict(data.val())

    except Exception as e:
        data = {}

    despesas = []
    for k, v in data.items():
        despesa = v
        despesa['id'] = k
        despesa['data_criacao'] = datetime.strptime(despesa['data_criacao'], '%d/%m/%Y')
        despesa['data_pagamento'] = datetime.strptime(despesa['data_pagamento'], '%d/%m/%Y')
        despesa['data_ult_alt'] = datetime.strptime(despesa['data_ult_alt'], '%d/%m/%Y')

        delta = datetime.now() - despesa['data_ult_alt']

        if despesa['status'] >= '4' and delta.days > 120:
            continue

        despesas.append(despesa)

    despesas = sorted(despesas, key=lambda k: k['data_criacao'], reverse=True)

    depto_usuario = current_user.departamento

    if depto_usuario == 'financeiro':
        return render_template('despesas/listar.html', despesas=despesas, is_dba=usuario['DBA'])

    elif current_user.departamento == 'administrativo':
        despesas = [despesa for despesa in despesas
                        if (despesa['departamento'] == depto_usuario
                                or despesa['departamento'] == 'estoque'
                                    or despesa['criado_por'] == current_user.email)]
        return render_template('despesas/listar.html', despesas=despesas, is_dba=usuario['DBA'])

    else:
        despesas = [despesa for despesa in despesas
                        if (despesa['departamento'] == depto_usuario
                                or despesa['criado_por'] == current_user.email)]
        return render_template('despesas/listar.html', despesas=despesas, is_dba=usuario['DBA'])
コード例 #5
0
ファイル: users.py プロジェクト: danresende/biomed-websd
def editar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    if verify_dba(current_user):
        return redirect(url_for('despesas.listar'))


    usuario = db.child('users').child(id).get(current_user.idToken)
    usuario = dict(usuario.val())
    usuario['id'] = id

    form = UserForm()
    if form.validate_on_submit():
        usuario = {
            'nome': form.nome.data,
            'sobrenome': form.sobrenome.data,
            'email': form.email.data,
            'departamento': form.departamento.data,
            'RD': form.representante.data,
            'DBA': form.dba.data,
            'Diretor': form.diretor.data
        }

        print(usuario)
        try:
            db.child('users').child(id).update(usuario, current_user.idToken)

        except Exception as e:
            mensagem = 'Não for possível atualizar os dados deste usuário.'
            print(e)
            flash(mensagem)

        return redirect(url_for('users.detalhar', id=id))

    elif request.method == 'GET':
        form.nome.data = usuario['nome']
        form.sobrenome.data = usuario['sobrenome']
        form.email.data = usuario['email']
        form.departamento.data = usuario['departamento']
        form.representante.data = usuario['RD']
        form.dba.data = usuario['DBA']
        form.diretor.data = usuario['Diretor']

    return render_template('users/editar.html', form=form, usuario=usuario)
コード例 #6
0
ファイル: test_settings.py プロジェクト: R-Ramana/Knewbie
 def test_email_token(self):
     '''Access email reset link'''
     with self.app:
         self.login('*****@*****.**', 'strongtest')
         token = current_user.reset_token()
         rv = self.app.get(url_for('auth.new_email', token=token),
                           follow_redirects=True)
         self.assertEqual(rv.status_code, 200)
         self.assertIn(b'Update Email', rv.data)
コード例 #7
0
ファイル: users.py プロジェクト: danresende/biomed-websd
def listar():
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    if verify_dba(current_user):
        return redirect(url_for('despesas.listar'))

    data = db.child('users').get(current_user.idToken)
    data = dict(data.val())

    usuarios = []
    for k, v in data.items():
        usuario = v
        usuario['id'] = k
        usuarios.append(usuario)

    usuarios = sorted(usuarios, key=lambda k: (k['departamento'], k['nome']))

    return render_template('users/listar.html', usuarios=usuarios)
コード例 #8
0
def detalhar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    usuario = db.child('users').child(current_user.localId).get(current_user.idToken)
    usuario = dict(usuario.val())

    despesa = db.child('despesas').child(id).get(current_user.idToken)
    despesa = dict(despesa.val())
    despesa['id'] = id

    if despesa['status'] <= '3' and despesa['tipo_solicitacao'] != '50':
        if 'previsao' not in despesa.keys():
            teste_politica_pgto(despesa)
        elif despesa['previsao'] == "":
            teste_politica_pgto(despesa)

    if despesa['tem_arquivo']:
        try:
            arquivo_url = storage.child('boletos/' + id).get_url(despesa['download_token'])
        except Exception as e:
            print(e)
    else:
        arquivo_url = '#'

    despesa['forma_pagamento'] = FORMA_PGTO[despesa['forma_pagamento']]
    despesa['tipo_solicitacao'] = TIPO_SOLICITACAO[despesa['tipo_solicitacao']]

    if usuario['RD']:

        if current_user.departamento == despesa['departamento']:
            pode_aprovar = True
        elif current_user.departamento == 'administrativo' and despesa['departamento'] == 'estoque':
            pode_aprovar = True
        else:
            pode_aprovar = False

    else:
        pode_aprovar = False

    return render_template('despesas/detalhar.html', despesa=despesa, usuario=usuario, download=arquivo_url, pode_aprovar=pode_aprovar)
コード例 #9
0
ファイル: test_settings.py プロジェクト: R-Ramana/Knewbie
    def test_post_new_email(self):
        '''Submit new email'''
        with self.app:
            self.login('*****@*****.**', 'strongtest')
            token = current_user.reset_token()
            self.assertEqual(current_user.email, '*****@*****.**')
            rv = self.app.post(url_for('auth.new_email', token=token),
                               data={
                                   'email': '*****@*****.**',
                                   'email2': '*****@*****.**'
                               },
                               follow_redirects=True)
            self.assertEqual(rv.status_code, 200)

            self.assertIn(
                b'Your email has been successfully updated! You can now login with your new email.',
                rv.data)
            self.assertEqual(current_user.email, '*****@*****.**')
コード例 #10
0
def editar(id):
    if current_user.is_active() and current_user.session_over():
        current_user.reset_token()

    despesa = db.child('despesas').child(id).get(current_user.idToken)
    despesa = dict(despesa.val())
    despesa['id'] = id

    if 'previsao' not in despesa.keys():
        despesa['previsao'] = ""

    form = DespesaForm()
    if form.validate_on_submit():
        despesa = {
            'centro_custo': form.centro_custo.data,
            'modificado_por': current_user.email,
            'data_pagamento': form.data_pagamento.data.strftime('%d/%m/%Y'),
            'data_ult_alt': datetime.now().strftime('%d/%m/%Y'),
            'departamento': form.departamento.data,
            'descricao': form.descricao.data,
            'empresa': form.empresa.data,
            'fornecedor': form.fornecedor.data,
            'forma_pagamento': form.forma_pagamento.data,
            'observacao': form.observacao.data,
            'tipo_solicitacao': form.tipo_solicitacao.data,
            'valor_total': '{:.2f}'.format(form.valor_total.data),
            'previsao': form.previsao.data,
            'status': '1'
        }

        if form.boleto.data is not None:
            despesa['tem_arquivo'] = True
            boleto = os.path.join('/tmp', secure_filename(form.boleto.data.filename))
            form.boleto.data.save(boleto)

        try:
            despesa['modificado_por'] = current_user.email
            despesa['data_ult_alt'] = datetime.now().strftime('%d/%m/%Y')
            if form.boleto.data is not None:
                response = storage.child('boletos/' + id).put(boleto, current_user.idToken)
                despesa['download_token'] = response['downloadTokens']
            db.child('despesas').child(id).update(despesa, current_user.idToken)
            send_mail(despesa, current_user)
            return redirect(url_for('despesas.listar'))

        except Exception as e:
            mensagem = 'Não foi possível atualizar essa despesa.'
            print(e)
            flash(mensagem)

        return redirect(url_for('despesas.detalhar', id=id))

    elif request.method == 'GET':
        form.centro_custo.data = despesa['centro_custo']
        form.data_pagamento.data = datetime.strptime(despesa['data_pagamento'], "%d/%m/%Y")
        form.departamento.data = despesa['departamento']
        form.descricao.data = despesa['descricao']
        form.empresa.data = despesa['empresa']
        form.fornecedor.data = despesa['fornecedor']
        form.forma_pagamento.data = despesa['forma_pagamento']
        form.previsao.data = despesa['previsao']
        form.observacao.data = despesa['observacao']
        form.tipo_solicitacao.data = despesa['tipo_solicitacao']
        form.valor_total.data = float(despesa['valor_total'])

    return render_template('despesas/editar.html', form=form, despesa=despesa)