Browse Source

Init crud proposicao

pull/440/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
ff490a54cd
  1. 34
      materia/forms.py
  2. 10
      materia/layouts.yaml
  3. 12
      materia/urls.py
  4. 129
      materia/views.py
  5. 2
      templates/base.html
  6. 40
      templates/materia/proposicao/proposicao_list.html
  7. 0
      templates/materia/proposicao_form.html

34
materia/forms.py

@ -56,40 +56,6 @@ class ProposicaoForm(ModelForm):
model = Proposicao
fields = ['tipo', 'data_envio', 'descricao', 'texto_original']
def __init__(self, excluir=False, *args, **kwargs):
more = []
if excluir:
more = [Submit('Excluir', 'Excluir')]
row1 = crispy_layout_mixin.to_row(
[('tipo', 8), ('data_envio', 4)])
row2 = crispy_layout_mixin.to_row(
[('descricao', 12)])
row3 = crispy_layout_mixin.to_row(
[('tipo_materia', 4), ('numero_materia', 4), ('ano_materia', 4)])
row4 = crispy_layout_mixin.to_row(
[('texto_original', 12)])
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(_('Incluir Proposição'),
row1, row2, row3, row4,
HTML("""
<div class="img-responsive" width="225" height="300"
src="{{ MEDIA_URL }}{{ form.texto_original.value }}">
<br /><br />
<input type="submit"
name="remover-texto"
id="remover-texto"
class="btn btn-warning"
value="Remover Texto"/>
<p></p>
""", ),
form_actions(more=more))
)
super(ProposicaoForm, self).__init__(
*args, **kwargs)
class AcompanhamentoMateriaForm(ModelForm):

10
materia/layouts.yaml

@ -89,10 +89,12 @@ TipoProposicao:
Proposicao:
Proposição:
- tipo dat_criacao_FIXME data_recebimento
- descricao_FIXME
- tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME
- nom_arquivo_FIXME modelo_FIXME
- tipo data_envio
- descricao
Materia:
- tipo_materia numero_materia ano_materia
Texto:
- texto_original
StatusTramitacao:
Status Tramitação:

12
materia/urls.py

