mirror of https://github.com/interlegis/sapl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
2.0 KiB
52 lines
2.0 KiB
import comissoes
|
|
import materia
|
|
import sessao
|
|
|
|
from .migration import appconfs, get_renames, legacy_app
|
|
|
|
RENAMING_IGNORED_MODELS = [
|
|
comissoes.models.Composicao,
|
|
]
|
|
|
|
RENAMING_IGNORED_FIELDS = [
|
|
(comissoes.models.Participacao, {'composicao'}),
|
|
(materia.models.Proposicao, {'documento'}),
|
|
(materia.models.TipoProposicao, {'tipo_documento'}),
|
|
(sessao.models.SessaoPlenaria, {'finalizada',
|
|
'upload_pauta',
|
|
'upload_ata',
|
|
'iniciada'}),
|
|
]
|
|
|
|
|
|
def test_get_renames():
|
|
field_renames, model_renames = get_renames()
|
|
all_models = {m for ac in appconfs for m in ac.get_models()}
|
|
for model in all_models:
|
|
field_names = {f.name for f in model._meta.fields if f.name != 'id'}
|
|
if model not in field_renames:
|
|
# check ignored models in renaming
|
|
assert model in RENAMING_IGNORED_MODELS
|
|
else:
|
|
renamed = set(field_renames[model].keys())
|
|
|
|
match_msg_template = 'All %s field names mentioned in renames ' \
|
|
'must match a %s field'
|
|
|
|
# all renamed field references correspond to a current field
|
|
assert renamed <= field_names, \
|
|
match_msg_template % ('new', 'current')
|
|
|
|
# ignored fields are explicitly listed
|
|
missing_in_renames = field_names - renamed
|
|
if missing_in_renames:
|
|
assert (model, missing_in_renames) in \
|
|
RENAMING_IGNORED_FIELDS, \
|
|
'Field(s) missing in renames but not explicitly listed'
|
|
|
|
# all old names correspond to a legacy field
|
|
legacy_model = legacy_app.get_model(
|
|
model_renames.get(model, model.__name__))
|
|
legacy_field_names = {f.name for f in legacy_model._meta.fields}
|
|
assert set(field_renames[model].values()) <= legacy_field_names, \
|
|
match_msg_template % ('old', 'legacy')
|
|
|