예제 #1
0
파일: views.py 프로젝트: nandel/locais
def cadastrar(request, slug):
    estab = get_object_or_404(Estabelecimento, slug=slug)
    album = AlbumDeFotos(estabelecimento=estab)

    # Pode acessar?
    cliente_pode_editar_or_404(estab, request)

    # Pode add?
    if not estab.plano.n_albuns > estab.albumdefotos_set.count():
        messages.error(request, 'Estabelecimento atingiu o limite de albuns de fotos.')
        return HttpResponseRedirect(reverse('central:estabelecimentos:albuns:home', args=(estab.slug,)))

    # Editando.
    form = AlbumCadastrar(request.POST or None, instance=album)
    if request.method == 'POST':
        if form.is_valid():
            obj = form.save()
            messages.success(request, 'Album %s criado com sucesso.' % (form.cleaned_data['titulo']))
            Log.new('create', request, obj, estab)
            return HttpResponseRedirect(reverse('central:estabelecimentos:albuns:home', args=(estab.slug,)))
        else:
            messages.error(request, 'Erros de preenchimento impediram que o album fosse criado.')

    return render(request, 'central/estabelecimentos/albuns/cadastrar.html', {
        'request' : request,
        'estabelecimento' : estab,
        'form' : form,
        })
예제 #2
0
파일: views.py 프로젝트: nandel/locais
def cadastrar(request):
    if request.method == 'POST':
        novo = Estabelecimento(gerente=Cliente.objects.get(pk=request.user.pk))
        form = EstabEditar(request.POST, instance=novo)
        nova_imagem = Imagem(uploader=Cliente.objects.get(pk=request.user.pk))
        form_imagem = ImagemForm(request.POST, request.FILES, instance=nova_imagem)

        if form.is_valid():
            estab = form.save()

            if form_imagem.is_valid():
                estab.icone = form_imagem.save()
                estab.save()

            messages.success(request, '<h4>Cadastrado com sucesso!</h4> O ' + form.cleaned_data['nome'] + ' foi cadastrado com sucesso.')
            Log.new('create', request, estab, estab)
            return HttpResponseRedirect(reverse('central:estabelecimentos:home', args=()))
        else:
            messages.error(request, '<strong>Erro!</strong> O formulário não foi preenchido corretamente.')
    else:
        form = EstabEditar()
        form_imagem = ImagemForm()

    return render(request, 'central/estabelecimentos/cadastrar.html', {
        'request' : request,
        'form' : form,
        'form_imagem' : form_imagem,
        })
예제 #3
0
파일: views.py 프로젝트: nandel/locais
def informacoes(request, slug, id_album):
    estab = get_object_or_404(Estabelecimento, slug=slug)
    album = get_object_or_404(AlbumDeFotos, pk=id_album)

    # Pode acessar?
    cliente_pode_editar_or_404(estab, request)

    # Editando.
    form = AlbumEditar(request.POST or None, instance=album)
    if request.method == 'POST':
        if form.is_valid():
            obj = form.save()
            messages.success(request, 'Informações do album salvas com sucesso.')
            Log.new('update', request, obj, estab)
            return HttpResponseRedirect(request.path)
        else:
            messages.error(request, 'Erros de preenchimento impediram que as informações fossem salvas.')
            return HttpResponseRedirect(request.path)

    return render(request, 'central/estabelecimentos/albuns/informacoes.html', {
        'request' : request,
        'estabelecimento' : estab,
        'album' : album,
        'form' : form,
        })
