From 35223ca37ac3403cd17cd2c0ba9aa080be68128f Mon Sep 17 00:00:00 2001 From: Eliseu Egewarth Date: Thu, 24 Aug 2017 15:47:17 -0300 Subject: [PATCH] Adiciona decorator vigencia_atual e aplica ele nas models Legislatura e SessaoLegislativa Signed-off-by: Eliseu Egewarth --- sapl/decorators.py | 40 ++++++++++++++++++++++++++++++++++++ sapl/parlamentares/models.py | 10 ++++----- 2 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 sapl/decorators.py diff --git a/sapl/decorators.py b/sapl/decorators.py new file mode 100644 index 000000000..6bf61d81b --- /dev/null +++ b/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 diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 8bbc3704f..ce825d88d 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -6,6 +6,7 @@ from django.utils.translation import ugettext_lazy as _ from model_utils import Choices from sapl.base.models import Autor +from sapl.decorators import vigencia_atual from sapl.utils import (INDICADOR_AFASTAMENTO, UF, YES_NO_CHOICES, SaplGenericRelation, get_settings_auth_user_model, intervalos_tem_intersecao, @@ -28,14 +29,12 @@ class Legislatura(models.Model): current_year = datetime.now().year return self.data_inicio.year <= current_year <= self.data_fim.year + @vigencia_atual def __str__(self): - current = ' (%s)' % _('Atual') if self.atual() else '' - - return _('%(numero)sª (%(start)s - %(end)s)%(current)s') % { + return _('%(numero)sª (%(start)s - %(end)s)') % { 'numero': self.numero, 'start': self.data_inicio.year, - 'end': self.data_fim.year, - 'current': current} + 'end': self.data_fim.year} @reversion.register() @@ -64,6 +63,7 @@ class SessaoLegislativa(models.Model): verbose_name_plural = _('Sessões Legislativas') ordering = ['-data_inicio', '-data_fim'] + @vigencia_atual def __str__(self): return _('%(numero)sº (%(inicio)s - %(fim)s)') % { 'numero': self.numero,