Browse Source

Mudanças significativas no código

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

9
sapl/materia/forms.py

@ -719,11 +719,18 @@ class AutoriaForm(ModelForm):
if self.errors:
return self.errors
if not self.instance.pk:
if Autoria.objects.filter(
materia=self.instance.materia,
autor=self.cleaned_data['autor'],
).exists():
if not self.instance.pk:
msg = _('Esse Autor já foi cadastrado.')
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)

45
sapl/materia/views.py

@ -1211,32 +1211,17 @@ def atualizar_autores(request):
except ObjectDoesNotExist:
pass
else:
manter_autor = False
if 'tipo_autor' in request.GET and request.GET['tipo_autor']:
tipo_autor = request.GET['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:
autores = autores_ativos(materia)
empty_option = [('', '---------')]
autores_list = [(a.id, a.__str__()) for a in autores]
return JsonResponse({'lista_autores': autores_list,
'manter_autor': manter_autor})
return JsonResponse({'lista_autores': empty_option + autores_list})
return JsonResponse({})
@ -1260,13 +1245,20 @@ class AutoriaCrud(MasterDetailCrud):
materia = MateriaLegislativa.objects.get(
id=int(kwargs['root_pk']))
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 = []
for a in autores_ativos_list:
autores.append([a.id, a.__str__()])
context['form'].fields['autor'].choices = autores
empty_option = [('', '---------')]
context['form'].fields['autor'].choices = empty_option + autores
return context
class UpdateView(MasterDetailCrud.UpdateView):
@ -1289,13 +1281,26 @@ class AutoriaCrud(MasterDetailCrud):
materia = MateriaLegislativa.objects.get(
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 = []
for a in autores_ativos_list:
autores.append([a.id, a.__str__()])
context['form'].fields['autor'].choices = autores
empty_option = [('', '---------')]
context['form'].fields['autor'].choices = empty_option + autores
return context
class ListView(MasterDetailCrud.ListView):

14
sapl/templates/materia/autoria_form.html

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

Loading…
Cancel
Save