Browse Source

Move acompanhamento de matéria para a app de matéria.

Descarta o model na app sessão em favor do já existente na app matéria.
pull/222/head
Edward Ribeiro 10 years ago
parent
commit
43bcff82b3
  1. 32
      materia/forms.py
  2. 28
      materia/migrations/0016_auto_20160223_0813.py
  3. 4
      materia/models.py
  4. 11
      materia/urls.py
  5. 61
      materia/views.py
  6. 6
      parlamentares/views.py
  7. 27
      sessao/forms.py
  8. 21
      sessao/migrations/0014_auto_20160223_0813.py
  9. 8
      sessao/models.py
  10. 18
      sessao/urls.py
  11. 58
      sessao/views.py
  12. 0
      templates/materia/acompanhamento_materia.html
  13. 2
      templates/sessao/pauta/expediente.html
  14. 2
      templates/sessao/pauta/ordem.html

32
materia/forms.py

@ -11,10 +11,11 @@ from norma.models import LegislacaoCitada, TipoNormaJuridica
from parlamentares.models import Parlamentar, Partido from parlamentares.models import Parlamentar, Partido
from sapl.layout import form_actions from sapl.layout import form_actions
from .models import (Anexada, Autor, DespachoInicial, DocumentoAcessorio, from .models import (AcompanhamentoMateria, Anexada, Autor, DespachoInicial,
MateriaLegislativa, Numeracao, Origem, Proposicao, DocumentoAcessorio, MateriaLegislativa, Numeracao, Origem,
Relatoria, StatusTramitacao, TipoAutor, TipoDocumento, Proposicao, Relatoria, StatusTramitacao, TipoAutor,
TipoMateriaLegislativa, Tramitacao, UnidadeTramitacao) TipoDocumento, TipoMateriaLegislativa, Tramitacao,
UnidadeTramitacao)
def get_range_anos(): def get_range_anos():
@ -109,6 +110,29 @@ class ProposicaoForm(ModelForm):
*args, **kwargs) *args, **kwargs)
class AcompanhamentoMateriaForm(ModelForm):
class Meta:
model = AcompanhamentoMateria
fields = ['email']
def __init__(self, *args, **kwargs):
row1 = sapl.layout.to_row([('email', 10)])
row1.append(
Column(form_actions(save_label='Cadastrar'), css_class='col-md-2')
)
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Acompanhamento de Matéria por e-mail', row1
)
)
super(AcompanhamentoMateriaForm, self).__init__(*args, **kwargs)
class DocumentoAcessorioForm(ModelForm): class DocumentoAcessorioForm(ModelForm):
tipo = forms.ModelChoiceField( tipo = forms.ModelChoiceField(

28
materia/migrations/0016_auto_20160223_0813.py

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import datetime
from django.utils.timezone import utc
class Migration(migrations.Migration):
dependencies = [
('materia', '0015_auto_20160216_1015'),
]
operations = [
migrations.AddField(
model_name='acompanhamentomateria',
name='data_cadastro',
field=models.DateField(auto_now_add=True, default=datetime.datetime(2016, 2, 23, 11, 13, 25, 362112, tzinfo=utc)),
preserve_default=False,
),
migrations.AddField(
model_name='acompanhamentomateria',
name='usuario',
field=models.CharField(max_length=50, default=''),
preserve_default=False,
),
]

4
materia/models.py

@ -132,10 +132,12 @@ class MateriaLegislativa(models.Model):
'tipo': self.tipo, 'numero': self.numero, 'ano': self.ano} 'tipo': self.tipo, 'numero': self.numero, 'ano': self.ano}
class AcompanhamentoMateria(models.Model): # AcompMateria class AcompanhamentoMateria(models.Model):
usuario = models.CharField(max_length=50)
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa)
email = models.CharField( email = models.CharField(
max_length=100, verbose_name=_('Endereço de E-mail')) max_length=100, verbose_name=_('Endereço de E-mail'))
data_cadastro = models.DateField(auto_now_add=True)
hash = models.CharField(max_length=8) hash = models.CharField(max_length=8)
class Meta: class Meta:

