Browse Source

Creat view acompnahar materia

pull/153/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
059f2bea7a
  1. 9
      sessao/models.py
  2. 10
      sessao/urls.py
  3. 124
      sessao/views.py
  4. 22
      templates/sessao/pauta/acompanhar_materia.html
  5. 53
      templates/sessao/pauta/expediente.html
  6. 63
      templates/sessao/pauta/ordem.html
  7. 8
      templates/sessao/pauta_sessao_detail.html

9
sessao/models.py

@ -5,6 +5,7 @@ from materia.models import MateriaLegislativa
from parlamentares.models import (CargoMesa, Legislatura, Parlamentar,
SessaoLegislativa)
from sapl.utils import YES_NO_CHOICES, make_choices
from django.contrib.auth.models import User
class TipoSessaoPlenaria(models.Model):
@ -279,3 +280,11 @@ class SessaoPlenariaPresenca(models.Model):
verbose_name = _('Presença em Sessão Plenária')
verbose_name_plural = _('Presenças em Sessões Plenárias')
ordering = ['parlamentar__nome_parlamentar']
class AcompanharMateria(models.Model):
usuario = models.CharField(max_length=50)
email = models.CharField(
max_length=50, verbose_name=_('Endereço de email'))
data_cadastro = models.DateField(auto_now_add=True)
materia_cadastrada = models.ForeignKey(MateriaLegislativa)

10
sessao/urls.py