예제 #4
0
파일: views.py 프로젝트: nandel/locais
def home(request, slug):
    estab = get_object_or_404(Estabelecimento, slug=slug)

    # Pode acessar?
    cliente_pode_editar_or_404(estab, request)

    # Actions.
    if request.method == 'POST':
        # Apagar
        if request.POST['action'] == 'apagar':
            # FDPs! vao tentar fazer isso.
            try:
                pagina = estab.pagina_set.get(pk=request.POST['pagina_pk'])
                pagina.delete()
                messages.success(request, u'Página %s removida com sucesso.' % (pagina.titulo))
                Log.new('delete', request, pagina, estab)
            except:
                raise Http404

            return HttpResponseRedirect(request.path)

    # Retorna página.
    return render(request, 'central/estabelecimentos/paginas/home.html', {
        'request' : request,
        'estabelecimento' : estab,
        'paginas' : estab.pagina_set.all(),
        'pode_add_pagina' : estab.plano.n_paginas > estab.pagina_set.count(),
        })
예제 #5
0
파일: views.py 프로젝트: nandel/locais
def gerenciar(request, slug, id_album):
    estab = get_object_or_404(Estabelecimento, slug=slug)
    album = get_object_or_404(AlbumDeFotos, pk=id_album)

    # Pode acessar?
    cliente_pode_editar_or_404(estab, request)

    # Adicionando / Editando / Apagando
    pode_add = estab.plano.n_fotos_album > album.foto_set.count()
    if request.method == 'POST':
        # Adicionar
        if request.POST['action'] == 'adicionar':
            nova = Foto(album=album, uploader=Cliente.objects.get(pk=request.user.pk))
            form = FotoUploadForm(request.POST, request.FILES, instance=nova)
            if form.is_valid() and pode_add:
                form.save()
                messages.success(request, 'Foto %s adicionada com sucesso.' % (form.cleaned_data['titulo']))
                Log.new('update', request, album, estab)
                return HttpResponseRedirect(reverse('central:estabelecimentos:albuns:gerenciar', args=(estab.slug, album.pk)))
            else:
                if not pode_add:
                    messages.error(request, 'O album alcançou o limite de fotos permitidas.')
                else:
                    messages.error(request, 'Erros de preenchimento impediram que fosse salva a nova imagem.')

        # Apagando
        elif request.POST['action'] == 'apagar':
            #try:
            album.foto_set.get(pk=request.POST['foto_pk']).delete()
            messages.success(request, 'Foto removida com sucesso.')
            Log.new('update', request, album, estab)
            #except:
            #    raise Http404

            return HttpResponseRedirect(reverse('central:estabelecimentos:albuns:gerenciar', args=(estab.slug, album.pk)))

        # Editando
        elif request.POST['action'] == 'editar':
            try:
                foto = album.foto_set.get(pk=request.POST['foto_pk'])
                foto.titulo = request.POST['titulo']
                foto.legenda = request.POST['legenda']
                foto.save()
                messages.success(request, 'Foto %s atualizada com sucesso.' % (foto.titulo))
                Log.new('update', request, album, estab)
            except:
                raise Http404

            return HttpResponseRedirect(reverse('central:estabelecimentos:albuns:gerenciar', args=(estab.slug, album.pk)))
    else:
        form = FotoUploadForm()

    return render(request, 'central/estabelecimentos/albuns/gerenciar.html', {
        'request' : request,
        'estabelecimento' : estab,
        'album' : album,
        'fotos' : album.foto_set.all(),
        'form' : form,
        'pode_add' : pode_add,
        })
