示例#1
0
def votar(request):
    """
    Ajax para voto pelo site

    **Context**

    ``result``
        resposta válida (ou não)

    **Template:**

    None

    """
    if request.method == 'POST':
        response_data = {}
        
        tipo_voto = request.POST['voto']
        sugestao = Sugestao.objects.get(id=request.POST['sugestao'])
        usuario = Usuario.objects.get(user=request.user)

        if tipo_voto == 'F':
            if usuario.tipo == 'Moderador':
                sugestao.fechada = True
                sugestao.save()
                response_data['result'] = 'success'
                response_data['message'] = 'Sugestão fechada com sucesso'

        else:
            # Erro - já existe voto nessa sugestão
            try:
                voto = Voto.objects.get(usuario=usuario, sugestao=sugestao)
                response_data['result'] = 'fail'
                response_data['message'] = 'Você já votou para essa sugestão, e é permitido apenas um voto.'

            # Ok - pode votar
            except Voto.DoesNotExist, e:
                response_data['result'] = 'success'
                response_data['message'] = 'Voto feito com sucesso.'
                voto = Voto(usuario=usuario, sugestao=sugestao, tipo=tipo_voto)
                voto.save()

                if sugestao.notificada == False:
                    endossos = Voto.objects.filter(sugestao=sugestao, tipo='E').count()
                    if endossos > 100:
                        responsaveis = []
                        usuarios = Usuario.objects.filter(tipo='Responsavel', instituto=sugestao.instituto)
                        for usuario in usuarios:
                            responsaveis.append(usuario.user.email)
                        responsaveis.append('*****@*****.**')
                        mail_content = "Favor, responder votos em " + sugestao.get_absolute_url()
                        send_mail("Uspgrade - Endossos atingidos", mail_content, '*****@*****.**', responsaveis, fail_silently=False)
                        sugestao.notificada = True
                        sugestao.save()

        return HttpResponse(json.dumps(response_data), content_type="application/json")
示例#2
0
 def test_sistema_envia_email_para_responsavel_quando_sugestao_atinge_x_votos(self):
     """
     
     """
     usuario = Usuario.objects.get(pk=2)
     sugestao = Sugestao.objects.get(pk=1)
     for i in range(100):
         voto = Voto(usuario=usuario, sugestao=sugestao, tipo="E")
         voto.save()
     response = self.client.post("/login", {"username": "******", "password": "******"})
     response = self.client.post("/api/votar", {"voto": "E", "sugestao": "1"})
     sugestao = Sugestao.objects.get(pk=1)
     self.assertEqual(sugestao.notificada, True)