Browse Source

Recupera partidos dentro de um mandato

pull/298/head
Marcio Mazza 9 years ago
parent
commit
adf8d03cd3
  1. 18
      parlamentares/models.py
  2. 31
      parlamentares/test_mandato.py
  3. 6
      sapl/utils.py

18
parlamentares/models.py

@ -1,10 +1,11 @@
import datetime
from datetime import datetime
from django.db import models
from django.utils.translation import ugettext_lazy as _
from model_utils import Choices
from sapl.utils import UF, YES_NO_CHOICES, restringe_tipos_de_arquivo_img
from sapl.utils import (UF, YES_NO_CHOICES, intervalos_tem_intersecao,
restringe_tipos_de_arquivo_img)
class Legislatura(models.Model):
@ -18,7 +19,7 @@ class Legislatura(models.Model):
def __str__(self):
# XXX Usar id mesmo? Ou criar campo para nº legislatura?
current_date = datetime.datetime.now().year
current_date = datetime.now().year
if(self.data_inicio.year <= current_date and
self.data_fim.year >= current_date):
current = ' (%s)' % _('Atual')
@ -356,6 +357,17 @@ class Mandato(models.Model):
'parlamentar': self.parlamentar, 'legislatura': self.legislatura
}
def get_partidos(self):
filicacoes = Filiacao.objects.filter(
parlamentar=self.parlamentar).order_by('data')
return [f.partido
for f in filicacoes
if intervalos_tem_intersecao(
self.legislatura.data_inicio,
self.legislatura.data_fim,
f.data,
f.data_desfiliacao or datetime.max.date())]
class CargoMesa(models.Model):
# TODO M2M ????

31
parlamentares/test_mandato.py

@ -0,0 +1,31 @@
from datetime import datetime
import pytest
from model_mommy import mommy
from .models import Filiacao, Legislatura, Mandato
pytestmark = pytest.mark.django_db
def data(valor):
return datetime.strptime(valor, '%Y-%m-%d').date()
def test_filiacoes():
legislatura = mommy.make(Legislatura,
data_inicio=data('2001-01-01'),
data_fim=data('2001-12-31'),
)
mandato = mommy.make(Mandato, legislatura=legislatura)
f1_fora, f2, f3, f4 = [mommy.make(Filiacao,
parlamentar=mandato.parlamentar,
data=ini,
data_desfiliacao=fim)
for ini, fim in (
(data('2000-01-01'), data('2000-12-31')),
(data('2000-01-01'), data('2001-03-01')),
(data('2001-03-02'), data('2001-10-01')),
(data('2001-10-02'), None),
)]
assert mandato.get_partidos() == [f2.partido, f3.partido, f4.partido]

6
sapl/utils.py

@ -184,3 +184,9 @@ restringe_tipos_de_arquivo_txt = fabrica_validador_de_tipos_de_arquivo(
TIPOS_TEXTO_PERMITIDOS, 'restringe_tipos_de_arquivo_txt')
restringe_tipos_de_arquivo_img = fabrica_validador_de_tipos_de_arquivo(
TIPOS_IMG_PERMITIDOS, 'restringe_tipos_de_arquivo_img')
def intervalos_tem_intersecao(a_inicio, a_fim, b_inicio, b_fim):
maior_inicio = max(a_inicio, b_inicio)
menor_fim = min(a_fim, b_fim)
return maior_inicio <= menor_fim

Loading…
Cancel
Save