예제 #6
0
파일: views.py 프로젝트: nandel/locais
def editar(request, slug, pagina_pk):
    estab = get_object_or_404(Estabelecimento, slug=slug)
    pagina = get_object_or_404(Pagina, pk=pagina_pk, estabelecimento=estab)

    # Pode acessar?
    cliente_pode_editar_or_404(estab, request)

    # Editando!
    form = PaginaCadastrar(request.POST or None, instance=pagina)
    nova_imagem = Imagem(uploader=Cliente.objects.get(pk=request.user.pk))
    form_imagem = ImagemForm(request.POST or None, request.FILES or None, instance=nova_imagem)
    if request.method == 'POST':
        if form.is_valid():
            pagina = form.save()

            # SE! tiver uma imagem, vamos upar e vincular.
            if form_imagem.is_valid():
                if pagina.imagem:
                    pagina.imagem.delete()
                pagina.imagem = form_imagem.save()
                pagina.save()

            # Vai ter de apagar a imagem atual?
            elif request.POST.get('remover_imagem'):
                pagina.imagem.delete()

            messages.success(request, 'Página atualizada com sucesso..')
            Log.new('update', request, pagina, estab)
            return HttpResponseRedirect(request.path)
        else:
            messages.error(request, 'Erros de preenchimento impediram que a página fosse salva.')

    # Retorna
    return render(request, 'central/estabelecimentos/paginas/informacoes.html', {
        'request' : request,
        'estabelecimento' : estab,
        'pagina' : pagina,
        'form' : form,
        'form_imagem' : form_imagem,
        })
예제 #7
0
파일: views.py 프로젝트: nandel/locais
def editar(request, slug, evento_pk):
    estab = get_object_or_404(Estabelecimento, slug=slug)
    evento = get_object_or_404(Evento, pk=evento_pk, estabelecimento=estab)

    # Pode Acessar?
    cliente_pode_editar_or_404(estab, request)

    # Editando!
    form = EventoForm(request.POST or None, instance=evento)
    novo_folder = Imagem(uploader=Cliente.objects.get(pk=request.user.pk))
    form_imagem = ImagemForm(request.POST or None, request.FILES or None, instance=novo_folder)
    if request.method == 'POST':
        if form.is_valid():
            evento = form.save()

            # SE! tiver uma imagem, vamos upar e vincular.
            if form_imagem.is_valid():
                if evento.folder:
                    evento.folder.delete()
                evento.folder = form_imagem.save()
                evento.save()

            # Vai ter de apagar a imagem atual?
            elif request.POST.get('remover_folder'):
                evento.folder.delete()

            messages.success(request, 'Informações atualizadas com sucesso.')
            Log.new('update', request, evento, estab)
            return HttpResponseRedirect(request.path)
        else:
            messages.error(request, '<strong>Erro!</strong> Preencha corretamente o formulario.')

    return render(request, 'central/estabelecimentos/eventos/informacoes.html', {
        'request' : request,
        'estabelecimento' : estab,
        'evento' : evento,
        'form' : form,
        })
예제 #8
0
파일: views.py 프로젝트: nandel/locais
def cadastrar(request, slug):
    estab = get_object_or_404(Estabelecimento, slug=slug)

    # Pode acessar?
    cliente_pode_editar_or_404(estab, request)

    # Pode Cadastrar?
    if not estab.plano.n_paginas > estab.pagina_set.count():
        messages.error(request, 'Plano não permite addicionar novas páginas.')
        return HttpResponseRedirect(reverse('central:estabelecimentos:paginas:home', args=(estab.slug,)))

    # Cadastrando!
    nova = Pagina(estabelecimento=estab)
    form = PaginaCadastrar(request.POST or None, instance=nova)
    nova_imagem = Imagem(uploader=Cliente.objects.get(pk=request.user.pk))
    form_imagem = ImagemForm(request.POST or None, request.FILES or None, instance=nova_imagem)
    if request.method == 'POST':
        if form.is_valid():
            pagina = form.save()

            # SE! tiver uma imagem, vamos upar e vincular.
            if form_imagem.is_valid():
                pagina.imagem = form_imagem.save()
                pagina.save()

            messages.success(request, 'Página criada com sucesso.')
            Log.new('create', request, pagina, estab)
            return HttpResponseRedirect(reverse('central:estabelecimentos:paginas:home', args=(estab.slug,)))
        else:
            messages.error(request, 'Erros de preenchimento impediram que a página fosse salva.')

    # Retorna
    return render(request, 'central/estabelecimentos/paginas/cadastrar.html', {
        'request' : request,
        'estabelecimento' : estab,
        'form' : form,
        'form_imagem' : form_imagem,
        })
