Browse Source

wip

pull/2260/head
Mariana Mendes 7 years ago
parent
commit
8c311e9a58
  1. 35
      sapl/sessao/forms.py
  2. 4
      sapl/sessao/migrations/0027_auto_20181023_1126.py
  3. 3
      sapl/sessao/models.py
  4. 36
      sapl/sessao/views.py
  5. 8
      sapl/templates/sessao/justificativaausencia_create.html
  6. 1
      sapl/templates/sessao/justificativaausencia_edit.html
  7. 25
      sapl/utils.py

35
sapl/sessao/forms.py

@ -18,7 +18,7 @@ from sapl.materia.models import (MateriaLegislativa, StatusTramitacao,
from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato
from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES, from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
MateriaPesquisaOrderingFilter, autor_label, MateriaPesquisaOrderingFilter, autor_label,
autor_modal, timezone) ausencia_expediente, ausencia_ordem, autor_modal, timezone)
from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia, from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia,
Orador, OradorExpediente, OrdemDia, SessaoPlenaria, Orador, OradorExpediente, OrdemDia, SessaoPlenaria,
@ -699,6 +699,34 @@ class JustificativaAusenciaForm(ModelForm):
fields = ['sessao_plenaria', 'tipo_ausencia', 'hora', fields = ['sessao_plenaria', 'tipo_ausencia', 'hora',
'data', 'upload_anexo', 'ausencia', 'parlamentar', 'observacao'] 'data', 'upload_anexo', 'ausencia', 'parlamentar', 'observacao']
def __init__(self, *args, **kwargs):
row1 = to_row(
[('parlamentar', 12)])
row2 = to_row(
[('data', 6),
('hora', 6)])
row3 = to_row(
[('anexo', 6)])
row4 = to_row(
[('tipo_ausencia', 6)])
row5 = to_row(
[('ausencia', 6)])
row6 = to_row(
[('observacao', 12)])
self.form.helper = FormHelper()
self.form.helper.layout = Layout(
Fieldset(_('Justificativa de Ausência'),
row1, row2, row3,
row4, row5,
HTML(ausencia_expediente),
HTML(ausencia_ordem),
row6,)
)
super(JustificativaAusenciaForm, self).__init__(
*args, **kwargs)
def clean(self): def clean(self):
cleaned_data = super(JustificativaAusenciaForm, self).clean() cleaned_data = super(JustificativaAusenciaForm, self).clean()
@ -710,4 +738,7 @@ class JustificativaAusenciaForm(ModelForm):
if not sessao_plenaria.finalizada or sessao_plenaria.finalizada is None: if not sessao_plenaria.finalizada or sessao_plenaria.finalizada is None:
raise ValidationError("A sessão deve está finalizada para registrar uma Ausência") raise ValidationError("A sessão deve está finalizada para registrar uma Ausência")
else: else:
return cleaned_data return self.cleaned_data

4
sapl/sessao/migrations/0027_auto_20181023_0843.py → sapl/sessao/migrations/0027_auto_20181023_1126.py

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.9.13 on 2018-10-23 10:43 # Generated by Django 1.9.13 on 2018-10-23 13:26
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import migrations, models from django.db import migrations, models
@ -24,7 +24,7 @@ class Migration(migrations.Migration):
('observacao', models.TextField(blank=True, max_length=150, verbose_name='Observação')), ('observacao', models.TextField(blank=True, max_length=150, verbose_name='Observação')),
('ausencia', models.PositiveIntegerField(choices=[(1, 'Matéria'), (2, 'Sessão')], default=1, verbose_name='Ausente em')), ('ausencia', models.PositiveIntegerField(choices=[(1, 'Matéria'), (2, 'Sessão')], default=1, verbose_name='Ausente em')),
('upload_anexo', models.FileField(blank=True, null=True, upload_to=sapl.sessao.models.anexo_upload_path, verbose_name='Anexo de Justificativa')), ('upload_anexo', models.FileField(blank=True, null=True, upload_to=sapl.sessao.models.anexo_upload_path, verbose_name='Anexo de Justificativa')),
('parlamentar', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Parlamentar')), ('parlamentar', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Parlamentar', verbose_name='Parlamentar')),
('sessao_plenaria', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria', verbose_name='Sessão Plenária')), ('sessao_plenaria', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria', verbose_name='Sessão Plenária')),
], ],
options={ options={

3
sapl/sessao/models.py

@ -601,7 +601,8 @@ class JustificativaAusencia(models.Model):
(1, 'materia', 'Matéria'), (1, 'materia', 'Matéria'),
(2, 'sessao', 'Sessão'), (2, 'sessao', 'Sessão'),
) )
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT,
verbose_name=_('Parlamentar'))
sessao_plenaria = models.ForeignKey(SessaoPlenaria, sessao_plenaria = models.ForeignKey(SessaoPlenaria,
on_delete=models.CASCADE, on_delete=models.CASCADE,
verbose_name=_('Sessão Plenária')) verbose_name=_('Sessão Plenária'))

