Browse Source

ajusta crud de justificativaausencia

pull/2260/head
Leandro Roberto 7 years ago
parent
commit
dff53bf9e8
  1. 54
      sapl/sessao/forms.py
  2. 24
      sapl/sessao/views.py
  3. 5
      sapl/templates/sessao/justificativaausencia_form.html
  4. 3
      sapl/templates/sessao/layouts.yaml

54
sapl/sessao/forms.py

@ -6,12 +6,15 @@ from django import forms
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import transaction from django.db import transaction
from django.db.models import Q
from django.forms import ModelForm from django.forms import ModelForm
from django.forms.widgets import CheckboxSelectMultiple
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
import django_filters import django_filters
from floppyforms import widgets
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.crispy_layout_mixin import form_actions, to_row from sapl.crispy_layout_mixin import form_actions, to_row, SaplFormLayout
from sapl.materia.forms import MateriaLegislativaFilterSet from sapl.materia.forms import MateriaLegislativaFilterSet
from sapl.materia.models import (MateriaLegislativa, StatusTramitacao, from sapl.materia.models import (MateriaLegislativa, StatusTramitacao,
TipoMateriaLegislativa) TipoMateriaLegislativa)
@ -697,11 +700,15 @@ class JustificativaAusenciaForm(ModelForm):
'upload_anexo', 'upload_anexo',
'tipo_ausencia', 'tipo_ausencia',
'ausencia', 'ausencia',
#'materias_do_expediente', 'materias_do_expediente',
#'materias_da_ordem_do_dia', 'materias_da_ordem_do_dia',
'observacao' 'observacao'
] ]
widgets = {
'materias_do_expediente': CheckboxSelectMultiple(),
'materias_da_ordem_do_dia': CheckboxSelectMultiple()}
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
row1 = to_row( row1 = to_row(
@ -715,32 +722,40 @@ class JustificativaAusenciaForm(ModelForm):
[('tipo_ausencia', 12)]) [('tipo_ausencia', 12)])
row5 = to_row( row5 = to_row(
[('ausencia', 12)]) [('ausencia', 12)])
# row6 = to_row( row6 = to_row(
# [('materias_do_expediente', 12)]) [('materias_do_expediente', 12)])
# row7 = to_row( row7 = to_row(
# [('materias_da_ordem_do_dia', 12)]) [('materias_da_ordem_do_dia', 12)])
row8 = to_row( row8 = to_row(
[('observacao', 12)]) [('observacao', 12)])
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = SaplFormLayout(
Fieldset(_('Justificativa de Ausência'), Fieldset(_('Justificativa de Ausência'),
row1, row2, row3, row1, row2, row3,
row4, row5, row4, row5,
# row6, row6,
# row7, row7,
row8, row8)
form_actions(label='Salvar'))
) )
q = Q(sessao_plenaria=kwargs['initial']['sessao_plenaria'])
ordens = OrdemDia.objects.filter(q)
expedientes = ExpedienteMateria.objects.filter(q)
super(JustificativaAusenciaForm, self).__init__( super(JustificativaAusenciaForm, self).__init__(
*args, **kwargs) *args, **kwargs)
presencas = SessaoPlenariaPresenca.objects.filter( presencas = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=kwargs['initial']['sessao_plenaria'] q).order_by('parlamentar__nome_parlamentar')
).order_by('parlamentar__nome_parlamentar')
self.fields['materias_do_expediente'].choices = [
(e.id, e.materia) for e in expedientes]
self.fields['materias_da_ordem_do_dia'].choices = [
(o.id, o.materia) for o in ordens]
self.fields['parlamentar'].choices = [ self.fields['parlamentar'].choices = [
("0", "------------")] + [
(p.parlamentar.id, p.parlamentar) for p in presencas] (p.parlamentar.id, p.parlamentar) for p in presencas]
def clean(self): def clean(self):
@ -749,10 +764,19 @@ class JustificativaAusenciaForm(ModelForm):
if not self.is_valid(): if not self.is_valid():
return self.cleaned_data return self.cleaned_data
sessao_plenaria = cleaned_data['sessao_plenaria'] sessao_plenaria = self.instance.sessao_plenaria
if not sessao_plenaria.finalizada or sessao_plenaria.finalizada is None: if not sessao_plenaria.finalizada or sessao_plenaria.finalizada is None:
raise ValidationError( raise ValidationError(
"A sessão deve está finalizada para registrar uma Ausência") "A sessão deve está finalizada para registrar uma Ausência")
else: else:
return self.cleaned_data return self.cleaned_data
def save(self, commit=False):
justificativa = super().save(True)
if justificativa.ausencia == 2:
justificativa.materias_do_expediente.clear()
justificativa.materias_da_ordem_do_dia.clear()
return justificativa

24
sapl/sessao/views.py

@ -2981,6 +2981,19 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
list_field_names = ['parlamentar', 'sessao_plenaria', 'ausencia', 'tipo_ausencia', list_field_names = ['parlamentar', 'sessao_plenaria', 'ausencia', 'tipo_ausencia',
'data'] 'data']
@property
def layout_display(self):
layout = super().layout_display
if self.object.ausencia == 2:
# rm materias_da_ordem_do_dia do detail
layout[0]['rows'].pop(6)
# rm materias_do_expediente do detail
layout[0]['rows'].pop(5)
return layout
class ListView(MasterDetailCrud.ListView): class ListView(MasterDetailCrud.ListView):
paginate_by = 10 paginate_by = 10
@ -3029,5 +3042,16 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
form_class = JustificativaAusenciaForm form_class = JustificativaAusenciaForm
layout_key = None layout_key = None
def get_initial(self):
sessao_plenaria = JustificativaAusencia.objects.get(
id=self.kwargs['pk']).sessao_plenaria
return {'sessao_plenaria': sessao_plenaria}
class DetailView(MasterDetailCrud.DetailView):
def get_context_data(self, **kwargs):
context = super().get_context_data()
return context
class DeleteView(MasterDetailCrud.DeleteView): class DeleteView(MasterDetailCrud.DeleteView):
pass pass

5
sapl/templates/sessao/justificativaausencia_form.html

@ -11,12 +11,13 @@
$("#id_ausencia").change(function() { $("#id_ausencia").change(function() {
var val = $(this).val(); var val = $(this).val();
if(val === "1") { if(val === "1") {
$("#show_materia").show(); $("#div_id_materias_do_expediente, #div_id_materias_da_ordem_do_dia").show();
} }
else if(val === "2") { else if(val === "2") {
$("#show_materia").hide(); $("#div_id_materias_do_expediente, #div_id_materias_da_ordem_do_dia").hide();
} }
}); });
$("#id_ausencia").change()
}); });
</script> </script>

3
sapl/templates/sessao/layouts.yaml

@ -96,5 +96,6 @@ JustificativaAusencia:
- upload_anexo - upload_anexo
- tipo_ausencia - tipo_ausencia
- ausencia - ausencia
- materias_do_expediente
- materias_da_ordem_do_dia
- observacao - observacao
- sessao_plenaria
Loading…
Cancel
Save