|
|
@ -1,23 +1,27 @@ |
|
|
|
|
|
|
|
|
from django.core.urlresolvers import reverse |
|
|
from django.core.urlresolvers import reverse |
|
|
from django.db.models import F |
|
|
from django.db.models import F |
|
|
|
|
|
from django.http.response import HttpResponseRedirect |
|
|
from django.views.decorators.clickjacking import xframe_options_exempt |
|
|
from django.views.decorators.clickjacking import xframe_options_exempt |
|
|
from django.views.generic import ListView |
|
|
from django.views.generic import ListView |
|
|
from django.views.generic.base import RedirectView |
|
|
from django.views.generic.base import RedirectView |
|
|
from django.views.generic.detail import DetailView |
|
|
from django.views.generic.detail import DetailView |
|
|
from django.views.generic.edit import FormMixin |
|
|
from django.views.generic.edit import FormMixin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from sapl.base.models import AppConfig as AppsAppConfig |
|
|
from sapl.base.models import AppConfig as AppsAppConfig |
|
|
from sapl.comissoes.apps import AppConfig |
|
|
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, |
|
|
from sapl.comissoes.forms import ParticipacaoCreateForm, ParticipacaoEditForm |
|
|
CrudAux, MasterDetailCrud, |
|
|
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, |
|
|
|
|
|
MasterDetailCrud, |
|
|
|
|
|
PermissionRequiredForAppCrudMixin) |
|
|
PermissionRequiredForAppCrudMixin) |
|
|
|
|
|
from sapl.comissoes.forms import (ComissaoForm, DocumentoAcessorioCreateForm, |
|
|
|
|
|
DocumentoAcessorioEditForm, ParticipacaoCreateForm, |
|
|
|
|
|
ParticipacaoEditForm, ReuniaoForm) |
|
|
from sapl.materia.models import MateriaLegislativa, Tramitacao |
|
|
from sapl.materia.models import MateriaLegislativa, Tramitacao |
|
|
|
|
|
|
|
|
from .forms import ComissaoForm, ReuniaoForm |
|
|
|
|
|
from .models import (CargoComissao, Comissao, Composicao, Participacao, |
|
|
from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio, |
|
|
Periodo, Reuniao, TipoComissao) |
|
|
Participacao, Periodo, TipoComissao, Reuniao) |
|
|
|
|
|
from sapl.comissoes.apps import AppConfig |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def pegar_url_composicao(pk): |
|
|
def pegar_url_composicao(pk): |
|
|
@ -26,6 +30,11 @@ def pegar_url_composicao(pk): |
|
|
url = reverse('sapl.comissoes:composicao_detail', kwargs={'pk': comp_pk}) |
|
|
url = reverse('sapl.comissoes:composicao_detail', kwargs={'pk': comp_pk}) |
|
|
return url |
|
|
return url |
|
|
|
|
|
|
|
|
|
|
|
def pegar_url_reuniao(pk): |
|
|
|
|
|
documentoacessorio = DocumentoAcessorio.objects.get(id=pk) |
|
|
|
|
|
r_pk = documentoacessorio.reuniao.pk |
|
|
|
|
|
url = reverse('sapl.comissoes:reuniao_detail', kwargs={'pk': r_pk}) |
|
|
|
|
|
return url |
|
|
|
|
|
|
|
|
CargoCrud = CrudAux.build(CargoComissao, 'cargo_comissao') |
|
|
CargoCrud = CrudAux.build(CargoComissao, 'cargo_comissao') |
|
|
PeriodoComposicaoCrud = CrudAux.build(Periodo, 'periodo_composicao_comissao') |
|
|
PeriodoComposicaoCrud = CrudAux.build(Periodo, 'periodo_composicao_comissao') |
|
|
@ -58,7 +67,6 @@ class ParticipacaoCrud(MasterDetailCrud): |
|
|
form_class = ParticipacaoEditForm |
|
|
form_class = ParticipacaoEditForm |
|
|
|
|
|
|
|
|
class DeleteView(MasterDetailCrud.DeleteView): |
|
|
class DeleteView(MasterDetailCrud.DeleteView): |
|
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
def get_success_url(self): |
|
|
composicao_comissao_pk = self.object.composicao.comissao.pk |
|
|
composicao_comissao_pk = self.object.composicao.comissao.pk |
|
|
composicao_pk = self.object.composicao.pk |
|
|
composicao_pk = self.object.composicao.pk |
|
|
@ -146,22 +154,44 @@ class MateriasTramitacaoListView(ListView): |
|
|
context['object'] = Comissao.objects.get(id=self.kwargs['pk']) |
|
|
context['object'] = Comissao.objects.get(id=self.kwargs['pk']) |
|
|
return context |
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ReuniaoCrud(MasterDetailCrud): |
|
|
class ReuniaoCrud(MasterDetailCrud): |
|
|
model = Reuniao |
|
|
model = Reuniao |
|
|
parent_field = 'comissao' |
|
|
parent_field = 'comissao' |
|
|
|
|
|
model_set = 'documentoacessorio_set' |
|
|
public = [RP_LIST, RP_DETAIL, ] |
|
|
public = [RP_LIST, RP_DETAIL, ] |
|
|
|
|
|
|
|
|
class BaseMixin(MasterDetailCrud.BaseMixin): |
|
|
class BaseMixin(MasterDetailCrud.BaseMixin): |
|
|
list_field_names = ['nome', 'tema', 'comissao'] |
|
|
list_field_names = [ 'nome', 'tema', 'data'] |
|
|
|
|
|
|
|
|
@property |
|
|
|
|
|
def list_url(self): |
|
|
|
|
|
return '' |
|
|
|
|
|
|
|
|
|
|
|
class ListView(MasterDetailCrud.ListView): |
|
|
class ListView(MasterDetailCrud.ListView): |
|
|
paginate_by = 10 |
|
|
paginate_by = 10 |
|
|
|
|
|
|
|
|
|
|
|
def take_reuniao_pk(self): |
|
|
|
|
|
try: |
|
|
|
|
|
return int(self.request.GET['pk']) |
|
|
|
|
|
except: |
|
|
|
|
|
return 0 |
|
|
|
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
|
|
context = super().get_context_data(**kwargs) |
|
|
|
|
|
|
|
|
|
|
|
reuniao_pk = self.take_reuniao_pk() |
|
|
|
|
|
|
|
|
|
|
|
if reuniao_pk == 0: |
|
|
|
|
|
ultima_reuniao = list(context['reuniao_list']) |
|
|
|
|
|
if len(ultima_reuniao) > 0: |
|
|
|
|
|
ultimo = ultima_reuniao[-1] |
|
|
|
|
|
context['reuniao_pk'] = ultimo.pk |
|
|
|
|
|
else: |
|
|
|
|
|
context['reuniao_pk'] = 0 |
|
|
|
|
|
else: |
|
|
|
|
|
context['reuniao_pk'] = reuniao_pk |
|
|
|
|
|
|
|
|
|
|
|
context['documentoacessorio_set'] = DocumentoAcessorio.objects.filter( |
|
|
|
|
|
reuniao__pk=context['reuniao_pk'] |
|
|
|
|
|
).order_by('id') |
|
|
|
|
|
return context |
|
|
|
|
|
|
|
|
class UpdateView(MasterDetailCrud.UpdateView): |
|
|
class UpdateView(MasterDetailCrud.UpdateView): |
|
|
form_class = ReuniaoForm |
|
|
form_class = ReuniaoForm |
|
|
|
|
|
|
|
|
@ -176,11 +206,33 @@ class ReuniaoCrud(MasterDetailCrud): |
|
|
|
|
|
|
|
|
return {'comissao': comissao} |
|
|
return {'comissao': comissao} |
|
|
|
|
|
|
|
|
class DeleteView(MasterDetailCrud.DeleteView): |
|
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
class DetailView(MasterDetailCrud.DetailView): |
|
|
class DocumentoAcessorioCrud(MasterDetailCrud): |
|
|
|
|
|
model = DocumentoAcessorio |
|
|
|
|
|
parent_field = 'reuniao__comissao' |
|
|
|
|
|
public = [RP_DETAIL, ] |
|
|
|
|
|
ListView = None |
|
|
|
|
|
link_return_to_parent_field = True |
|
|
|
|
|
|
|
|
|
|
|
class BaseMixin(MasterDetailCrud.BaseMixin): |
|
|
|
|
|
list_field_names = ['nome', 'tipo', 'data', 'autor', 'arquivo'] |
|
|
|
|
|
|
|
|
@xframe_options_exempt |
|
|
class CreateView(MasterDetailCrud.CreateView): |
|
|
def get(self, request, *args, **kwargs): |
|
|
form_class = DocumentoAcessorioCreateForm |
|
|
return super().get(request, *args, **kwargs) |
|
|
|
|
|
|
|
|
def get_initial(self): |
|
|
|
|
|
initial = super().get_initial() |
|
|
|
|
|
initial['parent_pk'] = self.kwargs['pk'] |
|
|
|
|
|
return initial |
|
|
|
|
|
|
|
|
|
|
|
class UpdateView(MasterDetailCrud.UpdateView): |
|
|
|
|
|
layout_key = 'DocumentoAcessorioEdit' |
|
|
|
|
|
form_class = DocumentoAcessorioEditForm |
|
|
|
|
|
|
|
|
|
|
|
class DeleteView(MasterDetailCrud.DeleteView): |
|
|
|
|
|
def delete(self, *args, **kwargs): |
|
|
|
|
|
obj = self.get_object() |
|
|
|
|
|
obj.delete() |
|
|
|
|
|
return HttpResponseRedirect( |
|
|
|
|
|
reverse('sapl.comissoes:reuniao_detail', |
|
|
|
|
|
kwargs={'pk': obj.reuniao.pk})) |