def index(): """ View da Tela de Lgin do sistema """ form = LoginForm() if form.validate_on_submit(): # Busca o Usuario pelo Username Informado username = form.username.data.lower() user = User.query.filter_by(userName=username).first() # Verifica se o Usuário Existe e se a Senha está correta if user and user.verifyPassword(form.password.data): # Faz o Login do usuário login_user(user) # Redireciona o Usuario para a tela Principal ou a Tela desejada return redirect( request.args.get('next') or url_for('dashboard.index')) # when login details are incorrect else: warning('Usuário ou senha inválido.') content = {'title': 'Tela de Login', 'form': form} return render_template('login.html', **content)
def verificar_parametros(): # Verifica se os parametros do Magento Existem e caso # negativo o usuario é redirecionado para a tela de # configurações do magento from app.models.config import Config from app.core.utils import warning from app.views.configuracoes.views import index allowed_paths = ['/logout', '/integrador/produtos/imagens/enviar'] is_authenticated = current_user.is_active and current_user.is_authenticated path = request.path if path not in allowed_paths and is_authenticated: parametros = Config.by_id(1) if not parametros or not parametros.baseUrl: warning('A URL base do sistema deve ser configurada.') return make_response(index()) base_url = parametros.baseUrl upload_url = app.config['UPLOADS_DEFAULT_URL'] upload_url = upload_url.rsplit( '/', 1)[0] # retorna somente a url base sem o /uploads if not base_url or upload_url is not base_url: upload_url = f'{base_url}/uploads' app.config['UPLOADS_DEFAULT_URL'] = upload_url
def enviar_imagem(): """ Envia as imagens dos produtos """ template = 'produtos/form-enviar-imagem.html' if current_app.config['UPLOADS_DEFAULT_URL'] is None: warning('A URL Base do Sistema não está configurada. ' + 'Configure-a para que as imagens possam ser salvas.') return redirect(url_for('integrador.produtos_enviar_imagem')) if request.method == 'POST': import os import glob base_path = os.getcwd() + '/uploads/photos/' imagem = request.files['file'] nome = imagem.filename sku = int(nome.split('.')[0]) filepath = base_path + nome if nome == '': return 'Nenhuma Imagem Foi Selecionada', 400 if nome.rfind('.') == -1: return 'O arquivo informado não possui extensão definida', 400 ext = nome.split('.')[1].lower() if not imageSet.extension_allowed(ext): return 'A extensão informada não é válida', 400 if not validar_nome_imagem(nome): return 'O nome da imagem precisa ser um codigo válido', 400 # verifca se ja existe alguma imagem na pasta deste item # pegando o sku do item e iterando na pasta de destino, verificando # se existe alguma imagem e a removendo path = os.path.dirname(filepath) if os.path.exists(path): for im in glob.glob(os.path.join(path, f'{sku}*.*')): os.remove(os.path.join(path, im)) image = imageSet.save(imagem) image = base_path + image genImage(image, image) # busca o cadastro do produto e se existir altera para atualizar imagem produto = MagProduto.by(sku=sku) if produto: produto.atualiza_imagem = True produto.possui_imagem = True produto.update() Log.info(f'[ENVIAR IMAGEM] Enviado Imagem do produto {nome}.') result = {'title': 'Produtos', 'subtitle': 'Enviar Imagens'} return render_template(template, **result)
def enviar_novos(): """ Envia os produtos novos para o site """ template = 'produtos/form-enviar-produtos.html' form = EnviarProdutosNovosForm() imagens = read_images().keys() task = current_app.enviar_novos_task clear_task = request.args.get('clear_task', None) if clear_task and clear_task == 'yes': if task and task.state == 'SUCCESS': current_app.enviar_novos_task = task = None return redirect(url_for('produtos.enviar_novos')) produtos = None if not task: produtos = buscar_produtos_novos() if not produtos and not task: warning('Não existem produtos para serem enviados para o site') categorias = buscar_categorias_produtos() if not categorias: warning('Não existem categorias do site cadastradas') if form.validate_on_submit() and produtos and categorias: produtos_task = {} for p in produtos: secao = int(request.form.get(f'secao-{p.idsubproduto}', 0)) grupo = int(request.form.get(f'grupo-{p.idsubproduto}', 0)) subgrupo = int(request.form.get(f'subgrupo-{p.idsubproduto}', 0)) if secao and grupo and subgrupo: categorias = [secao, grupo, subgrupo] produtos_task[p.idsubproduto] = categorias task = enviar_novos_task.apply_async(args=(produtos_task, )) current_app.enviar_novos_task = task success(f'Tarefa iniciada com sucesso') return redirect(url_for('produtos.enviar_novos')) result = { 'title': 'Produtos', 'subtitle': 'Enviar Novos', 'form': form, 'imagens': imagens, 'produtos': produtos, 'categorias': categorias, 'task': task } return render_template(template, **result)
def listar_nao_enviados(): """ Lista os produtos que ainda não foram enviados para o site """ template = 'produtos/lista-produtos-nao-enviados.html' produtos = buscar_produtos_nao_enviados() imagens = read_images().keys() if not produtos: warning('Não existem produtos pendentes de serem enviados') result = { 'title': 'Produtos', 'subtitle': 'Não Enviados', 'produtos': produtos, 'imagens': imagens } return render_template(template, **result)
def verificar_parametros_magento(): # Verifica se os parametros do Magento Existem e caso # negativo o usuario é redirecionado para a tela de # configurações do magento from app.models.config import ConfigMagento from app.core.utils import warning from app.views.configuration.views import magento allowed_paths = [ '/logout', ] params_magento = ConfigMagento.query.filter_by(id=1).first() user_is_logged = current_user.is_authenticated path = request.path if user_is_logged and not params_magento and path not in allowed_paths: warning('Os Parametros do Magento devem ser configurados') return make_response(magento())
def update(id=None): form = UpdateUserForm() user = User.query.filter_by(id=id).first() if user and form.userId.data == 0: form.userId.data = user.id form.userName.data = user.firstName form.userLastName.data = user.lastName form.userEmail.data = user.email form.userGender.data = user.gender if form.validate_on_submit(): user.firstName = form.userName.data user.lastName = form.userLastName.data user.email = form.userEmail.data user.gender = form.userGender.data if form.userImage.data: if current_app.config['UPLOADS_DEFAULT_URL'] is None: warning( 'A URL Base do Sistema não está configurada para salvar a images.' ) return redirect(url_for('account.update', id=id)) image = enviar_imagem(form.userImage.data) if not image.status: error(image.message) return redirect(url_for('account.update', id=id)) user.image = image.url db.session.add(user) db.session.commit() success('Dados alterados com sucesso.') return redirect(url_for('account.index')) content = {'title': 'Minha Conta', 'form': form} return render_template('account/update.html', **content)
def atualiza_imagem(): """ Envia os produtos que estão no site e tiveram as imagens alteradas """ template = 'produtos/form-atualiza-imagens.html' form = EnviarProdutosNovosForm() task = current_app.atualiza_imagem_task clear_task = request.args.get('clear_task', None) if clear_task and clear_task == 'yes': if task and task.state == 'SUCCESS': current_app.atualiza_imagem_task = task = None return redirect(url_for('produtos.atualiza_imagem')) produtos = None if not task: produtos = buscar_imagens_alteradas() if not produtos and not task: warning('Não existem produtos para serem enviados para o site') if form.validate_on_submit() and produtos: task = atualiza_imagem_task.apply_async() current_app.atualiza_imagem_task = task success(f'Tarefa iniciada com sucesso') return redirect(url_for('produtos.atualiza_imagem')) result = { 'title': 'Produtos', 'subtitle': 'Atualizar Imagens', 'form': form, 'produtos': produtos, 'task': task } return render_template(template, **result)