@ -8,8 +8,7 @@ from materia.views import (AcompanhamentoConfirmarView,
MateriaLegislativaCrud,
MateriaLegislativaPesquisaView, MateriaTaView,
NumeracaoCrud, OrgaoCrud, OrigemCrud,
ProposicaoEditView, ProposicaoListView,
ProposicaoTaView, ProposicaoView,
ProposicaoCrud, ProposicaoTaView,
RegimeTramitacaoCrud, RelatoriaCrud,
StatusTramitacaoCrud, TipoAutorCrud,
TipoDocumentoCrud, TipoFimRelatoriaCrud,
@ -29,7 +28,8 @@ urlpatterns = [
LegislacaoCitadaCrud.get_urls() +
TramitacaoCrud.get_urls() +
RelatoriaCrud.get_urls() +
DocumentoAcessorioCrud.get_urls())),
DocumentoAcessorioCrud.get_urls() +
ProposicaoCrud.get_urls())),
# Integração com Compilação
url(r'^materia/(?P<pk>[0-9]+)/ta$',
@ -55,12 +55,6 @@ urlpatterns = [
url(r'^sistema/materia/status-tramitacao/',
include(StatusTramitacaoCrud.get_urls())),
url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())),
url(r'^materia/proposicao$',
ProposicaoView.as_view(), name='adicionar_proposicao'),
url(r'^materia/proposicao_list$',
ProposicaoListView.as_view(), name='list_proposicao'),
url(r'^materia/proposicao/(?P<pk>[0-9]+)/edit$',
ProposicaoEditView.as_view(), name='editar_proposicao'),
url(r'^materia/pesquisar-materia$',
MateriaLegislativaPesquisaView.as_view(), name='pesquisar_materia'),
url(r'^materia/(?P<pk>\d+)/acompanhar-materia/$',

129
materia/views.py

@ -54,11 +54,22 @@ TipoAutorCrud = Crud.build(TipoAutor, 'tipo_autor')
AutorCrud = Crud.build(Autor, 'autor')
OrgaoCrud = Crud.build(Orgao, 'orgao')
TipoProposicaoCrud = Crud.build(TipoProposicao, 'tipo_proposicao')
ProposicaoCrud = Crud.build(Proposicao, '')
StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao')
UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao')
RelatoriaCrud = MasterDetailCrud.build(Relatoria, 'materia', '')
class ProposicaoCrud(Crud):
model = Proposicao
help_path = ''
class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['data_envio', 'tipo', 'descricao']
class CreateView(crud.base.CrudCreateView):
form_class = ProposicaoForm
class UpdateView(crud.base.CrudUpdateView):
form_class = ProposicaoForm
class RelatoriaCrud(MasterDetailCrud):
@ -624,27 +635,6 @@ def do_envia_email_tramitacao(request, materia):
return None
class ProposicaoListView(ListView):
template_name = "materia/proposicao/proposicao_list.html"
paginate_by = 10
model = Proposicao
def get_queryset(self):
return Proposicao.objects.all().order_by('data_envio',
'tipo',
'descricao')
def get_context_data(self, **kwargs):
context = super(ProposicaoListView, self).get_context_data(**kwargs)
paginator = context['paginator']
page_obj = context['page_obj']
context['page_range'] = make_pagination(
page_obj.number, paginator.num_pages)
return context
class MateriaLegislativaPesquisaView(FilterView):
model = MateriaLegislativa
filterset_class = MateriaLegislativaFilterSet
@ -719,99 +709,6 @@ class MateriaLegislativaPesquisaView(FilterView):
return self.render_to_response(context)
class ProposicaoView(CreateView):
template_name = "materia/proposicao/proposicao.html"
form_class = ProposicaoForm
def get_success_url(self):
return reverse('materia:list_proposicao')
def get(self, request, *args, **kwargs):
return self.render_to_response({'form': self.get_form()})
def post(self, request, *args, **kwargs):
form = self.get_form()
if form.is_valid():
proposicao = form.save(commit=False)
tipo = TipoProposicao.objects.get(id=form.data['tipo'])
if tipo.descricao == 'Parecer':
try:
materia = MateriaLegislativa.objects.get(
tipo_id=int(form.data['tipo_materia']),
ano=int(form.data['ano_materia']),
numero=int(form.data['numero_materia']))
except ObjectDoesNotExist:
msg = _('Matéria adicionada não existe!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response({'form': form})
else:
proposicao.autor = materia.autoria_set.first().autor
proposicao.materia = materia
proposicao.save()
return redirect(self.get_success_url())
else:
return self.render_to_response({'form': form})
class ProposicaoEditView(CreateView):
template_name = "materia/proposicao/proposicao.html"
form_class = ProposicaoForm
def get_success_url(self):
return reverse('materia:list_proposicao')
def get(self, request, *args, **kwargs):
proposicao = Proposicao.objects.get(id=kwargs['pk'])
return self.render_to_response({'form': ProposicaoForm(
excluir=True,
instance=proposicao)})
def post(self, request, *args, **kwargs):
form = self.get_form()
proposicao = Proposicao.objects.get(id=kwargs['pk'])
if form.is_valid():
if 'Excluir' in request.POST:
if proposicao.data_envio:
proposicao.data_envio = None
proposicao.save()
else:
proposicao.delete()
if 'salvar' or "remover-foto" in request.POST:
if 'texto_original' in request.FILES:
# if os.unlink(proposicao.texto_original.path):
# proposicao.texto_original = None
proposicao.texto_original = request.FILES['texto_original']
tipo = TipoProposicao.objects.get(id=form.data['tipo'])
proposicao.tipo = tipo
proposicao.descricao = form.data['descricao']
if tipo.descricao == 'Parecer':
try:
materia = MateriaLegislativa.objects.get(
tipo_id=int(form.data['tipo_materia']),
ano=int(form.data['ano_materia']),
numero=int(form.data['numero_materia']))
except ObjectDoesNotExist:
msg = _('Matéria adicionada não existe!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response({'form': form})
else:
proposicao.autor = materia.autoria_set.first().autor
proposicao.materia = materia
if not proposicao.data_envio:
proposicao.data_envio = datetime.now()
if "remover-texto" in request.POST:
try:
os.unlink(proposicao.texto_original.path)
except OSError:
pass # Should log this error!!!!!
proposicao.texto_original = None
proposicao.save()
return redirect(self.get_success_url())
else:
return self.render_to_response({'form': form})
class MateriaTaView(IntegracaoTaView):
model = MateriaLegislativa
model_type_foreignkey = TipoMateriaLegislativa

2
templates/base.html

@ -67,7 +67,7 @@
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Atividade Legislativa <span class="caret"></span></a>
<ul class="dropdown-menu">
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'materia:list_proposicao' %}">Proposições</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'materia:proposicao_list' %}">Proposições</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'materia:materialegislativa_list' %}">Matérias Legislativas</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'sessao:sessaoplenaria_list' %}">Sessões Plenárias</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'sessao:list_pauta_sessao' %}">Pautas das Sessões</a></li>

40
templates/materia/proposicao/proposicao_list.html

@ -1,40 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %}<!-- Remvoer botões 'Editar' e 'Excluir' -->{% endblock %}
{% block sections_nav %}
{% endblock %}
{% block detail_content %}
<h2><b>Proposições</b></h2>
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'materia:adicionar_proposicao' %}" class="btn btn-default">Nova Proposição</a>
</div>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th>Enviada em</th>
<th>Tipo</th>
<th>Descrição</th>
<th>Incorporada?</th>
</tr>
</thead>
{% for proposicao in page_obj %}
<tr>
{% if proposicao.data_envio %}
<td><a href="{% url 'materia:editar_proposicao' proposicao.id %}"><b>{{ proposicao.data_envio|date:'d/m/Y H:i' }}</b></a></td>
{% else %}
<td><a href="{% url 'materia:editar_proposicao' proposicao.id %}"><b>Em elaboração...</b></a></td>
{% endif %}
<td>{{ proposicao.tipo }}</td>
<td>{{ proposicao.descricao|safe }}</td>
<td>{% if proposicao.materia %} Sim {% else %} Não {% endif %}</td>
</tr>
{% endfor %}
</table>
{% include "paginacao.html" %}
{% endblock %}

0
templates/materia/proposicao/proposicao.html → templates/materia/proposicao_form.html

Loading…
Cancel
Save