Browse Source

WIP

Co-authored-by: João Pedro Sconetto <sconetto.joao@gmail.com>
pull/2260/head
Mariana Mendes 7 years ago
parent
commit
c578d563ad
  1. 12
      sapl/sessao/forms.py
  2. 10
      sapl/sessao/models.py
  3. 8
      sapl/sessao/urls.py
  4. 60
      sapl/sessao/views.py
  5. 2
      sapl/templates/sessao/subnav.yaml

12
sapl/sessao/forms.py

@ -20,8 +20,8 @@ from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
MateriaPesquisaOrderingFilter, autor_label,
autor_modal, timezone)
from .models import (Bancada, Bloco, ExpedienteMateria, Orador,
OradorExpediente, OrdemDia, SessaoPlenaria,
from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia,
Orador,OradorExpediente, OrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, TipoResultadoVotacao)
@ -676,3 +676,11 @@ class ResumoOrdenacaoForm(forms.Form):
raise ValidationError(_(
'Não é possível ter campos repetidos'))
return self.cleaned_data
class JustificativaAusenciaForm(forms.Form):
def clean(self):
cleaned_data = super(JustificativaAusenciaForm, self).clean()
if not self.is_valid():
return cleaned_data

10
sapl/sessao/models.py

@ -582,6 +582,10 @@ class TipoJustificativa(models.Model):
@reversion.register()
class JustificativaAusencia(models.Model):
TIPO_AUSENCIA_CHOICES = Choices(
(1, 'sessao', 'Sessão'),
(2, 'materia', 'Matéria'),
)
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
sessao_plenaria = models.ForeignKey(SessaoPlenaria,
on_delete=models.CASCADE)
@ -591,4 +595,8 @@ class JustificativaAusencia(models.Model):
hora = models.CharField(
max_length=5, verbose_name=_('Horário (hh:mm)'))
observacao = models.CharField(
max_length=150, blank=True, verbose_name=_('Observação'))
max_length=150, blank=True, verbose_name=_('Observação'))
ausencia = models.PositiveIntegerField(
verbose_name=_('Ausente em'), choices=TIPO_AUSENCIA_CHOICES, default=1)

8
sapl/sessao/urls.py

@ -4,8 +4,8 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
AdicionarVariasMateriasOrdemDia, BancadaCrud,
BlocoCrud, CargoBancadaCrud,
ExpedienteMateriaCrud, ExpedienteView,
MateriaOrdemDiaCrud, MesaView, OradorCrud,
OradorExpedienteCrud, PainelView,
JustificativaAusenciaCrud, MateriaOrdemDiaCrud, MesaView,
OradorCrud, OradorExpedienteCrud, PainelView,
PautaSessaoDetailView, PautaSessaoView,
PesquisarPautaSessaoView,
PesquisarSessaoPlenariaView,
@ -152,8 +152,10 @@ urlpatterns = [
url(r'^sessao/(?P<pk>\d+)/votacao-simbolica-transparencia/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoSimbolicaTransparenciaDetailView.as_view(),
name='votacao_simbolica_transparencia'),
url(r'^sessao/mudar-ordem-materia-sessao/',
mudar_ordem_materia_sessao,
name='mudar_ordem_materia_sessao'),
# Justificativa Ausencia
url(r'^sessao/(?P<pk>\d+)/justificativa/',
include(JustificativaAusenciaCrud.get_urls())),
]

60
sapl/sessao/views.py

@ -37,14 +37,14 @@ from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm
from sapl.utils import show_results_filter_set, remover_acentos
from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm,
ExpedienteForm, ListMateriaForm, MesaForm,
JustificativaAusenciaForm, ExpedienteForm, ListMateriaForm, MesaForm,
OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
ExpedienteMateria, ExpedienteSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
ExpedienteMateria, ExpedienteSessao, JustificativaAusencia,
IntegranteMesa, MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao,
SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente,
TipoJustificativa, TipoResultadoVotacao, TipoSessaoPlenaria,
@ -141,7 +141,7 @@ def abrir_votacao(request, pk, spk):
presenca_model = SessaoPlenariaPresenca
redirect_url = 'expedientemateria_list'
if not model:
raise Http404
raise Http404()
if (verifica_presenca(request, presenca_model, spk) and
verifica_votacoes_abertas(request) and
@ -2898,3 +2898,55 @@ def mudar_ordem_materia_sessao(request):
materia_1.save()
return
class JustificativaAusenciaCrud(Crud):
model = JustificativaAusencia
public = [RP_LIST, RP_DETAIL, ]
class BaseMixin(Crud.BaseMixin):
list_field_names = ['sessao_plenaria', 'tipo_ausencia', 'hora',
'data']
ordering = 'sessao_plenaria', 'tipo_ausencia', 'data'
class ListView(Crud.ListView):
paginate_by = 10
class CreateView(Crud.CreateView):
form_class = JustificativaAusenciaForm
def get_success_url(self):
pk = self.sessao_plenaria.id
return reverse('sapl.sessao:justificativaausencia_list', kwargs={'pk': pk})
def get_initial(self):
if self.sessao_plenaria.finalizada is None or \
not self.sessao_plenaria.finalizada:
msg = _('A Sessão deve estar finalizada para registrar as ausências.')
messages.add_message(self.request, messages.ERROR, msg)
else:
return {}
def form_valid(self, form):
return super(Crud.CreateView, self).form_valid(form)
class UpdateView(Crud.UpdateView):
form_class = JustificativaAusenciaForm
def get_initial(self):
if self.sessao_plenaria.finalizada is None or \
not self.sessao_plenaria.finalizada:
msg = _('A Sessão deve estar finalizada para editar as ausências.')
messages.add_message(self.request, messages.ERROR, msg)
else:
return {'sessao_plenaria': self.sessao_plenaria}
class DeleteView(Crud.DeleteView):
pass
class DetailView(Crud.DetailView):
layout_key = 'JustificativaAusenciaDetail'
def get(self, request, *args, **kwargs):
return super().get(request, *args, **kwargs)

2
sapl/templates/sessao/subnav.yaml

@ -8,6 +8,8 @@
url: mesa
- title: {% trans 'Presença' %}
url: presenca
- title: {% trans 'Ausência' %}
url: justificativaausencia_list
- title: {% trans 'Explicações Pessoais' %}
url: orador_list

Loading…
Cancel
Save