36
sapl/sessao/views.py

@ -2964,14 +2964,24 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
model = JustificativaAusencia model = JustificativaAusencia
public = [RP_LIST, RP_DETAIL, ] public = [RP_LIST, RP_DETAIL, ]
parent_field = 'sessao_plenaria' parent_field = 'sessao_plenaria'
template_name = 'sessao/justificativaausencia_create.html'
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['parlamentar', 'sessao_plenaria', 'ausencia','tipo_ausencia',
'data' ]
def get(self, request, *args, **kwargs): class ListView(MasterDetailCrud.ListView):
self.object = self.get_object() paginate_by = 10
context = self.get_context_data(object=self.object)
class CreateView(MasterDetailCrud.CreateView):
form_class = JustificativaAusenciaForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
presencas = SessaoPlenariaPresenca.objects.filter( presencas = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.object.id sessao_plenaria_id=kwargs['root_pk']
).order_by('parlamentar__nome_parlamentar') ).order_by('parlamentar__nome_parlamentar')
parlamentares_sessao = [p.parlamentar for p in presencas] parlamentares_sessao = [p.parlamentar for p in presencas]
@ -2979,31 +2989,20 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
context.update({'presenca_sessao': parlamentares_sessao}) context.update({'presenca_sessao': parlamentares_sessao})
expedientes = ExpedienteMateria.objects.filter( expedientes = ExpedienteMateria.objects.filter(
sessao_plenaria_id=self.object.id) sessao_plenaria_id=kwargs['root_pk'])
expedientes_materia = [e.materia for e in expedientes] expedientes_materia = [e.materia for e in expedientes]
context.update({'expedientes': expedientes}) context.update({'expedientes': expedientes})
ordens = OrdemDia.objects.filter( ordens = OrdemDia.objects.filter(
sessao_plenaria_id=self.object.id) sessao_plenaria_id=kwargs['root_pk'])
ordem_materia = [o.materia for o in ordens] ordem_materia = [o.materia for o in ordens]
context.update({'ordens': ordens}) context.update({'ordens': ordens})
return self.render_to_response(context) return context
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['sessao_plenaria', 'ausencia','tipo_ausencia',
'data' ]
class ListView(MasterDetailCrud.ListView):
paginate_by = 10
class CreateView(MasterDetailCrud.CreateView):
form_class = JustificativaAusenciaForm
template_name = 'sessao/justificativaausencia_create.html'
def get_initial(self): def get_initial(self):
sessao_plenaria = SessaoPlenaria.objects.get(id=self.kwargs['pk']) sessao_plenaria = SessaoPlenaria.objects.get(id=self.kwargs['pk'])
@ -3014,6 +3013,7 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
kwargs={'pk': self.kwargs['pk']}) kwargs={'pk': self.kwargs['pk']})
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
form_class = JustificativaAusenciaForm form_class = JustificativaAusenciaForm
class DeleteView(MasterDetailCrud.DeleteView): class DeleteView(MasterDetailCrud.DeleteView):

8
sapl/templates/sessao/justificativaausencia_create.html

@ -1,16 +1,8 @@
{% extends "crud/detail.html" %} {% extends "crud/detail.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% load common_tags %}
{% block actions %}{% endblock %}
{% block detail_content %} {% block detail_content %}
{% crispy form %} {% crispy form %}
<form method="post">
{% csrf_token %}
<div class="output">
<div id="show_materia" class="show_materia" type="hidden"> {{ expedientes_materia }}</div>
</div>
{% endblock detail_content %} {% endblock detail_content %}

1
sapl/templates/sessao/justificativaausencia_detail.html → sapl/templates/sessao/justificativaausencia_edit.html

@ -1,7 +1,6 @@
{% extends "crud/detail.html" %} {% extends "crud/detail.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% block actions %}{% endblock %}
{% block detail_content %} {% block detail_content %}
{% crispy form %} {% crispy form %}
{% endblock detail_content %} {% endblock detail_content %}

25
sapl/utils.py

@ -87,6 +87,31 @@ autor_modal = '''
</div> </div>
''' '''
ausencia_expediente = '''
<div class="controls" id="show_materia" class="show_materia" type="hidden">
{% for e in expedientes %}
<div class="checkbox">
<label for="show_materia">
<input type="checkbox" name="materia" value="{{ e.materia }}" {% if check %} checked {% endif %}/>
{{ e.materia }}
</label>
</div>
{% endfor %}
</div>
'''
ausencia_ordem = '''
<div class="controls" id="show_materia" class="show_materia" type="hidden">
{% for o in ordens %}
<div class="checkbox" >
<label for="show_materia">
<input type="checkbox" name="materia" value="{{ o.materia }}" {% if check %} checked {% endif %}/>
{{ o.materia }}
</label>
</div>
{% endfor %}
</div>
'''
def montar_row_autor(name): def montar_row_autor(name):
autor_row = to_row( autor_row = to_row(

Loading…
Cancel
Save