예제 #9
0
파일: views.py 프로젝트: nandel/locais
def apagar(request, slug, id_album):
    estab = get_object_or_404(Estabelecimento, slug=slug)
    album = get_object_or_404(AlbumDeFotos, pk=id_album)

    # Pode acessar?
    cliente_pode_editar_or_404(estab, request)

    # Apagar.
    if request.method == 'POST':
        if request.POST['confirma'] == "1":
            album.delete()
            messages.success(request, 'O album ' + album.titulo + ' foi removido com sucesso.')
            Log.new('delete', request, album, estab)
            return HttpResponseRedirect(reverse('central:estabelecimentos:albuns:home', args=(estab.slug,)))
        else:
            messages.error(request, 'A confirmação para apagar não foi registrada.')


    return render(request, 'central/estabelecimentos/albuns/apagar.html', {
        'request' : request,
        'estabelecimento' : estab,
        'album' : album,
        })
예제 #10
0
파일: views.py 프로젝트: nandel/locais
def apagar(request, slug, evento_pk):
    estab = get_object_or_404(Estabelecimento, slug=slug)
    evento = get_object_or_404(Evento, pk=evento_pk, estabelecimento=estab)

    # Pode Acessar?
    cliente_pode_editar_or_404(estab, request)

    # Apagar.
    if request.method == 'POST':
        if request.POST['confirma'] == "1":
            Log.new('delete', request, evento, estab)
            evento.delete()
            messages.success(request, 'O evento ' + evento.titulo + ' foi removido com sucesso.')
            return HttpResponseRedirect(reverse('central:estabelecimentos:eventos:home', args=(estab.slug,)))
        else:
            messages.error(request, 'A confirmação para apagar não foi registrada.')


    return render(request, 'central/estabelecimentos/eventos/apagar.html', {
        'request' : request,
        'estabelecimento' : estab,
        'evento' : evento,
        })
예제 #11
0
파일: views.py 프로젝트: nandel/locais
def informacoes(request, slug):
    estab = get_object_or_404(Estabelecimento, slug=slug)

    # Pode Editar?
    cliente_pode_editar_or_404(estab, request)

    # Processa a edição.
    form = EstabInformacoes(request.POST or None, instance=estab)
    nova_imagem = Imagem(uploader=Cliente.objects.get(pk=request.user.pk))
    form_imagem = ImagemForm(request.POST or None, request.FILES or None, instance=nova_imagem)
    if request.method == 'POST':
        if form.is_valid():
            estab = form.save()

            # Vai ter de apagar a imagem atual?
            if request.POST.get('remover_icone'):
                estab.icone.delete()

            # SE! tiver uma imagem, vamos upar e vincular E remover a antiga.
            if form_imagem.is_valid():
                if estab.icone:
                    estab.icone.delete()
                estab.icone = form_imagem.save()
                estab.save()

            messages.success(request, 'Informações atualizadas com sucesso.')
            Log.new('update', request, estab, estab)
            return HttpResponseRedirect(request.path)
        else:
            messages.error(request, '<strong>Erro!</strong> Não foi possivel salvar, pois existem erros de preenchimento.')

    return render(request, 'central/estabelecimentos/estabelecimento/informacoes.html', {
        'request' : request,
        'estabelecimento' : estab,
        'form' : form,
        'form_imagem' : form_imagem,
        })