11
materia/urls.py

@ -1,9 +1,10 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from materia.views import (AutoriaEditView, AutoriaView, from materia.views import (AcompanhamentoMateriaView, AutoriaEditView,
DespachoInicialEditView, DespachoInicialView, AutoriaView, DespachoInicialEditView,
DocumentoAcessorioEditView, DocumentoAcessorioView, DespachoInicialView, DocumentoAcessorioEditView,
FormularioCadastroView, FormularioSimplificadoView, DocumentoAcessorioView, FormularioCadastroView,
FormularioSimplificadoView,
LegislacaoCitadaEditView, LegislacaoCitadaView, LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView, MateriaAnexadaEditView, MateriaAnexadaView,
MateriaLegislativaPesquisaView, MateriaTaView, MateriaLegislativaPesquisaView, MateriaTaView,
@ -96,4 +97,6 @@ urlpatterns = [
MateriaLegislativaPesquisaView.as_view(), name='pesquisar_materia'), MateriaLegislativaPesquisaView.as_view(), name='pesquisar_materia'),
url(r'^materia/pesquisar-materia-list$', url(r'^materia/pesquisar-materia-list$',
PesquisaMateriaListView.as_view(), name='pesquisar_materia_list'), PesquisaMateriaListView.as_view(), name='pesquisar_materia_list'),
url(r'^materia/(?P<pk>\d+)/acompanhar-materia/$',
AcompanhamentoMateriaView.as_view(), name='acompanhar_materia'),
] ]

61
materia/views.py

