diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 6ad0fa11c..f679a9739 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -1168,7 +1168,7 @@ class DespachoInicialForm(ModelForm): class AutoriaForm(ModelForm): tipo_autor = ModelChoiceField(label=_('Tipo Autor'), - required=False, + required=True, queryset=TipoAutor.objects.all(), empty_label=_('Selecione'),) @@ -1180,6 +1180,10 @@ class AutoriaForm(ModelForm): def __init__(self, *args, **kwargs): 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 + row1 = to_row([('tipo_autor', 4), ('autor', 4), ('primeiro_autor', 4)]) @@ -1220,7 +1224,7 @@ class AutoriaMultiCreateForm(Form): logger = logging.getLogger(__name__) tipo_autor = ModelChoiceField(label=_('Tipo Autor'), - required=False, + required=True, queryset=TipoAutor.objects.all(), empty_label=_('Selecione'),) @@ -1230,7 +1234,7 @@ class AutoriaMultiCreateForm(Form): autor = ModelMultipleChoiceField( queryset=Autor.objects.all(), label=_('Possiveis Autores'), - required=False, + required=True, widget=CheckboxSelectMultiple) autores = ModelMultipleChoiceField( @@ -1238,10 +1242,18 @@ class AutoriaMultiCreateForm(Form): required=False, widget=HiddenInput) + primeiro_autor = forms.ChoiceField( + required=True, + choices=YES_NO_CHOICES, + label="Primeiro Autor?" + ) + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - row1 = to_row([('tipo_autor', 12), ]) + self.fields['primeiro_autor'].initial = kwargs['initial']['autores'].count() == 0 + + row1 = to_row([('tipo_autor', 10), ('primeiro_autor', 2)]) row2 = to_row([('autor', 12), ]) diff --git a/sapl/materia/views.py b/sapl/materia/views.py index f5d80ce11..4d31993dd 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1432,6 +1432,7 @@ class AutoriaCrud(MasterDetailCrud): materia = MateriaLegislativa.objects.get(id=self.kwargs['pk']) initial['data_relativa'] = materia.data_apresentacao initial['autor'] = [] + initial['materia'] = materia return initial class UpdateView(LocalBaseMixin, MasterDetailCrud.UpdateView): @@ -1441,6 +1442,7 @@ class AutoriaCrud(MasterDetailCrud): initial.update({ 'data_relativa': self.object.materia.data_apresentacao, 'tipo_autor': self.object.autor.tipo.id, + 'materia': self.object.materia }) return initial @@ -1480,8 +1482,9 @@ class AutoriaMultiCreateView(PermissionRequiredForAppCrudMixin, FormView): def form_valid(self, form): autores_selecionados = form.cleaned_data['autor'] + primeiro_autor = form.cleaned_data['primeiro_autor'] for autor in autores_selecionados: - Autoria.objects.create(materia=self.materia, autor=autor) + Autoria.objects.create(materia=self.materia, autor=autor, primeiro_autor=primeiro_autor) return FormView.form_valid(self, form)