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)
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)
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)
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'])
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)
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)
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)
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)
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, '*****@*****.**')
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)