@ -17,17 +17,17 @@ from compilacao.views import IntegracaoTaView
from crud import build_crud, make_pagination from crud import build_crud, make_pagination
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
from parlamentares.models import Partido from parlamentares.models import Partido
from sessao.models import AcompanharMateria
from .forms import (AutoriaForm, DespachoInicialForm, DocumentoAcessorioForm, from .forms import (AcompanhamentoMateriaForm, AutoriaForm,
DespachoInicialForm, DocumentoAcessorioForm,
FormularioCadastroForm, FormularioSimplificadoForm, FormularioCadastroForm, FormularioSimplificadoForm,
LegislacaoCitadaForm, MateriaAnexadaForm, LegislacaoCitadaForm, MateriaAnexadaForm,
MateriaLegislativaPesquisaForm, NumeracaoForm, MateriaLegislativaPesquisaForm, NumeracaoForm,
ProposicaoForm, RelatoriaForm, TramitacaoForm) ProposicaoForm, RelatoriaForm, TramitacaoForm)
from .models import (Anexada, Autor, Autoria, DespachoInicial, from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
DocumentoAcessorio, MateriaLegislativa, Numeracao, Orgao, DespachoInicial, DocumentoAcessorio, MateriaLegislativa,
Origem, Proposicao, RegimeTramitacao, Relatoria, Numeracao, Orgao, Origem, Proposicao, RegimeTramitacao,
StatusTramitacao, TipoAutor, TipoDocumento, Relatoria, StatusTramitacao, TipoAutor, TipoDocumento,
TipoFimRelatoria, TipoMateriaLegislativa, TipoProposicao, TipoFimRelatoria, TipoMateriaLegislativa, TipoProposicao,
Tramitacao, UnidadeTramitacao) Tramitacao, UnidadeTramitacao)
@ -1007,9 +1007,9 @@ class TramitacaoView(FormMixin, GenericView):
corpo_email = ('A tramitação da matéria %s foi alterada.' % materia corpo_email = ('A tramitação da matéria %s foi alterada.' % materia
) )
destinatarios = AcompanharMateria.objects.values_list( destinatarios = AcompanhamentoMateria.objects.values_list(
'email', flat=True).filter( 'email', flat=True).filter(
materia_cadastrada=materia) materia=materia)
send_mail('Mudança de Tramitação', send_mail('Mudança de Tramitação',
corpo_email, corpo_email,
'sapl-test@interlegis.leg.br', 'sapl-test@interlegis.leg.br',
@ -1489,3 +1489,48 @@ class MateriaTaView(IntegracaoTaView):
class ProposicaoTaView(IntegracaoTaView): class ProposicaoTaView(IntegracaoTaView):
model = Proposicao model = Proposicao
model_type_foreignkey = TipoProposicao model_type_foreignkey = TipoProposicao
class AcompanhamentoMateriaView(FormMixin,
materia_legislativa_crud.CrudDetailView):
template_name = "materia/acompanhamento_materia.html"
def get(self, request, *args, **kwargs):
pk = self.kwargs['pk']
materia = MateriaLegislativa.objects.get(id=pk)
return self.render_to_response(
{'form': AcompanhamentoMateriaForm(),
'materia': materia})
def post(self, request, *args, **kwargs):
form = AcompanhamentoMateriaForm(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:
AcompanhamentoMateria.objects.get(
email=email,
materia=materia)
except ObjectDoesNotExist:
acompanhar = form.save(commit=False)
acompanhar.materia = 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')

6
parlamentares/views.py

@ -1,15 +1,15 @@
import os import os
from io import BytesIO
from re import sub from re import sub
from django.contrib import messages from django.contrib import messages
from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.forms.fields import ImageField
from django.utils.html import strip_tags from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin from django.views.generic.edit import FormMixin
from vanilla import GenericView from vanilla import GenericView
from django.forms.fields import ImageField
from io import BytesIO
from django.core.exceptions import ValidationError
from crud import build_crud from crud import build_crud

27
sessao/forms.py

@ -1,12 +1,12 @@
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import Column, Fieldset, Layout from crispy_forms.layout import Fieldset, Layout
from django import forms from django import forms
from django.forms import ModelForm from django.forms import ModelForm
import sapl import sapl
from sapl.layout import form_actions from sapl.layout import form_actions
from .models import AcompanharMateria, SessaoPlenaria from .models import SessaoPlenaria
class PresencaForm(forms.Form): class PresencaForm(forms.Form):
@ -66,29 +66,6 @@ class VotacaoEditForm(forms.Form):
pass pass
class AcompanharMateriaForm(ModelForm):
class Meta:
model = AcompanharMateria
fields = ['email']
def __init__(self, *args, **kwargs):
row1 = sapl.layout.to_row([('email', 10)])
row1.append(
Column(form_actions(save_label='Cadastrar'), css_class='col-md-2')
)
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Acompanhamento de Matéria por e-mail', row1
)
)
super(AcompanharMateriaForm, self).__init__(*args, **kwargs)
class SessaoForm(ModelForm): class SessaoForm(ModelForm):
hora_inicio = forms.CharField(label='Horário Inicio', hora_inicio = forms.CharField(label='Horário Inicio',

21
sessao/migrations/0014_auto_20160223_0813.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('sessao', '0013_auto_20160216_1015'),
]
operations = [
migrations.RemoveField(
model_name='acompanharmateria',
name='materia_cadastrada',
),
migrations.DeleteModel(
name='AcompanharMateria',
),
]

8
sessao/models.py

@ -280,11 +280,3 @@ class SessaoPlenariaPresenca(models.Model):
verbose_name = _('Presença em Sessão Plenária') verbose_name = _('Presença em Sessão Plenária')
verbose_name_plural = _('Presenças em Sessões Plenárias') verbose_name_plural = _('Presenças em Sessões Plenárias')
ordering = ['parlamentar__nome_parlamentar'] 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)

18
sessao/urls.py

@ -1,14 +1,14 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from sapl import settings from sapl import settings
from sessao.views import (AcompanharMateriaView, EditExpedienteOrdemDiaView, from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
EditMateriaOrdemDiaView, ExpedienteOrdemDiaView, ExpedienteOrdemDiaView, ExpedienteView,
ExpedienteView, ExplicacaoDelete, ExplicacaoEdit, ExplicacaoDelete, ExplicacaoEdit, ExplicacaoView,
ExplicacaoView, ListExpedienteOrdemDiaView, ListExpedienteOrdemDiaView, ListMateriaOrdemDiaView,
ListMateriaOrdemDiaView, MateriaOrdemDiaView, MateriaOrdemDiaView, MesaView,
MesaView, OradorExpedienteDelete, OradorExpedienteDelete, OradorExpedienteEdit,
OradorExpedienteEdit, OradorExpedienteView, OradorExpedienteView, PainelView,
PainelView, PautaExpedienteDetail, PautaOrdemDetail, PautaExpedienteDetail, PautaOrdemDetail,
PautaSessaoDetailView, PautaSessaoListView, PautaSessaoDetailView, PautaSessaoListView,
PresencaOrdemDiaView, PresencaView, ResumoView, PresencaOrdemDiaView, PresencaView, ResumoView,
SessaoCadastroView, SessaoListView, SessaoCadastroView, SessaoListView,
@ -95,8 +95,6 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
PautaExpedienteDetail.as_view(), name='pauta_expediente_detail'), PautaExpedienteDetail.as_view(), name='pauta_expediente_detail'),
url(r'^pauta-sessao/(?P<pk>\d+)/ordem/$', url(r'^pauta-sessao/(?P<pk>\d+)/ordem/$',
PautaOrdemDetail.as_view(), name='pauta_ordem_detail'), 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 sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace

58
sessao/views.py

@ -17,13 +17,13 @@ from norma.models import NormaJuridica
from parlamentares.models import Parlamentar from parlamentares.models import Parlamentar
from sessao.serializers import SessaoPlenariaSerializer from sessao.serializers import SessaoPlenariaSerializer
from .forms import (AcompanharMateriaForm, ExpedienteForm, ListMateriaForm, from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm,
MateriaOrdemDiaForm, MesaForm, OradorDeleteForm, MesaForm, OradorDeleteForm, OradorForm, PresencaForm,
OradorForm, PresencaForm, SessaoForm, VotacaoEditForm, SessaoForm, VotacaoEditForm, VotacaoForm,
VotacaoForm, VotacaoNominalForm) VotacaoNominalForm)
from .models import (AcompanharMateria, CargoMesa, ExpedienteMateria, from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
ExpedienteSessao, IntegranteMesa, MateriaLegislativa, IntegranteMesa, MateriaLegislativa, Orador,
Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, OradorExpediente, OrdemDia, PresencaOrdemDia,
RegistroVotacao, SessaoPlenaria, SessaoPlenariaPresenca, RegistroVotacao, SessaoPlenaria, SessaoPlenariaPresenca,
TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria, TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria,
VotoParlamentar) VotoParlamentar)
@ -2361,47 +2361,3 @@ class PautaOrdemDetail(sessao_crud.CrudDetailView):
'norma': norma, 'norma': norma,
'doc_ace': doc_ace, 'doc_ace': doc_ace,
'tramitacao': tramitacao}) 'tramitacao': tramitacao})
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')

0
templates/sessao/pauta/acompanhar_materia.html → templates/materia/acompanhamento_materia.html

2
templates/sessao/pauta/expediente.html

@ -39,7 +39,7 @@
</fieldset> </fieldset>
<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> <legend>Tramitação{% if expediente.materia.em_tramitacao %}<a href="{% url 'acompanhar_materia' expediente.materia.id %}"> >>> Acompanhar matéria <<<</a>{% endif %}</legend>
{% for t in tramitacao %} {% for t in tramitacao %}
<b>Data: </b> {{t.data_tramitacao}}<br /> <b>Data: </b> {{t.data_tramitacao}}<br />

2
templates/sessao/pauta/ordem.html

@ -48,7 +48,7 @@
</fieldset> </fieldset>
<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> <legend>Tramitação{% if ordem.materia.em_tramitacao %}<a href="{% url 'acompanhar_materia' ordem.materia.id %}"> >>> Acompanhar matéria <<<</a>{% endif %}</legend>
{% for t in tramitacao %} {% for t in tramitacao %}
<b>Data: </b> {{t.data_tramitacao}}<br /> <b>Data: </b> {{t.data_tramitacao}}<br />

Loading…
Cancel
Save