Browse Source

Adiciona decorator vigencia_atual e aplica ele nas models Legislatura e SessaoLegislativa

Signed-off-by: Eliseu Egewarth <eliseuegewarth@gmail.com>
pull/1427/head
Eliseu Egewarth 8 years ago
parent
commit
35223ca37a
  1. 40
      sapl/decorators.py
  2. 10
      sapl/parlamentares/models.py

40
sapl/decorators.py

@ -0,0 +1,40 @@
from datetime import date
from functools import wraps
def vigencia_atual(decorated_method):
"""
concatena a string ' (Atual)' caso a model instancia estiver
em vigência na data atual do servidor
Premissas:
* A classe precisa conter os atributos 'data_inicio' e 'data_fim'.
* 'data_inicio' e 'data_fim' precisam ser do tipo models.DateField
"""
@wraps(decorated_method)
def display_atual(self):
try:
string_displayed = decorated_method(self)
except TypeError:
string_displayed = ""
if hasattr(self, 'data_inicio') and hasattr(self, 'data_fim'):
today = date.today()
e_atual = self.data_inicio <= today <= self.data_fim
string_displayed = "{} {}".format(
string_displayed, "(Atual)" if e_atual else "")
else:
print('{} {}'.format(
"Instance does not have the attributes [{}, {}].".format(
'data_inicio',
'data_fim'
),
"Decorator @{} has been disabled.".format(
vigencia_atual.__name__()
)
)
)
return string_displayed
return display_atual

10
sapl/parlamentares/models.py

@ -6,6 +6,7 @@ from django.utils.translation import ugettext_lazy as _
from model_utils import Choices from model_utils import Choices
from sapl.base.models import Autor from sapl.base.models import Autor
from sapl.decorators import vigencia_atual
from sapl.utils import (INDICADOR_AFASTAMENTO, UF, YES_NO_CHOICES, from sapl.utils import (INDICADOR_AFASTAMENTO, UF, YES_NO_CHOICES,
SaplGenericRelation, get_settings_auth_user_model, SaplGenericRelation, get_settings_auth_user_model,
intervalos_tem_intersecao, intervalos_tem_intersecao,
@ -28,14 +29,12 @@ class Legislatura(models.Model):
current_year = datetime.now().year current_year = datetime.now().year
return self.data_inicio.year <= current_year <= self.data_fim.year return self.data_inicio.year <= current_year <= self.data_fim.year
@vigencia_atual
def __str__(self): def __str__(self):
current = ' (%s)' % _('Atual') if self.atual() else '' return _('%(numero)sª (%(start)s - %(end)s)') % {
return _('%(numero)sª (%(start)s - %(end)s)%(current)s') % {
'numero': self.numero, 'numero': self.numero,
'start': self.data_inicio.year, 'start': self.data_inicio.year,
'end': self.data_fim.year, 'end': self.data_fim.year}
'current': current}
@reversion.register() @reversion.register()
@ -64,6 +63,7 @@ class SessaoLegislativa(models.Model):
verbose_name_plural = _('Sessões Legislativas') verbose_name_plural = _('Sessões Legislativas')
ordering = ['-data_inicio', '-data_fim'] ordering = ['-data_inicio', '-data_fim']
@vigencia_atual
def __str__(self): def __str__(self):
return _('%(numero)sº (%(inicio)s - %(fim)s)') % { return _('%(numero)sº (%(inicio)s - %(fim)s)') % {
'numero': self.numero, 'numero': self.numero,

Loading…
Cancel
Save