def inativar(): """ Inativa os produtos no site """ template = 'produtos/form-inativar-produtos.html' task = current_app.inativar_task clear_task = request.args.get('clear_task', None) if clear_task and clear_task == 'yes': if task and task.state == 'SUCCESS': current_app.inativar_task = task = None return redirect(url_for('produtos.inativar')) produtos = None if not task: produtos = buscar_produtos_inativos() form = EnviarProdutosNovosForm() if form.validate_on_submit() and produtos: task = inativar_task.apply_async() current_app.inativar_task = task success(f'Tarefa iniciada com sucesso') return redirect(url_for('produtos.inativar')) result = { 'title': 'Produtos', 'subtitle': 'Inativar', 'form': form, 'produtos': produtos, 'task': task } return render_template(template, **result)
def atualiza_estoque(): """ Atualiza o estoque dos produtos no site """ template = 'produtos/form-atualiza-estoque.html' form = EnviarProdutosNovosForm() config = ConfigMagento.by_id(1) task = current_app.atualiza_estoque_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_estoque_task = task = None return redirect(url_for('produtos.atualiza_estoque')) produtos = None if not task: produtos = buscar_estoque_produtos(dthr_sincr=config.dtsincr_estoque) if form.validate_on_submit() and produtos: task = atualiza_estoque_task.apply_async() current_app.atualiza_estoque_task = task success(f'Tarefa iniciada com sucesso') return redirect(url_for('produtos.atualiza_estoque')) result = { 'title': 'Produtos', 'subtitle': 'Atualizar Estoque', 'form': form, 'produtos': produtos, 'task': task } return render_template(template, **result)
def financeiro(): """ View que representa a interface com o usuario para configurar parametros usados no financeiro """ template = 'configuracoes/financeiro/main.html' config = ConfigFinanceiro.by_id(1) form = ConfigFinanceiroForm() # busca as formas de pagamento do Ciss para ser usado # no campo de selecao de formas de pagamento usadas # na cobrança automatica formas_pagamento = buscar_formas_pagamento() nome_format = lambda x: '{} - {}'.format(x.descrrecebimento, x. idrecebimento) formas_pagamento = [(int(f.idrecebimento), nome_format(f)) for f in formas_pagamento] form.formas_pagamento.choices = formas_pagamento # valida o formulario if form.validate_on_submit(): if not config: config = ConfigFinanceiro() config.diascobranca = form.dias_cobranca.data config.emailremetente = form.email_remetente.data # É necessario converter a lista de forma de pagamentos para # string para usar o str.join() lista_fmpagamento = [str(num) for num in form.formas_pagamento.data] config.formaspgcobranca = ','.join(lista_fmpagamento) if form.envia_copia.data: config.emailscc = form.emails_cc.data config.flagteste = form.flag_teste.data else: config.emailscc = None config.update() success('Registro cadastrado com sucesso') return redirect(url_for('configuracoes.financeiro')) if config and not form.submit.data: form.dias_cobranca.data = config.diascobranca form.email_remetente.data = config.emailremetente form.formas_pagamento.data = [ int(num) for num in config.formaspgcobranca.split(',') ] if config.emailscc: form.envia_copia.data = True form.emails_cc.data = config.emailscc form.flag_teste.data = config.flagteste content = { 'title': 'Configurações', 'subtitle': 'Financeiro', 'form': form } return render_template(template, **content)
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 email_cobranca_automatica(): """ Envia o email de cobrança de pendencias dos clientes """ template = 'financeiro/cobranca/email-cobranca/main.html' task = current_app.task clear_task = request.args.get('clear_task', None) if clear_task and clear_task == 'yes': if task and task.state == 'SUCCESS': current_app.task = task = None return redirect(url_for('financeiro.email_cobranca_automatica')) pendencias = None config = ConfigFinanceiro.by_id(1) has_config = True if config else False form = FormBuscarPendencias() if not task and has_config and form.validate_on_submit(): dtinicial = form.dtinicial.data dtfinal = form.dtfinal.data pendencias = validar_pendencias_enviadas(dtinicial, dtfinal) # verifica se o usuario clicou em enviar para iniciar o envio dos emails if form.enviar.data: dtinicial = (dtinicial.day, dtinicial.month, dtinicial.year) dtfinal = (dtfinal.day, dtfinal.month, dtfinal.year) task = email_cobranca_task.apply_async(args=(dtinicial, dtfinal)) current_app.task = task time.sleep(3) success('Tarefa de envio de cobranças iniciado') return redirect(url_for('financeiro.email_cobranca_automatica')) content = { 'title': 'Financeiro', 'subtitle': 'Email de Cobrança Automático', 'has_config': has_config, 'pendencias': pendencias, 'form': form, 'task': task } return render_template(template, **content)
def magento(): config = ConfigMagento.query.filter_by(id=1).first() if not config: config = ConfigMagento() form = ConfigMagentoForm() if config and config.id and not form.config_id.data: form.config_id.data = config.id form.api_url.data = config.api_url form.api_user.data = config.api_user form.api_pass.data = config.api_pass form.magento_version.data = config.magento_version form.categoria_default.data = config.categoria_default form.dtsincr_estoque.data = config.dtsincr_estoque form.dtsincr_preco.data = config.dtsincr_preco form.dtsincr_promocao.data = config.dtsincr_promocao form.dtsincr_inativos.data = config.dtsincr_inativos if form.validate_on_submit(): config.api_url = form.api_url.data config.api_user = form.api_user.data config.api_pass = form.api_pass.data config.magento_version = form.magento_version.data config.categoria_default = form.categoria_default.data api = Api() api.url = form.api_url.data api.user = form.api_user.data api.passwd = form.api_pass.data api.magento_version = form.magento_version.data db.session.add(config) db.session.commit() success('Configurações atualizadas com sucesso.') content = { 'title': 'Configurações do Magento', 'form': form } return render_template('configurations/magento.html', **content)
def atualiza_base(): """ Atualiza a base de dados com produtos ja enviados """ template = 'produtos/form-atualiza-base.html' form = EnviarProdutosNovosForm() if form.validate_on_submit(): produtos = productList() atualizar_base(produtos) success('Base atualizada com sucesso') return redirect(url_for('produtos.atualiza_base')) result = { 'title': 'Atualizar Estoque Produtos', 'form': form, 'produtos': None } return render_template(template, **result)
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)
def index(): template = 'configuracoes/main.html' config = Config.by_id(1) form = ConfigForm() if config and config.baseUrl and not form.baseURL.data: form.configId.data = config.id form.baseURL.data = config.baseUrl if form.validate_on_submit(): import os config.baseUrl = form.baseURL.data uploadURL = os.path.join(form.baseURL.data, 'uploads') current_app.config.update(UPLOADS_DEFAULT_URL=uploadURL) configure_uploads(current_app, (imageSet, )) db.session.add(config) db.session.commit() success('Registro alterado com sucesso.') content = {'title': 'Configurações do Sistema', 'form': form} return render_template(template, **content)
def atualiza_promocoes(): """ Envia os produtos em promoção para o site """ template = 'produtos/form-envia-promocoes.html' config = ConfigMagento.by_id(1) task = current_app.atualiza_promocoes_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_promocoes_task = task = None return redirect(url_for('produtos.atualiza_promocoes')) produtos = None if not task: produtos = buscar_produtos_promocao(dthr_sincr=config.dtsincr_promocao) form = EnviarProdutosNovosForm() if form.validate_on_submit(): task = atualiza_promocoes_task.apply_async() current_app.atualiza_promocoes_task = task success(f'Tarefa iniciada com sucesso') return redirect(url_for('produtos.atualiza_promocoes')) result = { 'title': 'Produtos', 'subtitle': 'Atualizar Promoções', 'produtos': produtos, 'task': task, 'form': form } return render_template(template, **result)