예제 #12
0
파일: views.py 프로젝트: nandel/locais
def pagina_inicial(request, slug):
    estab = get_object_or_404(Estabelecimento, slug=slug)

    # Pode Editar?
    cliente_pode_editar_or_404(estab, request)

    # Processa edição
    form = EstabPagInicial(request.POST or None, instance=estab)
    nova_imagem = Imagem(uploader=Cliente.objects.get(pk=request.user.pk))
    form_imagem = ImagemForm(request.POST or None, request.FILES or None, instance=nova_imagem)
    if request.method == 'POST':
        if form.is_valid():
            estab = form.save()

            # SE! tiver uma imagem, vamos upar e vincular E remover a antiga.
            if form_imagem.is_valid():
                if estab.icone:
                    estab.icone.delete()
                estab.icone = form_imagem.save()
                estab.save()

            # Vai ter de apagar a imagem atual?
            elif request.POST.get('remover_icone'):
                estab.icone.delete()

            messages.success(request, 'Página inicial salva com sucesso.')
            Log.new('update', request, estab, estab)
            return HttpResponseRedirect(request.path)
        else:
            messages.error(request, 'Erros de preenchimento encontrados.')

    return render(request, 'central/estabelecimentos/estabelecimento/pagina-inicial.html', {
        'request' : request,
        'estabelecimento' : estab,
        'form' : form,
        })
예제 #13
0
파일: views.py 프로젝트: nandel/locais
def administradores(request, slug):
    estab = get_object_or_404(Estabelecimento, slug=slug)

    # Pode Editar?
    # Tem de ser o gerente OU superuser
    gerente_or_404(request, estab)

    # Processa ações.
    if request.method == 'POST':
        if request.POST['action'] == 'adicionar' and estab.plano.administradores:
            try:
                cliente = Cliente.objects.get(email=request.POST['email'])
                novo = Administrador(cliente=cliente, estabelecimento=estab)
                novo.save()
                messages.success(request, '%s foi adicionado como administrador do estabelecimento.' % (cliente.nome,))
                Log.new('create', request, novo, estab)
            except:
                messages.error(request, 'Não foi localizado usuário com o email informado')

        elif request.POST['action'] == 'remover':
            try:
                cliente = Cliente.objects.get(pk=request.POST['cliente_pk'])
                adm = Administrador.objects.get(cliente=cliente, estabelecimento=estab)
                Log.new('delete', request, adm, estab)
                adm.delete()
                messages.success(request, 'Administrador removido com sucesso.')
            except:
                messages.error(request, 'Não foi possivel localizar o vinculo.')

        return HttpResponseRedirect(request.path)

    return render(request, 'central/estabelecimentos/estabelecimento/administradores.html', {
        'request' : request,
        'estabelecimento' : estab,
        'pode_add_administrador' : estab.plano.administradores,
        })
예제 #14
0
파일: views.py 프로젝트: nandel/locais
def cadastrar(request, slug):
    estab = get_object_or_404(Estabelecimento, slug=slug)

    # Pode Acessar?
    cliente_pode_editar_or_404(estab, request)

    # Pode Adicionar/Relacionar?
    if not estab.plano.eventos:
        messages.error(request, 'Plano não suporta relacionamento de eventos.')
        return HttpResponseRedirect(reverse('central:estabelecimentos:eventos:home', args=(estab.slug,)))

    # Cadastrando!
    instance = Evento(estabelecimento=estab, status=Status.objects.get(pk=3))
    form = EventoForm(request.POST or None, instance=instance)
    novo_folder = Imagem(uploader=Cliente.objects.get(pk=request.user.pk))
    form_imagem = ImagemForm(request.POST or None, request.FILES or None, instance=novo_folder)
    if request.method == 'POST':
        if form.is_valid():
            evento = form.save()

            # SE! tiver uma imagem, vamos upar e vincular.
            if form_imagem.is_valid():
                evento.folder = form_imagem.save()
                evento.save()

            messages.success(request, 'Evento %s criado com sucesso.' % (form.cleaned_data['titulo']))
            Log.new('create', request, Evento.objects.get(pk=evento.pk), estab)
            return HttpResponseRedirect(reverse('central:estabelecimentos:eventos:home', args=(estab.slug,)))
        else:
            messages.error(request, '<strong>Erro!</strong> Preencha corretamente o formulario.')

    return render(request, 'central/estabelecimentos/eventos/cadastrar.html', {
        'request' : request,
        'estabelecimento' : estab,
        'form' : form,
        })