mirror of https://github.com/interlegis/sapl.git
Marcio Mazza
7 years ago
3 changed files with 205 additions and 6 deletions
@ -1,6 +1,19 @@ |
|||||
import inspect |
import inspect |
||||
|
|
||||
|
from sapl.base.models import Autor |
||||
|
from sapl.legacy.migration import appconfs |
||||
|
|
||||
|
|
||||
def getsourcelines(model): |
def getsourcelines(model): |
||||
return [line.rstrip('\n').decode('utf-8') |
return [line.rstrip('\n').decode('utf-8') |
||||
for line in inspect.getsourcelines(model)[0]] |
for line in inspect.getsourcelines(model)[0]] |
||||
|
|
||||
|
|
||||
|
def get_models_com_referencia_a_autor(): |
||||
|
|
||||
|
def tem_referencia_a_autor(model): |
||||
|
return any(getattr(field, 'related_model', None) == Autor |
||||
|
for field in model._meta.get_fields()) |
||||
|
|
||||
|
return [model for app in appconfs for model in app.models.values() |
||||
|
if tem_referencia_a_autor(model)] |
||||
|
@ -0,0 +1,55 @@ |
|||||
|
from random import shuffle |
||||
|
|
||||
|
from .migration import (get_autorias_sem_repeticoes, |
||||
|
get_reapontamento_de_autores_repetidos) |
||||
|
|
||||
|
|
||||
|
def test_unifica_autores_repetidos_no_legado(): |
||||
|
|
||||
|
# cod_parlamentar, cod_autor |
||||
|
autores = [[0, 0], |
||||
|
[1, 10], |
||||
|
[1, 11], |
||||
|
[1, 12], |
||||
|
[2, 20], |
||||
|
[2, 21], |
||||
|
[2, 22], |
||||
|
[3, 30], |
||||
|
[3, 31], |
||||
|
[4, 40], |
||||
|
[5, 50]] |
||||
|
reapontamento, apagar = get_reapontamento_de_autores_repetidos(autores) |
||||
|
assert reapontamento == {10: 10, 11: 10, 12: 10, |
||||
|
20: 20, 21: 20, 22: 20, |
||||
|
30: 30, 31: 30} |
||||
|
assert sorted(apagar) == [11, 12, 21, 22, 31] |
||||
|
|
||||
|
# cod_autor, cod_materia, ind_primeiro_autor |
||||
|
autoria = [[10, 111, 0], # não é repetida, mas envolve um autor repetido |
||||
|
|
||||
|
[22, 222, 1], # não é repetida, mas envolve um autor repetido |
||||
|
|
||||
|
[10, 777, 1], # repetição c ind_primeiro_autor==1 no INÍCIO |
||||
|
[10, 777, 0], |
||||
|
[11, 777, 0], |
||||
|
[12, 777, 0], |
||||
|
|
||||
|
[30, 888, 0], # repetição c ind_primeiro_autor==1 no MEIO |
||||
|
[31, 888, 1], |
||||
|
[30, 888, 0], |
||||
|
|
||||
|
[11, 999, 0], # repetição SEM ind_primeiro_autor==1 |
||||
|
[12, 999, 0], |
||||
|
|
||||
|
[21, 999, 0], # repetição SEM ind_primeiro_autor==1 |
||||
|
[22, 999, 0], |
||||
|
] |
||||
|
shuffle(autoria) # não devemos supor ordem na autoria |
||||
|
nova_autoria = get_autorias_sem_repeticoes(autoria, reapontamento) |
||||
|
assert nova_autoria == sorted([(10, 111, 0), |
||||
|
(20, 222, 1), |
||||
|
(10, 777, 1), |
||||
|
(30, 888, 1), |
||||
|
(10, 999, 0), |
||||
|
(20, 999, 0), |
||||
|
]) |
Loading…
Reference in new issue