Repository: interlegis/sapl

Issue:
RESULTADO DOS VOTOS NOMINAIS
É interessante disponibilizar o resultado dos votos nominais para as pessoas que não estão logadas. A fim de acompanhar o voto de cada parlamentar. 


Discussion:

Resolving patch:
diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py
--- a/sapl/sessao/urls.py
+++ b/sapl/sessao/urls.py
@@ -19,7 +19,9 @@
                                VotacaoNominalExpedienteDetailView,
                                VotacaoNominalExpedienteEditView,
                                VotacaoNominalExpedienteView,
-                               VotacaoNominalView, VotacaoView, abrir_votacao,
+                               VotacaoNominalView,
+                               VotacaoNominalTransparenciaDetailView,
+                               VotacaoView, abrir_votacao,
                                atualizar_mesa, insere_parlamentar_composicao,
                                mudar_ordem_materia_sessao, recuperar_materia,
                                recuperar_numero_sessao,
@@ -145,6 +147,9 @@
         VotacaoExpedienteView.as_view(), name='votacaosecretaexp'),
     url(r'^sessao/(?P<pk>\d+)/matexp/votsec/view/(?P<oid>\d+)/(?P<mid>\d+)$',
         VotacaoExpedienteEditView.as_view(), name='votacaosecretaexpedit'),
+    url(r'^sessao/(?P<pk>\d+)/votacao-nominal-transparencia/(?P<oid>\d+)/(?P<mid>\d+)$',
+        VotacaoNominalTransparenciaDetailView.as_view(),
+        name='votacao_nominal_transparencia'),
 
     url(r'^sessao/mudar-ordem-materia-sessao/',
         mudar_ordem_materia_sessao,
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -341,9 +341,17 @@ def get_rows(self, object_list):
                                           resultado_descricao,
                                           resultado_observacao))
                     else:
-                        obj.resultado = ('%s<br/>%s' %
-                                         (resultado_descricao,
-                                          resultado_observacao))
+                        if obj.tipo_votacao == 2:
+                            url = reverse('sapl.sessao:votacao_nominal_transparencia',
+                                          kwargs={
+                                              'pk': obj.sessao_plenaria_id,
+                                              'oid': obj.pk,
+                                              'mid': obj.materia_id}) +\
+                                               '?&materia=expediente'
+                        else:
+                            obj.resultado = ('%s<br/>%s' %
+                                             (resultado_descricao,
+                                              resultado_observacao))
 
             return [self._as_row(obj) for obj in object_list]
 
@@ -388,6 +396,7 @@ def get_rows(self, object_list):
             for obj in object_list:
                 exist_resultado = obj.registrovotacao_set.filter(
                     materia=obj.materia).exists()
+
                 if not exist_resultado:
                     if obj.votacao_aberta:
                         url = ''
@@ -463,11 +472,12 @@ def get_rows(self, object_list):
                     else:
                         if obj.tipo_votacao == 2:
                             url = reverse(
-                                'sapl.sessao:votacaonominalexpdetail',
+                                'sapl.sessao:votacao_nominal_transparencia',
                                 kwargs={
                                     'pk': obj.sessao_plenaria_id,
                                     'oid': obj.pk,
-                                    'mid': obj.materia_id})
+                                    'mid': obj.materia_id}) +\
+                                     '?&materia=expediente'
                             obj.resultado = ('<a href="%s">%s</a><br/>%s' %
                                              (url,
                                               resultado_descricao,
@@ -2050,6 +2060,45 @@ class VotacaoNominalExpedienteEditView(VotacaoNominalEditAbstract):
     ordem = False
 
 
+class VotacaoNominalTransparenciaDetailView(TemplateView):
+    template_name = 'sessao/votacao/nominal_transparencia.html'
+
+    def get_context_data(self, **kwargs):
+        context = super(VotacaoNominalTransparenciaDetailView,
+                        self).get_context_data(**kwargs)
+
+        materia_votacao = self.request.GET.get('materia', None)
+
+        if materia_votacao == 'ordem':
+            votacao = RegistroVotacao.objects.get(ordem=self.kwargs['oid'])
+        if materia_votacao == 'expediente':
+            votacao = RegistroVotacao.objects.get(expediente=self.kwargs['oid'])
+        else:
+            raise Http404()
+
+        context['votacao'] = votacao
+
+        voto_parlamentar = VotoParlamentar.objects.filter(
+            votacao=votacao)
+
+        context['voto_parlamentar'] = voto_parlamentar
+
+        votacao_existente = {'observacao': sub(
+            '&nbsp;', ' ', strip_tags(votacao.observacao)),
+            'resultado': votacao.tipo_resultado_votacao.nome,
+            'tipo_resultado':
+            votacao.tipo_resultado_votacao_id}
+        context.update({'resultado_votacao': votacao_existente,
+                        'tipos': self.get_tipos_votacao()})
+
+        return context
+
+    def get_tipos_votacao(self):
+        for tipo in TipoResultadoVotacao.objects.all():
+            yield tipo
+
+
+
 class VotacaoNominalExpedienteDetailView(DetailView):
     template_name = 'sessao/votacao/nominal_detail.html'
 


Test patch: