diff --git a/compilacao/templatetags/compilacao_filters.py b/compilacao/templatetags/compilacao_filters.py index 26e6714a7..5e32ee770 100644 --- a/compilacao/templatetags/compilacao_filters.py +++ b/compilacao/templatetags/compilacao_filters.py @@ -1,4 +1,5 @@ from django import template +from django.core.signing import Signer from django.db.models import Q from compilacao.models import Dispositivo @@ -24,7 +25,7 @@ def dispositivo_desativado(dispositivo, inicio_vigencia, fim_vigencia): if inicio_vigencia and fim_vigencia: if dispositivo.fim_vigencia is None: return '' - if dispositivo.fim_vigencia >= fim_vigencia: + elif dispositivo.fim_vigencia >= fim_vigencia: return '' return 'desativado' @@ -53,3 +54,10 @@ def set_nivel_old(view, value): @register.simple_tag def close_div(value_max, value_min): return '' * (int(value_max) - int(value_min) + 1) + + +@register.filter +def get_sign_vigencia(value): + string = "%s,%s" % (value.inicio_vigencia, value.fim_vigencia) + signer = Signer() + return signer.sign(str(string)) diff --git a/compilacao/urls.py b/compilacao/urls.py index 3adad4ef6..fede9a117 100644 --- a/compilacao/urls.py +++ b/compilacao/urls.py @@ -5,10 +5,12 @@ from compilacao import views urlpatterns = [ url(r'^norma/(?P[0-9]+)/compilacao/$', views.CompilacaoView.as_view(), name='compilacao'), - url(r'^norma/(?P[0-9]+)/compilacao/vigencia/' + - '(?P[0-9]+)/(?P[0-9]+)/(?P[0-9]+)/' + - '(?P[0-9]+)/(?P[0-9]+)/(?P[0-9]+)/$', + + + + url(r'^norma/(?P[0-9]+)/compilacao/vigencia/(?P.+)/$', views.CompilacaoView.as_view(), name='vigencia'), + url(r'^norma/(?P[0-9]+)/compilacao/(?P[0-9]+)/$', views.DispositivoView.as_view(), name='dispositivo'), ] diff --git a/compilacao/views.py b/compilacao/views.py index 78aaa5fed..a2b299a6d 100644 --- a/compilacao/views.py +++ b/compilacao/views.py @@ -1,7 +1,9 @@ from collections import OrderedDict from datetime import timedelta, datetime, date +from django.core.signing import Signer from django.db.models import Q +from django.utils.dateparse import parse_date from django.views.generic.list import ListView from compilacao.models import Dispositivo @@ -32,7 +34,7 @@ class CompilacaoView(ListView): inicio_vigencia = None fim_vigencia = None - def get_queryset(self): + def get_queryset1(self): self.flag_alteradora = -1 self.flag_nivel_ini = 0 self.flag_nivel_old = -1 @@ -49,7 +51,34 @@ class CompilacaoView(ListView): int(self.kwargs['emonth']), int(self.kwargs['eday'])) return Dispositivo.objects.filter( - Q(inicio_vigencia__lte=self.fim_vigencia), + inicio_vigencia__lte=self.fim_vigencia, + ordem__gt=0, + norma_id=self.kwargs['norma_id'], + ).select_related(*DISPOSITIVO_SELECT_RELATED) + else: + return Dispositivo.objects.filter( + ordem__gt=0, + norma_id=self.kwargs['norma_id'] + ).select_related(*DISPOSITIVO_SELECT_RELATED) + + def get_queryset(self): + self.flag_alteradora = -1 + self.flag_nivel_ini = 0 + self.flag_nivel_old = -1 + + self.inicio_vigencia = None + self.fim_vigencia = None + if 'sign' in self.kwargs: + signer = Signer() + try: + string = signer.unsign(self.kwargs['sign']).split(',') + self.inicio_vigencia = parse_date(string[0]) + self.fim_vigencia = parse_date(string[1]) + except: + return{} + + return Dispositivo.objects.filter( + inicio_vigencia__lte=self.fim_vigencia, ordem__gt=0, norma_id=self.kwargs['norma_id'], ).select_related(*DISPOSITIVO_SELECT_RELATED) @@ -106,7 +135,7 @@ class CompilacaoView(ListView): self.itens_de_vigencia[9999] = [item, ] if len(self.itens_de_vigencia.keys()) <= 1: - return{} + return {} self.itens_de_vigencia = OrderedDict( sorted(self.itens_de_vigencia.items(), key=lambda t: t[0])) diff --git a/static/styles/compilacao.scss b/static/styles/compilacao.scss index b1c1cde84..e56f18d0a 100644 --- a/static/styles/compilacao.scss +++ b/static/styles/compilacao.scss @@ -120,6 +120,7 @@ .dispositivo .bloco_alteracao { margin-left: 5em; + font-style: italic; } .dispositivo .bloco_alteracao:hover a { @@ -132,23 +133,32 @@ .dispositivo .bloco_alteracao table td { color: #018 !important; } - - + .compilacao .top-bar-section li:not(.has-form) a:not(.button), .compilacao .top-bar { line-height: 1.6rem; height: auto; + background: #2980B9; + z-index:1; } .compilacao .top-bar-section li:not(.has-form) a:not(.button) { padding: 0 0.43333rem; } .compilacao ul.nav { - background: #34495E; + background: #2980B9; display:block; width: 100%; + z-index:1; } .compilacao .vigencias{ - margin: 2em 0 0 0; + margin: 2.5em 0 0 0; + transition: all .4s ease-in-out; +} + +.compilacao .fixed{ + z-index:98; + transition: all .4s ease-in-out; + } diff --git a/templates/compilacao/bloco_alteracao.html b/templates/compilacao/bloco_alteracao.html index 1051b0b6c..1aae4d260 100644 --- a/templates/compilacao/bloco_alteracao.html +++ b/templates/compilacao/bloco_alteracao.html @@ -3,7 +3,7 @@ {% spaceless %}
- {{ ch.tipo_dispositivo.rotulo_prefixo_html|safe }}{{ ch.rotulo }}{{ ch.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ ch.tipo_dispositivo.texto_prefixo_html|safe }}{{ ch.texto|safe }} + {{ ch.tipo_dispositivo.rotulo_prefixo_html|safe }}{{ ch.rotulo }}{{ ch.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ ch.tipo_dispositivo.texto_prefixo_html|safe }}{{ ch.texto|safe }}
{% endspaceless %} diff --git a/templates/compilacao/index.html b/templates/compilacao/index.html index f5d059fd2..cf7d32fe9 100644 --- a/templates/compilacao/index.html +++ b/templates/compilacao/index.html @@ -2,52 +2,71 @@ {% load i18n %} {% load compilacao_filters %} - {% block title%}

{{ view.get_norma }}

{% endblock %} {% block base_content %} -
+ + +
+ {% for key, values in view.get_vigencias.items %} + {% if forloop.first %}
+ {%endif%} + {% endfor %} + +{% if view.inicio_vigencia != None and view.fim_vigencia != None %} +
+ {% trans 'Vigência entre'%} {{view.inicio_vigencia}} {% trans 'e'%} {{view.fim_vigencia}}. +{%endif%} + {% include 'compilacao/template_render_bloco.html'%}