diff --git a/media/js/diagnosticos/diagnosticos_categorias_form.js b/media/js/diagnosticos/diagnosticos_categorias_form.js index f1e1219..692f1ef 100644 --- a/media/js/diagnosticos/diagnosticos_categorias_form.js +++ b/media/js/diagnosticos/diagnosticos_categorias_form.js @@ -26,6 +26,15 @@ $('#page').live('pageinit', function(event){ error.html(data.erros[campo].join('\n')); } } + //Novos telefones + for (var campo in data.fones) { + painel = $("#" + campo); + painel.html(painel.html() + data.fones[campo]); + } + //Limpar campos + for (var campo in data.clean) { + $("#" + data.clean[campo]).val(''); + } }, error: function(msg) { nun_ajax--; diff --git a/sigi/apps/contatos/models.py b/sigi/apps/contatos/models.py index 97a4c83..24b21c7 100644 --- a/sigi/apps/contatos/models.py +++ b/sigi/apps/contatos/models.py @@ -138,7 +138,7 @@ class Telefone(models.Model): class Meta: ordering = ('numero',) -# unique_together = ('numero', 'tipo') + unique_together = ('numero', 'tipo') def __unicode__(self): return unicode(self.numero) diff --git a/sigi/apps/diagnosticos/views.py b/sigi/apps/diagnosticos/views.py index 571905b..18f315e 100644 --- a/sigi/apps/diagnosticos/views.py +++ b/sigi/apps/diagnosticos/views.py @@ -158,18 +158,32 @@ def categoria_contatos(request, id_diagnostico): for n, l in Funcionario.SETOR_CHOICES] if request.method == "POST": - forms = [FuncionariosMobileForm( - request.POST, prefix=f.setor, instance=f) for f, c in funcionarios] + forms = [] + for f, c in funcionarios: + try: + forms.append(FuncionariosMobileForm(request.POST, prefix=f.setor, instance=f)) + except: + pass resposta = { 'mensagem': 'sucesso', - 'erros' : {} + 'erros' : {}, + 'fones' : {}, + 'clean' : (), } # valida e salva um formulario por vez for form in forms: if form.is_valid(): form.save() + s = '' + for form_telefones in form.telefones.forms: + tel = form_telefones.instance + if tel._state.adding and tel.numero != '': + s += '
Novo telefone %s: %s
' % (form_telefones.instance.get_tipo_display(), form_telefones.instance.numero) + resposta['clean'] += ('id_' + form_telefones.prefix + '-numero',) + if s != '': + resposta['fones'][form.prefix] = s else: # Montando a estrutura das mensagens de erro no formato JSON resposta['mensagem'] = 'erro' @@ -181,8 +195,12 @@ def categoria_contatos(request, id_diagnostico): if (form_telefones.fields['id'].initial is not None and form_telefones.fields['tipo'].initial == 'I' and form_telefones.fields['numero'].initial is None): - Telefone.objects.get(pk=form_telefones.fields['id'].initial).delete() - resposta['erros'][form_telefones.prefix + "-id-errors"] = u'Este telefone foi excluído da base de dados' + if Telefone.objects.filter(pk=form_telefones.fields['id'].initial).exists(): + Telefone.objects.get(pk=form_telefones.fields['id'].initial).delete() + if not resposta['fones'].has_key(form.prefix): + resposta['fones'][form.prefix] = '' + resposta['fones'][form.prefix] += u'O telefone %s %s foi excluído da base de dados
' % ( + form_telefones.instance.get_tipo_display(), form_telefones.instance.numero) else: for key, value in form_telefones.errors.iteritems(): key = form_telefones.prefix + "-id-errors" diff --git a/sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html b/sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html index 0fdceb9..2363821 100644 --- a/sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html +++ b/sigi/templates/diagnosticos/diagnosticos_categoria_contatos_form.html @@ -37,6 +37,7 @@ {% endfor %} {% endfor %} + {{ form.telefones.management_form }}