Пример #1
0
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)
Пример #2
0
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
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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())
Пример #7
0
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)
Пример #8
0
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)