from flask import Flask, render_template, jsonify, request, send_from_directory
from flask_cors import CORS
from routes import routes_blueprint
from functools import wraps
from models import ABC_PLANO, CalendarioProducao, AutomacaoSugestaoPedidos, ObterInfCSW, Vendas
from werkzeug.utils import secure_filename
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import dash_bootstrap_components as dbc
import plotly.express as px
port = int(os.environ.get('PORT', 8000))
app.register_blueprint(routes_blueprint)
def decorated_function(*args, **kwargs):
token = request.headers.get('Authorization')
return f(*args, **kwargs)
return jsonify({'message': 'Acesso negado'}), 401
return decorated_function
UPLOAD_FOLDER = 'imagens'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/pcp/api/upload/', methods=['POST'])
def upload_image(idchamado):
if 'file' not in request.files:
return jsonify({'message': 'chamado sem anexo'}), 200
file = request.files['file']
return jsonify({'message': 'chamado sem anexo'}), 200
allowed_extensions = {'png', 'jpg', 'jpeg', 'gif'}
if not file.filename.rsplit('.', 1)[1].lower() in allowed_extensions:
return jsonify({'message': 'Extensão de arquivo não permitida'}), 400
filename = secure_filename(f'{idchamado}.{file.filename.rsplit(".", 1)[1]}')
upload_directory = os.path.join(app.config['UPLOAD_FOLDER'], idchamado)
os.makedirs(upload_directory, exist_ok=True)
file.save(os.path.join(upload_directory, filename))
return jsonify({'message': 'Arquivo enviado com sucesso'}), 201
@app.route('/pcp/api/get_image/', methods=['GET'])
def get_image(idchamado):
return send_from_directory(f'imagens/{idchamado}', filename)
@app.route('/pcp/api/PesquisaColecoes', methods=['GET'])
itensPag = request.args.get('itensPag',1000)
pagina = request.args.get('pagina',1)
client_ip = request.remote_addr
Endereco_det = ObterInfCSW.GetColecoes(pagina, itensPag, client_ip)
Endereco_det = pd.DataFrame(Endereco_det)
column_names = Endereco_det.columns
for _, row in Endereco_det.iterrows():
end_dict = {column_name: row[column_name] for column_name in column_names}
end_data.append(end_dict)
@app.route('/pcp/api/PesquisaTipoNotas', methods=['GET'])
def get_PesquisaTipoNotass():
itensPag = request.args.get('itensPag',10000)
pagina = request.args.get('pagina',1)
client_ip = request.remote_addr
Endereco_det = ObterInfCSW.GetTipoNotas(pagina, itensPag, client_ip)
Endereco_det = pd.DataFrame(Endereco_det)
column_names = Endereco_det.columns
for _, row in Endereco_det.iterrows():
end_dict = {column_name: row[column_name] for column_name in column_names}
end_data.append(end_dict)
@app.route('/pcp/api/PesquisaLotes', methods=['GET'])
itensPag = request.args.get('itensPag',100)
pagina = request.args.get('pagina',1)
client_ip = request.remote_addr
Endereco_det = ObterInfCSW.GetLotesCadastrados(pagina, itensPag, client_ip)
Endereco_det = pd.DataFrame(Endereco_det)
column_names = Endereco_det.columns
for _, row in Endereco_det.iterrows():
end_dict = {column_name: row[column_name] for column_name in column_names}
end_data.append(end_dict)
@app.route('/pcp/api/Vendas/', methods=['GET'])
def get_VendasPlano(codigoPlano):
plano = Vendas.VendasporSku(codigoPlano)
plano = pd.DataFrame(plano)
column_names = plano.columns
for index, row in plano.iterrows():
for column_name in column_names:
op_dict[column_name] = row[column_name]
@app.route('/pcp/api/AtualizarAutomacao', methods=['GET'])
def get_AtualizarAutomacao():
client_ip = request.remote_addr
usuarios = AutomacaoSugestaoPedidos.AplicandoAtualizacao(client_ip)
column_names = usuarios.columns
for index, row in usuarios.iterrows():
for column_name in column_names:
op_dict[column_name] = row[column_name]
@app.route('/pcp/api/RankingABCVendas', methods=['POST'])
data = request.get_json()
codigoPlano = data.get('plano')
excel = data.get('excel', False)
aprovado = data.get('aprovado', True)
engenharia = data.get('engenharia', '0')
descricao = data.get('descricao', '0')
categoria = data.get('categoria', '0')
MARCA = data.get('MARCA', '0')
pagina = data.get('pagina', 0)
itensPag = data.get('itensPag', 1)
detalhaengenharias = data.get('detalhaengenharias','0')
client_ip = request.remote_addr
data = request.get_json()
codigoPlano = str(codigoPlano)
if detalhaengenharias == '0':
dados, nome = Vendas.VendasporSku(client_ip, codigoPlano, aprovado, excel, pagina, itensPag, engenharia, descricao, categoria, MARCA)
dados = pd.DataFrame(dados)
dados1, nome = Vendas.VendasporSku(client_ip, codigoPlano, aprovado, excel, pagina, itensPag, engenharia, descricao, categoria, MARCA)
dados = Vendas.Detalha_EngenhariaABC(detalhaengenharias, nome)
column_names = dados.columns
for index, row in dados.iterrows():
for column_name in column_names:
end_dict[column_name] = row[column_name]
end_data.append(end_dict)
@app.route('/pcp/api/EditarABCPlano', methods=['POST'])
data = request.get_json()
codigoPlano = data.get('plano')
c1_ = data.get('c1', '0')
c2_ = data.get('c2', '0')
c3_ = data.get('c3', '0')
codigoPlano = str(codigoPlano)
dados = ABC_PLANO.Editar(a_, b_, c_, c1_, c2_, c3_, codigoPlano)
column_names = dados.columns
for index, row in dados.iterrows():
for column_name in column_names:
end_dict[column_name] = row[column_name]
end_data.append(end_dict)
@app.route('/pcp/api/ABCPlano/', methods=['GET'])
usuarios = ABC_PLANO.getABCPlano(Plano)
column_names = usuarios.columns
for index, row in usuarios.iterrows():
for column_name in column_names:
op_dict[column_name] = row[column_name]
@app.route('/pcp/api/PlanoFeriado/', methods=['GET'])
def get_PlanoFeriado(Plano):
usuarios = CalendarioProducao.Get_feriados(Plano)
column_names = usuarios.columns
for index, row in usuarios.iterrows():
for column_name in column_names:
op_dict[column_name] = row[column_name]
@app.route('/CargaSetor')
dash_app = dash.Dash(__name__, server=app, url_base_pathname='/CargaSetor/', external_stylesheets=[dbc.themes.BOOTSTRAP])
dash_app.layout = html.Div([
html.H1("Seleção de Bandeiras com 'Selecionar Tudo'"),
{'label': 'English 🇺🇸', 'value': 'en'},
{'label': 'Français 🇫🇷', 'value': 'fr'},
{'label': 'Español 🇪🇸', 'value': 'es'},
{'label': 'Português 🇧🇷', 'value': 'pt'},
{'label': 'Selecionar Tudo', 'value': 'all'}
html.Div(id='selected-flags')
Output('flag-selection', 'value'),
Input('flag-selection', 'options'),
Input('flag-selection', 'value')
def update_flag_selection(options, values):
selected_flags = [opt['value'] for opt in options if opt['value'] != 'all']
selected_flags.append('all')
Output('selected-flags', 'children'),
Input('flag-selection', 'value')
def display_selected_flags(selected_flags):
return f"Bandas selecionadas: {', '.join(selected_flags)}"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=port)
