Browse Source

change format of timeline urls of effective dates

pull/6/head
LeandroRoberto 9 years ago
parent
commit
92da9de61c
  1. 10
      compilacao/templatetags/compilacao_filters.py
  2. 8
      compilacao/urls.py
  3. 35
      compilacao/views.py
  4. 18
      static/styles/compilacao.scss
  5. 2
      templates/compilacao/bloco_alteracao.html
  6. 77
      templates/compilacao/index.html

10
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 '</div>' * (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))

8
compilacao/urls.py

@ -5,10 +5,12 @@ from compilacao import views
urlpatterns = [
url(r'^norma/(?P<norma_id>[0-9]+)/compilacao/$',
views.CompilacaoView.as_view(), name='compilacao'),
url(r'^norma/(?P<norma_id>[0-9]+)/compilacao/vigencia/' +
'(?P<iyear>[0-9]+)/(?P<imonth>[0-9]+)/(?P<iday>[0-9]+)/' +
'(?P<eyear>[0-9]+)/(?P<emonth>[0-9]+)/(?P<eday>[0-9]+)/$',
url(r'^norma/(?P<norma_id>[0-9]+)/compilacao/vigencia/(?P<sign>.+)/$',
views.CompilacaoView.as_view(), name='vigencia'),
url(r'^norma/(?P<norma_id>[0-9]+)/compilacao/(?P<dispositivo_id>[0-9]+)/$',
views.DispositivoView.as_view(), name='dispositivo'),
]

35
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]))

18
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;
}

2
templates/compilacao/bloco_alteracao.html

@ -3,7 +3,7 @@
{% spaceless %}
<div class="dispositivo" id="d{{ch.id}}">
<div class="{{ ch.tipo_dispositivo.class_css }}" id="id{{ch.id}}" nivel="{{ch.nivel}}">
{{ ch.tipo_dispositivo.rotulo_prefixo_html|safe }}<a name="ch.pk" href="{%url 'compilacao' ch.norma.pk %}#{{ch.pk}}">{{ ch.rotulo }}</a>{{ ch.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ ch.tipo_dispositivo.texto_prefixo_html|safe }}{{ ch.texto|safe }}
{{ ch.tipo_dispositivo.rotulo_prefixo_html|safe }}<a name="{{ch.pk}}" href="{%url 'compilacao' ch.norma.pk %}#{{ch.pk}}">{{ ch.rotulo }}</a>{{ ch.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ ch.tipo_dispositivo.texto_prefixo_html|safe }}{{ ch.texto|safe }}
</div>
</div>
{% endspaceless %}

77
templates/compilacao/index.html

@ -2,52 +2,71 @@
{% load i18n %}
{% load compilacao_filters %}
{% block title%}
<h1>{{ view.get_norma }}</h1>
{% endblock %}
{% block base_content %}
<div class="compilacao">
<script type="text/javascript">
$( window ).scroll(function() {
if (window.pageYOffset <= 180) {
$( "section.vigencias" ).removeClass("fixed");
}
else if (!$( "section.vigencias" ).hasClass("fixed")){
$( "section.vigencias" ).addClass("fixed");
}
});
</script>
<div class="compilacao">
{% for key, values in view.get_vigencias.items %}
{% if forloop.first %}
<section class="vigencias">
<nav class="top-bar" data-topbar="" role="navigation">
<section class="top-bar-section">
<ul class="nav left">
{% for key, values in view.get_vigencias.items %}
<li class="nav__item has-dropdown">
{%endif%}
<li class="nav__item has-dropdown">
{% if forloop.first %}
{% for dispositivo in values %}
<a class="nav__link" href="{%url 'vigencia' dispositivo.norma.pk dispositivo|get_sign_vigencia %}" title="{% trans 'Vigência entre'%} {{dispositivo.inicio_vigencia}} {% trans 'e'%} {{dispositivo.fim_vigencia}}">{% trans 'Norma Original'%}</a>
{% endfor %}
{% elif forloop.last %}
{% for dispositivo in values %}
<a class="nav__link" href="{%url 'compilacao' dispositivo.norma.pk %}" title="{% trans 'Compilação atual'%}.&#013;{% trans 'Vigência a partir de'%} {{dispositivo.inicio_vigencia}}&#013;{{dispositivo.norma_publicada}}">{% trans 'Texto em Vigência'%}</a>
{% endfor %}
{% else %}
<a class="nav__link">{{ key }}</a>
{%endif%}
{% if forloop.first %}
{% if not forloop.first and not forloop.last %}
<ul class="nav__sub-nav dropdown">
{% for dispositivo in values %}
<a class="nav__link" href="{%url 'vigencia' dispositivo.norma.pk dispositivo.inicio_vigencia.year dispositivo.inicio_vigencia.month dispositivo.inicio_vigencia.day dispositivo.fim_vigencia.year dispositivo.fim_vigencia.month dispositivo.fim_vigencia.day %}" title="{{ dispositivo.norma }}">{% trans 'Norma Original'%}</a>
<li class="nav__sub-item">
{% if not forloop.parentloop.first %}
<a class="nav__sub-link" href="{%url 'vigencia' dispositivo.norma.pk dispositivo|get_sign_vigencia %}" title="{{ dispositivo.norma_publicada }}">{% trans 'Vigência entre'%} {{dispositivo.inicio_vigencia}} {% trans 'e'%} {{dispositivo.fim_vigencia}}</a>
{%endif%}
</li>
{% endfor %}
{% elif forloop.last %}
{% for dispositivo in values %}
<a class="nav__link" href="{%url 'compilacao' dispositivo.norma.pk %}" title="{% trans 'Compilação atual'%} - {% trans 'Vigência a partir de'%} {{dispositivo.inicio_vigencia}} ">{% trans 'Texto em Vigência'%}</a>
{% endfor %}
{% else %}
<a class="nav__link">{{ key }}</a>
{%endif%}
{% if not forloop.first and not forloop.last %}
<ul class="nav__sub-nav dropdown">
{% for dispositivo in values %}
<li class="nav__sub-item">
{% if not forloop.parentloop.first %}
<a class="nav__sub-link" href="{%url 'vigencia' dispositivo.norma.pk dispositivo.inicio_vigencia.year dispositivo.inicio_vigencia.month dispositivo.inicio_vigencia.day dispositivo.fim_vigencia.year dispositivo.fim_vigencia.month dispositivo.fim_vigencia.day %}" title="{{ dispositivo.norma_publicada }}">{% trans 'Vigência entre'%} {{dispositivo.inicio_vigencia}} {% trans 'e'%} {{dispositivo.fim_vigencia}}</a>
{%endif%}
</li>
{% endfor %}
</ul>
{%endif%}
</li>
{% endfor %}
</ul>
{%endif%}
</li>
{% if forloop.last %}
</ul>
</section>
</nav>
</section>
{%endif%}
{% endfor %}
{% if view.inicio_vigencia != None and view.fim_vigencia != None %}
<br>
{% trans 'Vigência entre'%} <b>{{view.inicio_vigencia}}</b> {% trans 'e'%} <b>{{view.fim_vigencia}}</b>.
{%endif%}
{% include 'compilacao/template_render_bloco.html'%}
</div>

Loading…
Cancel
Save