def promote(request, slug, codigo): """ Processa um promote Se for informado um código valido, salva o Promote Se este promote for o primeiro do dia (promote valido) é incrementado um aos promotes do estabelecimento. Caso o promote não seja valido, apenas redireciona ao estabelecimento """ estab = get_object_or_404(Estabelecimento, slug=slug) # Apenas se tiver um código valido, salvamos o promote from estabelecimento.utils import get_codigo_validacao, promote_valido from models import Promote if get_codigo_validacao(request, estab) == codigo: # Salvamos o Promote try: ip_adress = request.META['HTTP_X_FORWARDED_FOR'] except: ip_adress = request.META['REMOTE_ADDR'] Promote( estabelecimento=estab, ip=ip_adress ).save() # Validamos o promote. se for valido, incrementamos um ao estabelecimento. if promote_valido(request, estab): estab.promotes = estab.promotes + 1 estab.save() # Redirecionamos return HttpResponseRedirect(estab.get_absolute_url())
def promote(request, estabelecimento): "Retorna URL para prmote do estabelecimento" return reverse('estabelecimento:promote', args=(estabelecimento.slug, get_codigo_validacao(request, estabelecimento)))