diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index f679a9739..8b33a7f55 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -1181,8 +1181,10 @@ class AutoriaForm(ModelForm): super(AutoriaForm, self).__init__(*args, **kwargs) self.fields['primeiro_autor'].required = True - materia = kwargs['initial']['materia'] - self.fields['primeiro_autor'].initial = Autoria.objects.filter(materia=materia).count() == 0 + + if 'initial' in kwargs and 'materia' in kwargs['initial']: + materia = kwargs['initial']['materia'] + self.fields['primeiro_autor'].initial = Autoria.objects.filter(materia=materia).count() == 0 row1 = to_row([('tipo_autor', 4), ('autor', 4), @@ -1251,7 +1253,8 @@ class AutoriaMultiCreateForm(Form): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields['primeiro_autor'].initial = kwargs['initial']['autores'].count() == 0 + if 'initial' in kwargs and 'autores' in kwargs['initial']: + self.fields['primeiro_autor'].initial = kwargs['initial']['autores'].count() == 0 row1 = to_row([('tipo_autor', 10), ('primeiro_autor', 2)]) diff --git a/sapl/materia/tests/test_materia.py b/sapl/materia/tests/test_materia.py index e12b03dff..dabf29bed 100644 --- a/sapl/materia/tests/test_materia.py +++ b/sapl/materia/tests/test_materia.py @@ -243,6 +243,7 @@ def test_autoria_submit(admin_client): reverse('sapl.materia:autoria_create', kwargs={'pk': materia_principal.pk}), {'autor': autor.pk, + 'tipo_autor': tipo_autor.pk, 'primeiro_autor': True, 'materia_id': materia_principal.pk, }, follow=True) diff --git a/sapl/materia/tests/test_materia_form.py b/sapl/materia/tests/test_materia_form.py index e29d89815..215f114a2 100644 --- a/sapl/materia/tests/test_materia_form.py +++ b/sapl/materia/tests/test_materia_form.py @@ -129,9 +129,11 @@ def test_valida_campos_obrigatorios_autoria_form(): errors = form.errors - assert errors['autor'] == [_('Este campo é obrigatório.')] + assert len(errors) == 3 - assert len(errors) == 1 + assert errors['tipo_autor'] == [_('Este campo é obrigatório.')] + assert errors['autor'] == [_('Este campo é obrigatório.')] + assert errors['primeiro_autor'] == [_('Este campo é obrigatório.')] @pytest.mark.django_db(transaction=False) @@ -142,9 +144,12 @@ def test_valida_campos_obrigatorios_autoria_multicreate_form(): errors = form.errors - assert errors['__all__'] == [_('Ao menos um autor deve ser selecionado para inclusão')] + assert len(errors) == 4 - assert len(errors) == 1 + assert errors['__all__'] == [_('Ao menos um autor deve ser selecionado para inclusão')] + assert errors['tipo_autor'] == [_('Este campo é obrigatório.')] + assert errors['autor'] == [_('Este campo é obrigatório.')] + assert errors['primeiro_autor'] == [_('Este campo é obrigatório.')] @pytest.mark.django_db(transaction=False)