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. 2
      templates/materia/acompanhamento_materia.html
  13. 4
      templates/sessao/pauta/expediente.html
  14. 6
      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 sapl.layout import form_actions
from .models import (Anexada, Autor, DespachoInicial, DocumentoAcessorio,
MateriaLegislativa, Numeracao, Origem, Proposicao,
Relatoria, StatusTramitacao, TipoAutor, TipoDocumento,
TipoMateriaLegislativa, Tramitacao, UnidadeTramitacao)
from .models import (AcompanhamentoMateria, Anexada, Autor, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa, Numeracao, Origem,
Proposicao, Relatoria, StatusTramitacao, TipoAutor,
TipoDocumento, TipoMateriaLegislativa, Tramitacao,
UnidadeTramitacao)
def get_range_anos():
@ -109,6 +110,29 @@ class ProposicaoForm(ModelForm):
*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):
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}
class AcompanhamentoMateria(models.Model): # AcompMateria
class AcompanhamentoMateria(models.Model):
usuario = models.CharField(max_length=50)
materia = models.ForeignKey(MateriaLegislativa)
email = models.CharField(
max_length=100, verbose_name=_('Endereço de E-mail'))
data_cadastro = models.DateField(auto_now_add=True)
hash = models.CharField(max_length=8)
class Meta:

11
materia/urls.py

@ -1,9 +1,10 @@
from django.conf.urls import include, url
from materia.views import (AutoriaEditView, AutoriaView,
DespachoInicialEditView, DespachoInicialView,
DocumentoAcessorioEditView, DocumentoAcessorioView,
FormularioCadastroView, FormularioSimplificadoView,
from materia.views import (AcompanhamentoMateriaView, AutoriaEditView,
AutoriaView, DespachoInicialEditView,
DespachoInicialView, DocumentoAcessorioEditView,
DocumentoAcessorioView, FormularioCadastroView,
FormularioSimplificadoView,
LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView,
MateriaLegislativaPesquisaView, MateriaTaView,
@ -96,4 +97,6 @@ urlpatterns = [
MateriaLegislativaPesquisaView.as_view(), name='pesquisar_materia'),
url(r'^materia/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 norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
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,
LegislacaoCitadaForm, MateriaAnexadaForm,
MateriaLegislativaPesquisaForm, NumeracaoForm,
ProposicaoForm, RelatoriaForm, TramitacaoForm)
from .models import (Anexada, Autor, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa, Numeracao, Orgao,
Origem, Proposicao, RegimeTramitacao, Relatoria,
StatusTramitacao, TipoAutor, TipoDocumento,
from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
DespachoInicial, DocumentoAcessorio, MateriaLegislativa,
Numeracao, Orgao, Origem, Proposicao, RegimeTramitacao,
Relatoria, StatusTramitacao, TipoAutor, TipoDocumento,
TipoFimRelatoria, TipoMateriaLegislativa, TipoProposicao,
Tramitacao, UnidadeTramitacao)
@ -1007,9 +1007,9 @@ class TramitacaoView(FormMixin, GenericView):
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(
materia_cadastrada=materia)
materia=materia)
send_mail('Mudança de Tramitação',
corpo_email,
'sapl-test@interlegis.leg.br',
@ -1489,3 +1489,48 @@ class MateriaTaView(IntegracaoTaView):
class ProposicaoTaView(IntegracaoTaView):
model = Proposicao
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
from io import BytesIO
from re import sub
from django.contrib import messages
from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse
from django.forms.fields import ImageField
from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin
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

27
sessao/forms.py

@ -1,12 +1,12 @@
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.forms import ModelForm
import sapl
from sapl.layout import form_actions
from .models import AcompanharMateria, SessaoPlenaria
from .models import SessaoPlenaria
class PresencaForm(forms.Form):
@ -66,29 +66,6 @@ class VotacaoEditForm(forms.Form):
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):
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_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)

18
sessao/urls.py

@ -1,14 +1,14 @@
from django.conf.urls import include, url
from sapl import settings
from sessao.views import (AcompanharMateriaView, EditExpedienteOrdemDiaView,
EditMateriaOrdemDiaView, ExpedienteOrdemDiaView,
ExpedienteView, ExplicacaoDelete, ExplicacaoEdit,
ExplicacaoView, ListExpedienteOrdemDiaView,
ListMateriaOrdemDiaView, MateriaOrdemDiaView,
MesaView, OradorExpedienteDelete,
OradorExpedienteEdit, OradorExpedienteView,
PainelView, PautaExpedienteDetail, PautaOrdemDetail,
from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
ExpedienteOrdemDiaView, ExpedienteView,
ExplicacaoDelete, ExplicacaoEdit, ExplicacaoView,
ListExpedienteOrdemDiaView, ListMateriaOrdemDiaView,
MateriaOrdemDiaView, MesaView,
OradorExpedienteDelete, OradorExpedienteEdit,
OradorExpedienteView, PainelView,
PautaExpedienteDetail, PautaOrdemDetail,
PautaSessaoDetailView, PautaSessaoListView,
PresencaOrdemDiaView, PresencaView, ResumoView,
SessaoCadastroView, SessaoListView,
@ -95,8 +95,6 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
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

58
sessao/views.py

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

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

@ -19,4 +19,4 @@
{% if error %} <h5 align="center"><font color="#FF0000">{{ error }}</font></h5> {% endif %}
{% crispy form %}
{% endblock %}
{% endblock %}

4
templates/sessao/pauta/expediente.html

@ -39,7 +39,7 @@
</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 %}
<b>Data: </b> {{t.data_tramitacao}}<br />
@ -50,4 +50,4 @@
<br />
{% endfor %}
</fieldset>
{% endblock %}
{% endblock %}

6
templates/sessao/pauta/ordem.html

@ -19,7 +19,7 @@
<fieldset>
<legend>Norma Juridica Vinculada</legend>
<!-- TODO -->
{% for n in norma %}
<b><a href="">{{n}}</a></b>
@ -48,7 +48,7 @@
</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 %}
<b>Data: </b> {{t.data_tramitacao}}<br />
@ -60,4 +60,4 @@
{% endfor %}
</fieldset>
{% endblock %}
{% endblock %}

Loading…
Cancel
Save