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. 29
      sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html
  5. 2
      sapl/templates/relatorios/relatorio_materias_em_tramitacao.html

105
sapl/base/forms.py

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

17
sapl/base/views.py

@ -695,7 +695,7 @@ class RelatorioHistoricoTramitacaoView(RelatorioMixin, FilterView):
class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView): class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView):
model = MateriaLegislativa model = MateriaEmTramitacao
filterset_class = RelatorioDataFimPrazoTramitacaoFilterSet filterset_class = RelatorioDataFimPrazoTramitacaoFilterSet
template_name = 'base/RelatorioDataFimPrazoTramitacao_filter.html' template_name = 'base/RelatorioDataFimPrazoTramitacao_filter.html'
relatorio = relatorio_fim_prazo_tramitacao relatorio = relatorio_fim_prazo_tramitacao
@ -703,7 +703,8 @@ class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(RelatorioDataFimPrazoTramitacaoView, context = super(RelatorioDataFimPrazoTramitacaoView,
self).get_context_data(**kwargs) 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(): if not self.filterset.form.is_valid():
return context return context
qr = self.request.GET.copy() qr = self.request.GET.copy()
@ -711,16 +712,16 @@ class RelatorioDataFimPrazoTramitacaoView(RelatorioMixin, FilterView):
context['show_results'] = show_results_filter_set(qr) context['show_results'] = show_results_filter_set(qr)
context['data_tramitacao'] = (self.request.GET['tramitacao__data_fim_prazo_0'] + ' - ' + context['data_fim_prazo'] = (self.request.GET['tramitacao__data_fim_prazo_0'] + ' - ' +
self.request.GET['tramitacao__data_fim_prazo_1']) self.request.GET['tramitacao__data_fim_prazo_1'])
if self.request.GET['ano']: if self.request.GET['materia__ano']:
context['ano'] = self.request.GET['ano'] context['ano'] = self.request.GET['materia__ano']
else: else:
context['ano'] = '' context['ano'] = ''
if self.request.GET['tipo']: if self.request.GET['materia__tipo']:
tipo = self.request.GET['tipo'] tipo = self.request.GET['materia__tipo']
context['tipo'] = ( context['tipo'] = (
str(TipoMateriaLegislativa.objects.get(id=tipo))) str(TipoMateriaLegislativa.objects.get(id=tipo)))
else: else:

29
sapl/templates/base/RelatorioDataFimPrazoTramitacao_filter.html

@ -13,7 +13,7 @@
<br /><br /><br /><br /> <br /><br /><br /><br />
<b>PARÂMETROS DE PESQUISA:<br /></b> <b>PARÂMETROS DE PESQUISA:<br /></b>
&emsp;Ano: {{ ano }} <br /> &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;Tipo de matéria: {{ tipo }}<br />
&emsp;Status de tramitação: {{ tramitacao__status }}<br /> &emsp;Status de tramitação: {{ tramitacao__status }}<br />
&emsp;Local de origem: {{ tramitacao__unidade_tramitacao_local }}<br /> &emsp;Local de origem: {{ tramitacao__unidade_tramitacao_local }}<br />
@ -32,12 +32,29 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for materia in object_list %} {% for materia_em_tramitacao in object_list %}
<tr> <tr>
<td><a href="{% url 'sapl.materia:tramitacao_list' materia.pk %}"> <td width="35%"><a href="{% url 'sapl.materia:tramitacao_list' materia_em_tramitacao.materia.pk %}">
{{materia.tipo.descricao}} - {{materia.tipo.sigla}} {{materia.numero}}/{{materia.ano}} {{materia_em_tramitacao.materia.tipo.descricao}} - {{materia_em_tramitacao.materia.tipo.sigla}} {{materia_em_tramitacao.materia.numero}}/{{materia_em_tramitacao.materia.ano}}
</a></td> </a><br>
<td>{{materia.ementa}}</td> <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> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>

29
sapl/templates/relatorios/relatorio_fim_prazo_tramitacao.html

@ -7,7 +7,7 @@
<h2>Fim de Prazo de Tramitações</h2> <h2>Fim de Prazo de Tramitações</h2>
<b>PARÂMETROS DE PESQUISA:<br /></b> <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;Tipo de matéria: {{ tipo }}<br />
&emsp;Status atual: {{ tramitacao__status }}<br /> &emsp;Status atual: {{ tramitacao__status }}<br />
&emsp;Local de origem: {{ tramitacao__unidade_tramitacao_local }}<br /> &emsp;Local de origem: {{ tramitacao__unidade_tramitacao_local }}<br />
@ -18,7 +18,7 @@
{% else %} {% else %}
<tr><td><h3 style="text-align: left;">Foram encontradas {{object_list|length}} matérias com esses parâmetros.</h3></td></tr><br><br> <tr><td><h3 style="text-align: left;">Foram encontradas {{object_list|length}} matérias com esses parâmetros.</h3></td></tr><br><br>
{% endif %} {% endif %}
<table class="table table-bordered table-hover"> <table class="table table-bordered table-hover" border=1>
<thead class="thead-default" > <thead class="thead-default" >
<tr class="active"> <tr class="active">
<th>Matéria</th> <th>Matéria</th>
@ -26,12 +26,29 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for materia in object_list %} {% for materia_em_tramitacao in object_list %}
<tr> <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> <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>
<td>{{materia.ementa}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
@ -39,4 +56,4 @@
{% else %} {% else %}
<tr><td><h3 style="text-align: left;">Nenhuma matéria encontrada com esses parâmetros.</h3></td></tr><br><br> <tr><td><h3 style="text-align: left;">Nenhuma matéria encontrada com esses parâmetros.</h3></td></tr><br><br>
{% endif %} {% endif %}
{% endblock content %} {% endblock content %}

2
sapl/templates/relatorios/relatorio_materias_em_tramitacao.html

@ -51,4 +51,4 @@
{% else %} {% else %}
<h3>Nenhum documento encontrado com essas especificações</h3> <h3>Nenhum documento encontrado com essas especificações</h3>
{% endif %} {% endif %}
{% endblock content %} {% endblock content %}

Loading…
Cancel
Save