|
|
@ -15,19 +15,20 @@ from django.views.generic import CreateView, FormView, ListView, TemplateView |
|
|
|
from django_filters.views import FilterView |
|
|
|
|
|
|
|
import crud.base |
|
|
|
import crud.masterdetail |
|
|
|
from base.models import CasaLegislativa |
|
|
|
from comissoes.models import Comissao, Composicao |
|
|
|
from compilacao.views import IntegracaoTaView |
|
|
|
from crud.base import Crud, make_pagination |
|
|
|
from crud.masterdetail import MasterDetailCrud |
|
|
|
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica |
|
|
|
from parlamentares.models import Partido |
|
|
|
from sapl.utils import get_base_url |
|
|
|
|
|
|
|
from .forms import (AcompanhamentoMateriaForm, AutoriaForm, |
|
|
|
from .forms import (AcompanhamentoMateriaForm, AnexadaForm, |
|
|
|
DespachoInicialForm, DocumentoAcessorioForm, |
|
|
|
LegislacaoCitadaForm, MateriaAnexadaForm, |
|
|
|
MateriaLegislativaFilterSet, NumeracaoForm, ProposicaoForm, |
|
|
|
RelatoriaForm, TramitacaoForm, filtra_tramitacao_destino, |
|
|
|
LegislacaoCitadaForm, MateriaLegislativaFilterSet, |
|
|
|
NumeracaoForm, ProposicaoForm, RelatoriaForm, |
|
|
|
TramitacaoForm, filtra_tramitacao_destino, |
|
|
|
filtra_tramitacao_destino_and_status, |
|
|
|
filtra_tramitacao_status) |
|
|
|
from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, |
|
|
@ -46,7 +47,6 @@ TipoFimRelatoriaCrud = Crud.build(TipoFimRelatoria, 'fim_relatoria') |
|
|
|
AnexadaCrud = Crud.build(Anexada, '') |
|
|
|
TipoAutorCrud = Crud.build(TipoAutor, 'tipo_autor') |
|
|
|
AutorCrud = Crud.build(Autor, 'autor') |
|
|
|
AutoriaCrud = Crud.build(Autoria, '') |
|
|
|
DocumentoAcessorioCrud = Crud.build(DocumentoAcessorio, '') |
|
|
|
NumeracaoCrud = Crud.build(Numeracao, '') |
|
|
|
OrgaoCrud = Crud.build(Orgao, 'orgao') |
|
|
@ -57,243 +57,55 @@ StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao') |
|
|
|
UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao') |
|
|
|
TramitacaoCrud = Crud.build(Tramitacao, '') |
|
|
|
|
|
|
|
AutoriaCrud = MasterDetailCrud.build(Autoria, 'materia', '') |
|
|
|
|
|
|
|
class MateriaLegislativaCrud(Crud): |
|
|
|
model = MateriaLegislativa |
|
|
|
help_path = 'materia_legislativa' |
|
|
|
|
|
|
|
class BaseMixin(crud.base.CrudBaseMixin): |
|
|
|
list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao'] |
|
|
|
class DespachoInicialCrud(MasterDetailCrud): |
|
|
|
model = DespachoInicial |
|
|
|
parent_field = 'materia' |
|
|
|
help_path = '' |
|
|
|
|
|
|
|
class CreateView(MasterDetailCrud.CreateView): |
|
|
|
form_class = DespachoInicialForm |
|
|
|
|
|
|
|
class MateriaAnexadaView(FormView): |
|
|
|
template_name = "materia/materia_anexada.html" |
|
|
|
form_class = MateriaAnexadaForm |
|
|
|
form_valid_message = _('Matéria anexada com sucesso!') |
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
form = MateriaAnexadaForm() |
|
|
|
materia = MateriaLegislativa.objects.get( |
|
|
|
id=kwargs['pk']) |
|
|
|
anexadas = Anexada.objects.filter( |
|
|
|
materia_principal_id=kwargs['pk']) |
|
|
|
|
|
|
|
return self.render_to_response({'object': materia, |
|
|
|
'anexadas': anexadas, |
|
|
|
'form': form}) |
|
|
|
|
|
|
|
def form_invalid(self, |
|
|
|
form, |
|
|
|
request, |
|
|
|
mat_principal, |
|
|
|
anexadas, |
|
|
|
msg='Erro ineseperado.'): |
|
|
|
messages.add_message(request, messages.ERROR, msg) |
|
|
|
return self.render_to_response( |
|
|
|
{'form': form, |
|
|
|
'object': mat_principal, |
|
|
|
'anexadas': anexadas}) |
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
form = self.get_form() |
|
|
|
|
|
|
|
anexadas = Anexada.objects.filter( |
|
|
|
materia_principal_id=kwargs['pk']) |
|
|
|
mat_principal = MateriaLegislativa.objects.get( |
|
|
|
id=kwargs['pk']) |
|
|
|
|
|
|
|
if form.is_valid(): |
|
|
|
tipo = form.cleaned_data['tipo'] |
|
|
|
numero = form.cleaned_data['numero'] |
|
|
|
ano = form.cleaned_data['ano'] |
|
|
|
data_anexacao = form.cleaned_data['data_anexacao'] |
|
|
|
data_desanexacao = form.cleaned_data['data_desanexacao'] |
|
|
|
|
|
|
|
try: |
|
|
|
mat_anexada = MateriaLegislativa.objects.get( |
|
|
|
numero=numero, ano=ano, tipo=tipo) |
|
|
|
|
|
|
|
if mat_principal.tipo == mat_anexada.tipo: |
|
|
|
msg = _('A matéria a ser anexada não pode ser do mesmo' |
|
|
|
' tipo da matéria principal.') |
|
|
|
self.form_invalid( |
|
|
|
form, request, mat_principal, anexadas, msg) |
|
|
|
anexada = Anexada() |
|
|
|
anexada.materia_principal = mat_principal |
|
|
|
anexada.materia_anexada = mat_anexada |
|
|
|
anexada.data_anexacao = data_anexacao |
|
|
|
if data_desanexacao: |
|
|
|
anexada.data_desanexacao = data_desanexacao |
|
|
|
|
|
|
|
anexada.save() |
|
|
|
except ObjectDoesNotExist: |
|
|
|
msg = _('A matéria a ser anexada não existe no cadastro' |
|
|
|
' de matérias legislativas.') |
|
|
|
self.form_invalid(form, request, mat_principal, anexadas, msg) |
|
|
|
return self.form_valid(form) |
|
|
|
else: |
|
|
|
return self.render_to_response( |
|
|
|
{'form': form, |
|
|
|
'object': mat_principal, |
|
|
|
'anexadas': anexadas}) |
|
|
|
class UpdateView(MasterDetailCrud.UpdateView): |
|
|
|
form_class = DespachoInicialForm |
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
pk = self.kwargs['pk'] |
|
|
|
return reverse('materia:materia_anexada', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
class AnexadaCrud(MasterDetailCrud): |
|
|
|
model = Anexada |
|
|
|
parent_field = 'materia_principal' |
|
|
|
help_path = '' |
|
|
|
|
|
|
|
class MateriaAnexadaEditView(FormView): |
|
|
|
template_name = "materia/materia_anexada_edit.html" |
|
|
|
form_class = MateriaAnexadaForm |
|
|
|
class BaseMixin(MasterDetailCrud.BaseMixin): |
|
|
|
list_field_names = ['materia_anexada', 'data_anexacao'] |
|
|
|
|
|
|
|
def form_invalid(self, |
|
|
|
form, |
|
|
|
request, |
|
|
|
mat_principal, |
|
|
|
msg='Erro ineseperado.'): |
|
|
|
messages.add_message(request, messages.ERROR, msg) |
|
|
|
return self.render_to_response( |
|
|
|
{'form': form, 'object': mat_principal}) |
|
|
|
class CreateView(MasterDetailCrud.CreateView): |
|
|
|
form_class = AnexadaForm |
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) |
|
|
|
anexada = Anexada.objects.get(id=kwargs['id']) |
|
|
|
class UpdateView(MasterDetailCrud.UpdateView): |
|
|
|
form_class = AnexadaForm |
|
|
|
|
|
|
|
data = {} |
|
|
|
data['tipo'] = anexada.materia_anexada.tipo |
|
|
|
data['numero'] = anexada.materia_anexada.numero |
|
|
|
data['ano'] = anexada.materia_anexada.ano |
|
|
|
data['data_anexacao'] = anexada.data_anexacao |
|
|
|
data['data_desanexacao'] = anexada.data_desanexacao |
|
|
|
def get_initial(self, **kwargs): |
|
|
|
self.initial['tipo'] = self.object.materia_anexada.tipo.id |
|
|
|
self.initial['numero'] = self.object.materia_anexada.numero |
|
|
|
self.initial['ano'] = self.object.materia_anexada.ano |
|
|
|
|
|
|
|
form = MateriaAnexadaForm(initial=data, excluir=True) |
|
|
|
return self.initial |
|
|
|
|
|
|
|
return self.render_to_response( |
|
|
|
{'object': materia, |
|
|
|
'form': form}) |
|
|
|
class DetailView(MasterDetailCrud.DetailView): |
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
form = self.get_form() |
|
|
|
@property |
|
|
|
def layout_key(self): |
|
|
|
return 'AnexadaDetail' |
|
|
|
|
|
|
|
anexada = Anexada.objects.get(id=kwargs['id']) |
|
|
|
mat_principal = MateriaLegislativa.objects.get( |
|
|
|
id=kwargs['pk']) |
|
|
|
if form.is_valid(): |
|
|
|
if 'Excluir' in request.POST: |
|
|
|
anexada.delete() |
|
|
|
return self.form_valid(form) |
|
|
|
elif 'salvar' in request.POST: |
|
|
|
|
|
|
|
tipo = form.cleaned_data['tipo'] |
|
|
|
numero = form.cleaned_data['numero'] |
|
|
|
ano = form.cleaned_data['ano'] |
|
|
|
data_anexacao = form.cleaned_data['data_anexacao'] |
|
|
|
|
|
|
|
if 'data_desanexacao' in request.POST: |
|
|
|
data_desanexacao = form.cleaned_data['data_desanexacao'] |
|
|
|
|
|
|
|
try: |
|
|
|
mat_anexada = MateriaLegislativa.objects.get( |
|
|
|
numero=numero, ano=ano, tipo=tipo) |
|
|
|
|
|
|
|
if mat_principal.tipo == mat_anexada.tipo: |
|
|
|
msg = _('A matéria a ser anexada não pode ser do mesmo \ |
|
|
|
tipo da matéria principal.') |
|
|
|
self.form_invalid(form, request, mat_principal, msg) |
|
|
|
|
|
|
|
anexada.materia_principal = mat_principal |
|
|
|
anexada.materia_anexada = mat_anexada |
|
|
|
anexada.data_anexacao = data_anexacao |
|
|
|
|
|
|
|
if data_desanexacao: |
|
|
|
anexada.data_desanexacao = data_desanexacao |
|
|
|
|
|
|
|
anexada.save() |
|
|
|
return self.form_valid(form) |
|
|
|
|
|
|
|
except ObjectDoesNotExist: |
|
|
|
msg = _('A matéria a ser anexada não existe no cadastro \ |
|
|
|
de matérias legislativas.') |
|
|
|
self.form_invalid(form, request, mat_principal, msg) |
|
|
|
else: |
|
|
|
return self.render_to_response( |
|
|
|
{'form': form, |
|
|
|
'materia': mat_principal}) |
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
pk = self.kwargs['pk'] |
|
|
|
return reverse('materia_anexada', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
|
|
|
|
class DespachoInicialView(CreateView): |
|
|
|
template_name = "materia/despacho_inicial.html" |
|
|
|
form_class = DespachoInicialForm |
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) |
|
|
|
despacho = DespachoInicial.objects.filter(materia_id=materia.id) |
|
|
|
form = DespachoInicialForm() |
|
|
|
|
|
|
|
return self.render_to_response( |
|
|
|
{'object': materia, |
|
|
|
'form': form, |
|
|
|
'despachos': despacho}) |
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
form = self.get_form() |
|
|
|
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) |
|
|
|
despacho = DespachoInicial.objects.filter(materia_id=materia.id) |
|
|
|
|
|
|
|
if form.is_valid(): |
|
|
|
despacho = DespachoInicial() |
|
|
|
despacho.comissao = form.cleaned_data['comissao'] |
|
|
|
despacho.materia = materia |
|
|
|
despacho.save() |
|
|
|
return redirect(self.get_success_url()) |
|
|
|
else: |
|
|
|
return self.render_to_response({'form': form, |
|
|
|
'object': materia, |
|
|
|
'despachos': despacho}) |
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
pk = self.kwargs['pk'] |
|
|
|
return reverse('materia:despacho_inicial', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
|
|
|
|
class DespachoInicialEditView(CreateView): |
|
|
|
template_name = "materia/despacho_inicial_edit.html" |
|
|
|
form_class = DespachoInicialForm |
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) |
|
|
|
despacho = DespachoInicial.objects.get(id=kwargs['id']) |
|
|
|
form = DespachoInicialForm(instance=despacho, excluir=True) |
|
|
|
|
|
|
|
return self.render_to_response({'object': materia, 'form': form}) |
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
form = self.get_form() |
|
|
|
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) |
|
|
|
despacho = DespachoInicial.objects.get(id=kwargs['id']) |
|
|
|
|
|
|
|
if form.is_valid(): |
|
|
|
if 'Excluir' in request.POST: |
|
|
|
despacho.delete() |
|
|
|
elif 'salvar' in request.POST: |
|
|
|
despacho.comissao = form.cleaned_data['comissao'] |
|
|
|
despacho.materia = materia |
|
|
|
despacho.save() |
|
|
|
return redirect(self.get_success_url()) |
|
|
|
else: |
|
|
|
return self.render_to_response( |
|
|
|
{'object': materia, |
|
|
|
'form': form, |
|
|
|
'despacho': despacho, |
|
|
|
'comissoes': Comissao.objects.all()}) |
|
|
|
class MateriaLegislativaCrud(Crud): |
|
|
|
model = MateriaLegislativa |
|
|
|
help_path = 'materia_legislativa' |
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
pk = self.kwargs['pk'] |
|
|
|
return reverse('materia:despacho_inicial', kwargs={'pk': pk}) |
|
|
|
class BaseMixin(crud.base.CrudBaseMixin): |
|
|
|
list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao'] |
|
|
|
|
|
|
|
|
|
|
|
class LegislacaoCitadaView(FormView): |
|
|
@ -1087,87 +899,6 @@ class TramitacaoEditView(CreateView): |
|
|
|
return reverse('materia:tramitacao_materia', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
|
|
|
|
class AutoriaView(CreateView): |
|
|
|
template_name = "materia/autoria.html" |
|
|
|
form_class = AutoriaForm |
|
|
|
form_valid_message = _('Autoria cadastrada com sucesso!') |
|
|
|
model = Autoria |
|
|
|
|
|
|
|
def get_initial(self): |
|
|
|
initial = super(AutoriaView, self).get_initial() |
|
|
|
initial['materia_id'] = self.kwargs['pk'] |
|
|
|
return initial |
|
|
|
|
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
context = super(AutoriaView, self).get_context_data(**kwargs) |
|
|
|
|
|
|
|
materia = MateriaLegislativa.objects.get(id=self.kwargs['pk']) |
|
|
|
autorias = Autoria.objects.filter(materia=materia) |
|
|
|
|
|
|
|
context.update({'object': materia, |
|
|
|
'autorias': autorias}) |
|
|
|
return context |
|
|
|
|
|
|
|
def form_valid(self, form): |
|
|
|
materia = MateriaLegislativa.objects.get(id=form.data['materia_id']) |
|
|
|
if 'salvar' in self.request.POST: |
|
|
|
autoria = Autoria() |
|
|
|
autoria.autor = Autor.objects.get(id=form.data['autor']) |
|
|
|
autoria.materia = materia |
|
|
|
autoria.primeiro_autor = form.data['primeiro_autor'] |
|
|
|
|
|
|
|
if form.data['partido']: |
|
|
|
filiacao_autor = Partido.objects.get(id=form.data['partido']) |
|
|
|
autoria.partido = filiacao_autor |
|
|
|
|
|
|
|
autoria.save() |
|
|
|
|
|
|
|
return redirect(self.get_success_url()) |
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
pk = self.kwargs['pk'] |
|
|
|
return reverse('materia:autoria', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
|
|
|
|
class AutoriaEditView(CreateView): |
|
|
|
template_name = "materia/autoria_edit.html" |
|
|
|
form_class = AutoriaForm |
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) |
|
|
|
autoria = Autoria.objects.get(id=self.kwargs['id']) |
|
|
|
form = AutoriaForm(instance=autoria, excluir=True) |
|
|
|
|
|
|
|
return self.render_to_response( |
|
|
|
{'object': materia, |
|
|
|
'form': form}) |
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) |
|
|
|
form = self.get_form() |
|
|
|
if form.is_valid(): |
|
|
|
autoria = Autoria.objects.get(id=self.kwargs['id']) |
|
|
|
if 'salvar' in request.POST: |
|
|
|
autoria.autor = Autor.objects.get(id=form.data['autor']) |
|
|
|
autoria.primeiro_autor = form.data['primeiro_autor'] |
|
|
|
if 'partido' in form.data: |
|
|
|
autoria.partido = Partido.objects.get( |
|
|
|
id=form.data['partido']) |
|
|
|
autoria.materia = materia |
|
|
|
autoria.save() |
|
|
|
elif 'Excluir' in request.POST: |
|
|
|
autoria.delete() |
|
|
|
return redirect(self.get_success_url()) |
|
|
|
else: |
|
|
|
return self.render_to_response( |
|
|
|
{'object': materia, |
|
|
|
'form': form}) |
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
pk = self.kwargs['pk'] |
|
|
|
return reverse('materia:autoria', kwargs={'pk': pk}) |
|
|
|
|
|
|
|
|
|
|
|
class ProposicaoListView(ListView): |
|
|
|
template_name = "materia/proposicao/proposicao_list.html" |
|
|
|
paginate_by = 10 |
|
|
|