Browse Source

HOT-FIX: Corrige problema de PrimeiroAutor em AutoriaMultiCreate

pull/2832/head
Cesar Carvalho 7 years ago
parent
commit
cff0c5b590
  1. 20
      sapl/materia/forms.py
  2. 5
      sapl/materia/views.py

20
sapl/materia/forms.py

@ -1168,7 +1168,7 @@ class DespachoInicialForm(ModelForm):
class AutoriaForm(ModelForm): class AutoriaForm(ModelForm):
tipo_autor = ModelChoiceField(label=_('Tipo Autor'), tipo_autor = ModelChoiceField(label=_('Tipo Autor'),
required=False, required=True,
queryset=TipoAutor.objects.all(), queryset=TipoAutor.objects.all(),
empty_label=_('Selecione'),) empty_label=_('Selecione'),)
@ -1180,6 +1180,10 @@ class AutoriaForm(ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(AutoriaForm, self).__init__(*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), row1 = to_row([('tipo_autor', 4),
('autor', 4), ('autor', 4),
('primeiro_autor', 4)]) ('primeiro_autor', 4)])
@ -1220,7 +1224,7 @@ class AutoriaMultiCreateForm(Form):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
tipo_autor = ModelChoiceField(label=_('Tipo Autor'), tipo_autor = ModelChoiceField(label=_('Tipo Autor'),
required=False, required=True,
queryset=TipoAutor.objects.all(), queryset=TipoAutor.objects.all(),
empty_label=_('Selecione'),) empty_label=_('Selecione'),)
@ -1230,7 +1234,7 @@ class AutoriaMultiCreateForm(Form):
autor = ModelMultipleChoiceField( autor = ModelMultipleChoiceField(
queryset=Autor.objects.all(), queryset=Autor.objects.all(),
label=_('Possiveis Autores'), label=_('Possiveis Autores'),
required=False, required=True,
widget=CheckboxSelectMultiple) widget=CheckboxSelectMultiple)
autores = ModelMultipleChoiceField( autores = ModelMultipleChoiceField(
@ -1238,10 +1242,18 @@ class AutoriaMultiCreateForm(Form):
required=False, required=False,
widget=HiddenInput) widget=HiddenInput)
primeiro_autor = forms.ChoiceField(
required=True,
choices=YES_NO_CHOICES,
label="Primeiro Autor?"
)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*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), ]) row2 = to_row([('autor', 12), ])

5
sapl/materia/views.py

@ -1432,6 +1432,7 @@ class AutoriaCrud(MasterDetailCrud):
materia = MateriaLegislativa.objects.get(id=self.kwargs['pk']) materia = MateriaLegislativa.objects.get(id=self.kwargs['pk'])
initial['data_relativa'] = materia.data_apresentacao initial['data_relativa'] = materia.data_apresentacao
initial['autor'] = [] initial['autor'] = []
initial['materia'] = materia
return initial return initial
class UpdateView(LocalBaseMixin, MasterDetailCrud.UpdateView): class UpdateView(LocalBaseMixin, MasterDetailCrud.UpdateView):
@ -1441,6 +1442,7 @@ class AutoriaCrud(MasterDetailCrud):
initial.update({ initial.update({
'data_relativa': self.object.materia.data_apresentacao, 'data_relativa': self.object.materia.data_apresentacao,
'tipo_autor': self.object.autor.tipo.id, 'tipo_autor': self.object.autor.tipo.id,
'materia': self.object.materia
}) })
return initial return initial
@ -1480,8 +1482,9 @@ class AutoriaMultiCreateView(PermissionRequiredForAppCrudMixin, FormView):
def form_valid(self, form): def form_valid(self, form):
autores_selecionados = form.cleaned_data['autor'] autores_selecionados = form.cleaned_data['autor']
primeiro_autor = form.cleaned_data['primeiro_autor']
for autor in autores_selecionados: 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) return FormView.form_valid(self, form)

Loading…
Cancel
Save