@ -17,7 +17,9 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
VotacaoNominalExpedienteEditView,
VotacaoNominalExpedienteView, VotacaoNominalView,
VotacaoView, sessao_crud, tipo_expediente_crud,
tipo_resultado_votacao_crud, tipo_sessao_crud)
tipo_resultado_votacao_crud, tipo_sessao_crud,
PautaExpedienteDetail, PautaOrdemDetail,
AcompanharMateriaView)
urlpatterns_sessao = sessao_crud.urlpatterns + [
url(r'^(?P<pk>\d+)/expediente$',
@ -90,6 +92,12 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
url(r'^(?P<pk>\d+)/pauta-sessao-detail$',
PautaSessaoDetailView.as_view(), name='pauta_sessao_detail'),
url(r'^cadastro$', SessaoCadastroView.as_view(), name='sessao_cadastro'),
url(r'^pauta-sessao/(?P<pk>\d+)/expediente/$',
PautaExpedienteDetail.as_view(), name='pauta_expediente_detail'),
url(r'^pauta-sessao/(?P<pk>\d+)/ordem/$',
PautaOrdemDetail.as_view(), name='pauta_ordem_detail'),
url(r'^pauta-sessao/(?P<pk>\d+)/acompanhar-materia/$',
AcompanharMateriaView.as_view(), name='acompanhar_materia'),
]
sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace

124
sessao/views.py

@ -2,7 +2,7 @@ from datetime import datetime
from re import sub
from crispy_forms.helper import FormHelper
from crispy_forms.layout import ButtonHolder, Fieldset, Layout, Submit
from crispy_forms.layout import ButtonHolder, Fieldset, Layout, Submit, Column
from django import forms
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
@ -15,7 +15,9 @@ from django.views.generic.edit import FormMixin
from rest_framework import generics
import sapl
from materia.models import Autoria, TipoMateriaLegislativa
from materia.models import (Autoria, TipoMateriaLegislativa,
DocumentoAcessorio, Tramitacao)
from norma.models import NormaJuridica
from parlamentares.models import Parlamentar
from sapl.crud import build_crud
from sessao.serializers import SessaoPlenariaSerializer
@ -25,7 +27,7 @@ from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
OradorExpediente, OrdemDia, PresencaOrdemDia,
RegistroVotacao, SessaoPlenaria, SessaoPlenariaPresenca,
TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria,
VotoParlamentar)
VotoParlamentar, AcompanharMateria)
tipo_sessao_crud = build_crud(
TipoSessaoPlenaria, 'tipo_sessao_plenaria', [
@ -2275,7 +2277,8 @@ class PautaSessaoDetailView(sessao_crud.CrudDetailView):
autoria = Autoria.objects.filter(materia_id=m.materia_id)
autor = [str(x.autor) for x in autoria]
mat = {'ementa': ementa,
mat = {'id': m.id,
'ementa': ementa,
'titulo': titulo,
'numero': numero,
'resultado': resultado,
@ -2321,7 +2324,8 @@ class PautaSessaoDetailView(sessao_crud.CrudDetailView):
materia_id=o.materia_id)
autor = [str(x.autor) for x in autoria]
mat = {'ementa': ementa,
mat = {'id': o.id,
'ementa': ementa,
'titulo': titulo,
'numero': numero,
'resultado': resultado,
@ -2441,3 +2445,113 @@ class SessaoCadastroView(FormMixin, sessao_crud.CrudDetailView):
class SessaoPlenariaView(generics.ListAPIView):
queryset = SessaoPlenaria.objects.all()
serializer_class = SessaoPlenariaSerializer
class PautaExpedienteDetail(sessao_crud.CrudDetailView):
template_name = "sessao/pauta/expediente.html"
def get(self, request, *args, **kwargs):
pk = self.kwargs['pk']
expediente = ExpedienteMateria.objects.get(id=pk)
doc_ace = DocumentoAcessorio.objects.filter(
materia=expediente.materia)
tramitacao = Tramitacao.objects.filter(
materia=expediente.materia)
return self.render_to_response(
{'expediente': expediente,
'doc_ace': doc_ace,
'tramitacao': tramitacao})
class PautaOrdemDetail(sessao_crud.CrudDetailView):
template_name = "sessao/pauta/ordem.html"
def get(self, request, *args, **kwargs):
pk = self.kwargs['pk']
ordem = OrdemDia.objects.get(id=pk)
norma = NormaJuridica.objects.filter(
materia=ordem.materia)
doc_ace = DocumentoAcessorio.objects.filter(
materia=ordem.materia)
tramitacao = Tramitacao.objects.filter(
materia=ordem.materia)
return self.render_to_response(
{'ordem': ordem,
'norma': norma,
'doc_ace': doc_ace,
'tramitacao': tramitacao})
class AcompanharMateriaForm(ModelForm):
class Meta:
model = AcompanharMateria
fields = ['email']
def __init__(self, *args, **kwargs):
row1 = sapl.layout.to_row([('email', 10)])
row1.append(
Column(
ButtonHolder(
Submit('Submit', 'Cadastrar',
css_class='button primary')
), css_class='columns-large-2'
)
)
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Acompanhamento de Matéria por e-mail', row1
)
)
super(AcompanharMateriaForm, self).__init__(*args, **kwargs)
class AcompanharMateriaView(FormMixin, sessao_crud.CrudDetailView):
template_name = "sessao/pauta/acompanhar_materia.html"
def get(self, request, *args, **kwargs):
pk = self.kwargs['pk']
materia = MateriaLegislativa.objects.get(id=pk)
return self.render_to_response(
{'form': AcompanharMateriaForm(),
'materia': materia})
def post(self, request, *args, **kwargs):
form = AcompanharMateriaForm(request.POST)
pk = self.kwargs['pk']
materia = MateriaLegislativa.objects.get(id=pk)
if form.is_valid():
email = form.cleaned_data['email']
usuario = request.user
try:
AcompanharMateria.objects.get(
email=email,
materia_cadastrada=materia)
except ObjectDoesNotExist:
acompanhar = form.save(commit=False)
acompanhar.materia_cadastrada = materia
acompanhar.usuario = usuario.username
acompanhar.save()
else:
return self.render_to_response(
{'form': form,
'materia': materia,
'error': 'Essa matéria já está sendo acompanhada por este e-mail.'})
return self.form_valid(form)
else:
return self.render_to_response(
{'form': form,
'materia': materia})
def get_success_url(self):
return reverse('sessaoplenaria:list_pauta_sessao')

22
templates/sessao/pauta/acompanhar_materia.html

@ -0,0 +1,22 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
<h1>Acompanhamento de Matéria</h1>
<hr>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li><b>Tipo:</b> {{materia.tipo.sigla}} - {{materia.tipo.descricao}}</li>
<li><b>Número:</b> {{materia.numero}}</li>
<li><b>Ano:</b> {{materia.ano}}</li>
</ul>
<ul class="small-block-grid-1 medium-block-grid-1 large-block-grid-1">
<li><b>Ementa:</b> {{materia.ementa|safe}}</li>
</ul>
{% if error %} <h5 align="center"><font color="#FF0000">{{ error }}</font></h5> {% endif %}
{% crispy form %}
{% endblock %}

53
templates/sessao/pauta/expediente.html

@ -0,0 +1,53 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
<h1>{{expediente.materia}}</h1>
<hr>
<fieldset>
<legend>Identificação Básica</legend>
<b>Tipo:</b> {{expediente.materia.tipo.sigla}} - {{expediente.materia.tipo.descricao}} <br />
<b>Número:</b> {{expediente.materia.numero}} <br />
<b>Data:</b> {{expediente.materia.data_apresentacao}} <br />
<b>Ementa:</b> {{expediente.materia.ementa|safe}} <br />
<b>Indexação:</b> {{expediente.materia.indexacao}} <br />
</fieldset>
<fieldset>
<legend>Outras Informações</legend>
<b>Em Tramitação?</b> {{expediente.materia.em_tramitacao|yesno:"Sim,Não"}} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Matéria Polêmica?</b> {{expediente.materia.polemica|yesno:"Sim,Não"}} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Regime Tramitação:</b> {{expediente.materia.regime_tramitacao}}
</fieldset>
<fieldset>
<legend>Documentos Acessórios</legend>
{% for d in doc_ace %}
<b>Nome:</b> {{d.nome}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Tipo:</b> {{d.tipo}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Data:</b> {{d.data}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Autor:</b> {{d.autor}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br /><br />
{% endfor %}
</fieldset>
<fieldset>
<legend>Tramitação{% if expediente.materia.em_tramitacao %}<a href="{% url 'sessaoplenaria:acompanhar_materia' expediente.materia.id %}"> >>> Acompanhar matéria <<<</a>{% endif %}</legend>
{% for t in tramitacao %}
<b>Data: </b> {{t.data_tramitacao}}<br />
<b>Origem: </b> {{t.unidade_tramitacao_destino}} - <b>Destino: </b> {{t.unidade_tramitacao_local}}<br />
<b>Situação: </b> {{t.status}}<br />
<b>Última Ação: </b> {{t.texto}}<br />
<br />
{% endfor %}
</fieldset>
{% endblock %}

63
templates/sessao/pauta/ordem.html

@ -0,0 +1,63 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
<h1>{{ordem.materia}}</h1>
<hr>
<fieldset>
<legend>Identificação Básica</legend>
<b>Tipo:</b> {{ordem.materia.tipo.sigla}} - {{ordem.materia.tipo.descricao}} <br />
<b>Número:</b> {{ordem.materia.numero}} <br />
<b>Data:</b> {{ordem.materia.data_apresentacao}} <br />
<b>Ementa:</b> {{ordem.materia.ementa|safe}} <br />
<b>Indexação:</b> {{ordem.materia.indexacao}} <br />
</fieldset>
<fieldset>
<legend>Norma Juridica Vinculada</legend>
<!-- TODO -->
{% for n in norma %}
<b><a href="">{{n}}</a></b>
{% endfor %}
</fieldset>
<fieldset>
<legend>Outras Informações</legend>
<b>Em Tramitação?</b> {{ordem.materia.em_tramitacao|yesno:"Sim,Não"}} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Matéria Polêmica?</b> {{ordem.materia.polemica|yesno:"Sim,Não"}} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Regime Tramitação:</b> {{ordem.materia.regime_tramitacao}}
</fieldset>
<fieldset>
<legend>Documentos Acessórios</legend>
{% for d in doc_ace %}
<b>Nome:</b> {{d.nome}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Tipo:</b> {{d.tipo}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Data:</b> {{d.data}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Autor:</b> {{d.autor}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br /><br />
{% endfor %}
</fieldset>
<fieldset>
<legend>Tramitação{% if ordem.materia.em_tramitacao %}<a href="{% url 'sessaoplenaria:acompanhar_materia' ordem.materia.id %}"> >>> Acompanhar matéria <<<</a>{% endif %}</legend>
{% for t in tramitacao %}
<b>Data: </b> {{t.data_tramitacao}}<br />
<b>Origem: </b> {{t.unidade_tramitacao_destino}} - <b>Destino: </b> {{t.unidade_tramitacao_local}}<br />
<b>Situação: </b> {{t.status}}<br />
<b>Última Ação: </b> {{t.texto}}<br />
<br />
{% endfor %}
</fieldset>
{% endblock %}

8
templates/sessao/pauta_sessao_detail.html

@ -37,12 +37,12 @@
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
{% for m in materia_expediente %}
<li>
{{m.numero}} - {{m.titulo}}
{{m.numero}} - <a href="{% url 'sessaoplenaria:pauta_expediente_detail' m.id %}">{{m.titulo}}</a>
<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</li>
<li>{{m.ementa|safe}}</li>
<li>{{m.resultado}}</li>
<li>{{m.situacao}}</li>
{% endfor %}
</ul>
</fieldset>
@ -71,12 +71,12 @@
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
{% for m in materias_ordem %}
<li>
{{m.numero}} - {{m.titulo}}
{{m.numero}} - <a href="{% url 'sessaoplenaria:pauta_ordem_detail' m.id %}">{{m.titulo}}</a>
<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</li>
<li>{{m.ementa|safe}}</li>
<li>{{m.resultado}}</li>
<li>{{m.situacao}}</li>
{% endfor %}
</ul>
</fieldset>

Loading…
Cancel
Save