Browse Source

Mudanças significativas no código

pull/1323/head
Eduardo Calil 9 years ago
parent
commit
b92fc97989
  1. 17
      sapl/materia/forms.py
  2. 47
      sapl/materia/views.py
  3. 14
      sapl/templates/materia/autoria_form.html

17
sapl/materia/forms.py

@ -719,13 +719,20 @@ class AutoriaForm(ModelForm):
if self.errors: if self.errors:
return self.errors return self.errors
if not self.instance.pk: if Autoria.objects.filter(
if Autoria.objects.filter( materia=self.instance.materia,
materia=self.instance.materia, autor=self.cleaned_data['autor'],
autor=self.cleaned_data['autor'], ).exists():
).exists(): if not self.instance.pk:
msg = _('Esse Autor já foi cadastrado.') msg = _('Esse Autor já foi cadastrado.')
raise ValidationError(msg) raise ValidationError(msg)
else:
autoria = Autoria.objects.get(
materia=self.instance.materia,
autor=self.cleaned_data['autor'])
if autoria != self.instance:
msg = _('Esse Autor já foi cadastrado.')
raise ValidationError(msg)
return self.cleaned_data return self.cleaned_data

47
sapl/materia/views.py

@ -1211,32 +1211,17 @@ def atualizar_autores(request):
except ObjectDoesNotExist: except ObjectDoesNotExist:
pass pass
else: else:
manter_autor = False
if 'tipo_autor' in request.GET and request.GET['tipo_autor']: if 'tipo_autor' in request.GET and request.GET['tipo_autor']:
tipo_autor = request.GET['tipo_autor'] tipo_autor = request.GET['tipo_autor']
autores = autores_ativos(materia, tipo=tipo_autor) autores = autores_ativos(materia, tipo=tipo_autor)
# Se já houver algum autor selecionado (ex: view de update)
# no campo correspondente e caso o TipoAutor selecionado
# seja o mesmo do autor que está aualmente marcado
# deve ser enviado um sinal (manter autor) para que o
# javascript mantenha este selecionado
if 'autor_id' in request.GET and request.GET['autor_id']:
try:
autor = Autor.objects.get(id=request.GET['autor_id'])
except ObjectDoesNotExist:
pass
else:
if autor.tipo.id == int(tipo_autor):
manter_autor = True
else: else:
autores = autores_ativos(materia) autores = autores_ativos(materia)
empty_option = [('', '---------')]
autores_list = [(a.id, a.__str__()) for a in autores] autores_list = [(a.id, a.__str__()) for a in autores]
return JsonResponse({'lista_autores': autores_list, return JsonResponse({'lista_autores': empty_option + autores_list})
'manter_autor': manter_autor})
return JsonResponse({}) return JsonResponse({})
@ -1260,13 +1245,20 @@ class AutoriaCrud(MasterDetailCrud):
materia = MateriaLegislativa.objects.get( materia = MateriaLegislativa.objects.get(
id=int(kwargs['root_pk'])) id=int(kwargs['root_pk']))
autores_ativos_list = autores_ativos(materia) if context['form']['tipo_autor'].data:
autores_ativos_list = autores_ativos(
materia,
context['form']['tipo_autor'].data
)
else:
autores_ativos_list = autores_ativos(materia)
autores = [] autores = []
for a in autores_ativos_list: for a in autores_ativos_list:
autores.append([a.id, a.__str__()]) autores.append([a.id, a.__str__()])
context['form'].fields['autor'].choices = autores empty_option = [('', '---------')]
context['form'].fields['autor'].choices = empty_option + autores
return context return context
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
@ -1289,13 +1281,26 @@ class AutoriaCrud(MasterDetailCrud):
materia = MateriaLegislativa.objects.get( materia = MateriaLegislativa.objects.get(
id=int(kwargs['root_pk'])) id=int(kwargs['root_pk']))
autores_ativos_list = autores_ativos(materia) if context['form']['tipo_autor'].data is None:
autores_ativos_list = autores_ativos(
materia,
str(context['object'].autor.tipo.id))
else:
if context['form']['tipo_autor'].data == '':
autores_ativos_list = autores_ativos(
materia)
else:
autores_ativos_list = autores_ativos(
materia,
context['form']['tipo_autor'].data)
autores = [] autores = []
for a in autores_ativos_list: for a in autores_ativos_list:
autores.append([a.id, a.__str__()]) autores.append([a.id, a.__str__()])
context['form'].fields['autor'].choices = autores empty_option = [('', '---------')]
context['form'].fields['autor'].choices = empty_option + autores
return context return context
class ListView(MasterDetailCrud.ListView): class ListView(MasterDetailCrud.ListView):

14
sapl/templates/materia/autoria_form.html

@ -10,13 +10,12 @@
function atualizar_autores() { function atualizar_autores() {
var tipo_autor = $("#id_tipo_autor").val(); var tipo_autor = $("#id_tipo_autor").val();
var materia_id = {{ root_pk }}; var materia_id = {{ root_pk }};
var autor_id = $("#id_autor").val();
// Limpa a listagem para atualizar // Limpa a listagem para atualizar
$("#id_autor").find("option").remove(); $("#id_autor").find("option").remove();
$.get("/materia/autoria/atualizar-autores", $.get("/materia/autoria/atualizar-autores",
{tipo_autor: tipo_autor, materia_id: materia_id, autor_id: autor_id}, {tipo_autor: tipo_autor, materia_id: materia_id},
function(data) { function(data) {
// Caso não venha nenhum dado da requisição, retorna null // Caso não venha nenhum dado da requisição, retorna null
if ($.isEmptyObject(data)){ if ($.isEmptyObject(data)){
@ -26,15 +25,12 @@
lista_autores = data['lista_autores']; lista_autores = data['lista_autores'];
// Atualiza a listagem de autores // Atualiza a listagem de autores
$.each(lista_autores, function(index, value) { $.each(lista_autores, function(index, obj) {
$('#id_autor').append( $("#id_autor").append($("<option></option>")
'<option value="' + value[0] + '">' + .attr("value", obj[0])
value[1] + '</option>'); .text(obj[1]));
}); });
if (data['manter_autor'] == true){
$('#id_autor').val(autor_id);
}
}); });
} }
$("#id_tipo_autor").change(function () { $("#id_tipo_autor").change(function () {

Loading…
Cancel
Save