Browse Source

refactor: corrige relatório alinhando a proposta da nomenclatura

pull/3645/head
LeandroJatai 2 years ago
parent
commit
b4564584fe
  1. 105
      sapl/base/forms.py
  2. 17
      sapl/base/views.py
  3. 29
      sapl/templates/base/RelatorioDataFimPrazoTramitacao_filter.html
  4. 27
      sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html

105
sapl/base/forms.py

@ -152,11 +152,11 @@ class UserAdminForm(ModelForm):
row_pwd += [
('parlamentar', 6),
('autor', 6),
('groups', 12),
('parlamentar', 6),
('autor', 6),
('groups', 12),
] + ([('user_permissions', 12)] if not self.granular is None else [])
] + ([('user_permissions', 12)] if not self.granular is None else [])
row_pwd = to_row(row_pwd)
@ -186,27 +186,28 @@ class UserAdminForm(ModelForm):
self.fields['parlamentar'].initial = votante.parlamentar if votante else None
self.fields['groups'].choices = [
(g.id, g) for g in self.instance.groups.exclude(
(g.id, g) for g in self.instance.groups.exclude(
name__in=['Autor', 'Votante']
).order_by('name')
] + [
(g.id, g) for g in Group.objects.exclude(
] + [
(g.id, g) for g in Group.objects.exclude(
user=self.instance).exclude(
name__in=['Autor', 'Votante']
name__in=[
'Autor', 'Votante']
).order_by('name')
]
]
self.fields[
'user_permissions'].widget = forms.CheckboxSelectMultiple()
if not self.granular is None:
self.fields['user_permissions'].choices = [
(p.id, p) for p in self.instance.user_permissions.all(
(p.id, p) for p in self.instance.user_permissions.all(
).order_by('content_type__app_label',
'content_type__model',
'codename')
] + [
(p.id, p) for p in Permission.objects.filter(
] + [
(p.id, p) for p in Permission.objects.filter(
content_type__app_label__in=list(
map(lambda x: x.split('.')[-1], settings.SAPL_APPS))
).exclude(
@ -214,7 +215,7 @@ class UserAdminForm(ModelForm):
).order_by('content_type__app_label',
'content_type__model',
'codename')
]
]
def save(self, commit=True):
if self.cleaned_data['new_password1']:
@ -582,7 +583,7 @@ class AutorForm(ModelForm):
to_column((Div(
Field('autor_related'),
css_class='radiogroup-autor-related hidden'),
12)))
12)))
operadores_select = to_row(
[
('operadores', 12)
@ -595,29 +596,29 @@ class AutorForm(ModelForm):
super(AutorForm, self).__init__(*args, **kwargs)
self.fields['operadores'].choices = [
(
u.id,
u.username,
u
)
for u in get_user_model().objects.filter(
(
u.id,
u.username,
u
)
for u in get_user_model().objects.filter(
operadorautor_set__autor=self.instance
).order_by('-is_active',
get_user_model().USERNAME_FIELD
) if self.instance.id
] + [
(
u.id,
u.username,
u
)
for u in get_user_model().objects.filter(
] + [
(
u.id,
u.username,
u
)
for u in get_user_model().objects.filter(
operadorautor_set__isnull=True,
is_active=True
).order_by('-is_active',
get_user_model().USERNAME_FIELD
)
]
]
if self.instance.pk:
if self.instance.autor_related:
@ -757,15 +758,19 @@ class AuditLogFilterSet(django_filters.FilterSet):
('D', 'Excluído'),
)
username = django_filters.ChoiceFilter(choices=get_username(), label=_('Usuário'))
username = django_filters.ChoiceFilter(
choices=get_username(), label=_('Usuário'))
object_id = django_filters.NumberFilter(label=_('Id'))
operation = django_filters.ChoiceFilter(choices=OPERATION_CHOICES, label=_('Operação'))
model_name = django_filters.ChoiceFilter(choices=get_models, label=_('Tipo de Registro'))
operation = django_filters.ChoiceFilter(
choices=OPERATION_CHOICES, label=_('Operação'))
model_name = django_filters.ChoiceFilter(
choices=get_models, label=_('Tipo de Registro'))
timestamp = django_filters.DateRangeFilter(label=_('Período'))
class Meta:
model = AuditLog
fields = ['username', 'operation', 'model_name', 'timestamp', 'object_id']
fields = ['username', 'operation',
'model_name', 'timestamp', 'object_id']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@ -1019,8 +1024,8 @@ class EstatisticasAcessoNormasForm(Form):
)
self.fields['ano'].choices = NormaEstatisticas.objects.order_by(
'-ano').distinct().values_list('ano', 'ano') or [
(timezone.now().year, timezone.now().year)
]
(timezone.now().year, timezone.now().year)
]
def clean(self):
super(EstatisticasAcessoNormasForm, self).clean()
@ -1217,47 +1222,49 @@ class RelatorioHistoricoTramitacaoFilterSet(django_filters.FilterSet):
class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet):
ano = django_filters.ChoiceFilter(required=False,
label='Ano da Matéria',
choices=choice_anos_com_materias)
materia__ano = django_filters.ChoiceFilter(required=False,
label='Ano da Matéria',
choices=choice_anos_com_materias)
@property
def qs(self):
parent = super(RelatorioDataFimPrazoTramitacaoFilterSet, self).qs
return parent.distinct().prefetch_related('tipo').order_by('-ano', 'tipo', 'numero')
return parent.distinct().prefetch_related('materia__tipo').order_by('tramitacao__data_fim_prazo', 'materia__tipo', 'materia__numero')
class Meta(FilterOverridesMetaMixin):
model = MateriaLegislativa
fields = ['tipo', 'tramitacao__unidade_tramitacao_local',
model = MateriaEmTramitacao
fields = ['materia__tipo',
'tramitacao__unidade_tramitacao_local',
'tramitacao__unidade_tramitacao_destino',
'tramitacao__status', 'tramitacao__data_fim_prazo']
'tramitacao__status',
'tramitacao__data_fim_prazo']
def __init__(self, *args, **kwargs):
super(RelatorioDataFimPrazoTramitacaoFilterSet, self).__init__(
*args, **kwargs)
self.filters['tipo'].label = 'Tipo de Matéria'
self.filters['materia__tipo'].label = 'Tipo de Matéria'
self.filters[
'tramitacao__unidade_tramitacao_local'].label = 'Unidade Local (Origem)'
self.filters['tramitacao__unidade_tramitacao_destino'].label = 'Unidade Destino'
self.filters['tramitacao__status'].label = 'Status de tramitação'
row1 = to_row([('ano', 12)])
row1 = to_row([('materia__ano', 12)])
row2 = to_row([('tramitacao__data_fim_prazo', 12)])
row3 = to_row([('tramitacao__unidade_tramitacao_local', 6),
('tramitacao__unidade_tramitacao_destino', 6)])
row4 = to_row(
[('tipo', 6),
[('materia__tipo', 6),
('tramitacao__status', 6)])
buttons = FormActions(
*[
HTML('''
<div class="form-check">
<input name="relatorio" type="checkbox" class="form-check-input" id="relatorio">
<label class="form-check-label" for="relatorio">Gerar relatório PDF</label>
</div>
''')
<div class="form-check">
<input name="relatorio" type="checkbox" class="form-check-input" id="relatorio">
<label class="form-check-label" for="relatorio">Gerar relatório PDF</label>
</div>
''')
],
Submit('pesquisar', _('Pesquisar'), css_class='float-right',
onclick='return true;'),

17
sapl/base/views.py

@ -695,7 +695,7 @@ class RelatorioHistoricoTramitacaoView(RelatorioMixin, FilterView):
class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView):
model = MateriaLegislativa
model = MateriaEmTramitacao
filterset_class = RelatorioDataFimPrazoTramitacaoFilterSet
template_name = 'base/RelatorioDataFimPrazoTramitacao_filter.html'
relatorio = relatorio_fim_prazo_tramitacao
@ -703,7 +703,8 @@ class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView):
def get_context_data(self, **kwargs):
context = super(RelatorioDataFimPrazoTramitacaoView,
self).get_context_data(**kwargs)
context['title'] = _('Relatório de Tramitações')
context['title'] = _(
'Relatório de tramitações em intervalo de data de fim de prazo.')
if not self.filterset.form.is_valid():
return context
qr = self.request.GET.copy()
@ -711,16 +712,16 @@ class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView):
context['show_results'] = show_results_filter_set(qr)
context['data_tramitacao'] = (self.request.GET['tramitacao__data_fim_prazo_0'] + ' - ' +
self.request.GET['tramitacao__data_fim_prazo_1'])
context['data_fim_prazo'] = (self.request.GET['tramitacao__data_fim_prazo_0'] + ' - ' +
self.request.GET['tramitacao__data_fim_prazo_1'])
if self.request.GET['ano']:
context['ano'] = self.request.GET['ano']
if self.request.GET['materia__ano']:
context['ano'] = self.request.GET['materia__ano']
else:
context['ano'] = ''
if self.request.GET['tipo']:
tipo = self.request.GET['tipo']
if self.request.GET['materia__tipo']:
tipo = self.request.GET['materia__tipo']
context['tipo'] = (
str(TipoMateriaLegislativa.objects.get(id=tipo)))
else:

29
sapl/templates/base/RelatorioDataFimPrazoTramitacao_filter.html

@ -13,7 +13,7 @@
<br /><br /><br /><br />
<b>PARÂMETROS DE PESQUISA:<br /></b>
&emsp;Ano: {{ ano }} <br />
&emsp;Período: {{ data_tramitacao }} <br />
&emsp;Período: {{ data_fim_prazo }} <br />
&emsp;Tipo de matéria: {{ tipo }}<br />
&emsp;Status de tramitação: {{ tramitacao__status }}<br />
&emsp;Local de origem: {{ tramitacao__unidade_tramitacao_local }}<br />
@ -32,12 +32,29 @@
</tr>
</thead>
<tbody>
{% for materia in object_list %}
{% for materia_em_tramitacao in object_list %}
<tr>
<td><a href="{% url 'sapl.materia:tramitacao_list' materia.pk %}">
{{materia.tipo.descricao}} - {{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}}
</a></td>
<td>{{materia.ementa}}</td>
<td width="35%"><a href="{% url 'sapl.materia:tramitacao_list' materia_em_tramitacao.materia.pk %}">
{{materia_em_tramitacao.materia.tipo.descricao}} - {{materia_em_tramitacao.materia.tipo.sigla}} {{materia_em_tramitacao.materia.numero}}/{{materia_em_tramitacao.materia.ano}}
</a><br>
<small>
<strong>Data de Fim de Prazo:</strong> {{materia_em_tramitacao.tramitacao.data_fim_prazo}}
</small>
</td>
<td>
{{materia_em_tramitacao.materia.ementa}}
{% if not tramitacao__status or not tramitacao__unidade_tramitacao_destino %}
<small>
<br/>
<strong>Local Atual: </strong>{{ materia_em_tramitacao.materia.tramitacao_set.first.unidade_tramitacao_destino }}
<br/>
<strong>Status: </strong>{{ materia_em_tramitacao.materia.tramitacao_set.first.status }}
<br/>
<strong>Texto da Ação: </strong>{{ materia_em_tramitacao.materia.tramitacao_set.first.texto }}
</small>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>

27
sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html

@ -7,7 +7,7 @@
<h2>Fim de Prazo de Tramitações</h2>
<b>PARÂMETROS DE PESQUISA:<br /></b>
&emsp;Período: {{ data_tramitacao }} <br />
&emsp;Período: {{ data_fim_prazo }} <br />
&emsp;Tipo de matéria: {{ tipo }}<br />
&emsp;Status atual: {{ tramitacao__status }}<br />
&emsp;Local de origem: {{ tramitacao__unidade_tramitacao_local }}<br />
@ -18,7 +18,7 @@
{% else %}
<tr><td><h3 style="text-align: left;">Foram encontradas {{object_list|length}} matérias com esses parâmetros.</h3></td></tr><br><br>
{% endif %}
<table class="table table-bordered table-hover">
<table class="table table-bordered table-hover" border=1>
<thead class="thead-default" >
<tr class="active">
<th>Matéria</th>
@ -26,12 +26,29 @@
</tr>
</thead>
<tbody>
{% for materia in object_list %}
{% for materia_em_tramitacao in object_list %}
<tr>
<td width="35%"><a href="{% url 'sapl.materia:tramitacao_list' materia_em_tramitacao.materia.pk %}">
{{materia_em_tramitacao.materia.tipo.descricao}} - {{materia_em_tramitacao.materia.tipo.sigla}} {{materia_em_tramitacao.materia.numero}}/{{materia_em_tramitacao.materia.ano}}
</a><br>
<small>
<strong>Data de Fim de Prazo:</strong> {{materia_em_tramitacao.tramitacao.data_fim_prazo}}
</small>
</td>
<td>
{{materia.tipo.descricao}} - {{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}}
{{materia_em_tramitacao.materia.ementa}}
{% if not tramitacao__status or not tramitacao__unidade_tramitacao_destino %}
<small>
<br/>
<strong>Local Atual: </strong>{{ materia_em_tramitacao.materia.tramitacao_set.first.unidade_tramitacao_destino }}
<br/>
<strong>Status: </strong>{{ materia_em_tramitacao.materia.tramitacao_set.first.status }}
<br/>
<strong>Texto da Ação: </strong>{{ materia_em_tramitacao.materia.tramitacao_set.first.texto }}
</small>
{% endif %}
</td>
<td>{{materia.ementa}}</td>
</tr>
{% endfor %}
</tbody>

Loading…
Cancel
Save