Repository: interlegis/sapl

Issue:
Tramitação em lote: "erro inesperado" para data incompleta
## Comportamento Esperado
Na tramitação em lote, ao informar incompletamente qualquer dos campos de data, o sistema devia informar, elegamentemente, que erro está ocorrendo.

## Comportamento Atual
O sistema responde genericamente "erro inesperado 500".

## Passos para Reproduzir (para bugs)
https://sapl.agudo.rs.leg.br/materia/tramitacao-em-lote?tipo=1&tramitacao__unidade_tramitacao_destino=9&tramitacao__status=16&data_apresentacao_0=&data_apresentacao_1=

## Contexto
Inserção de tramitação em lote.

## Imagens do Ocorrido
![captura de tela de 2018-12-19 09-44-25](https://user-images.githubusercontent.com/19169882/50231943-075d2280-0397-11e9-8a2f-c551d666209b.png)
![captura de tela de 2018-12-19 09-44-43](https://user-images.githubusercontent.com/19169882/50231958-147a1180-0397-11e9-8eff-f7b2b4e1978d.png)

## Seu Ambiente
Versão usada (Release): 3.1.138
Nome e versão do navegador: Versão 70.0.3538.80 (Versão oficial)
Nome e versão do Sistema Operacional (desktop ou mobile): Ubuntu 16.04 64 bits


Tramitação em lote: "erro inesperado" para data incompleta
## Comportamento Esperado
Na tramitação em lote, ao informar incompletamente qualquer dos campos de data, o sistema devia informar, elegamentemente, que erro está ocorrendo.

## Comportamento Atual
O sistema responde genericamente "erro inesperado 500".

## Passos para Reproduzir (para bugs)
https://sapl.agudo.rs.leg.br/materia/tramitacao-em-lote?tipo=1&tramitacao__unidade_tramitacao_destino=9&tramitacao__status=16&data_apresentacao_0=&data_apresentacao_1=

## Contexto
Inserção de tramitação em lote.

## Imagens do Ocorrido
![captura de tela de 2018-12-19 09-44-25](https://user-images.githubusercontent.com/19169882/50231943-075d2280-0397-11e9-8a2f-c551d666209b.png)
![captura de tela de 2018-12-19 09-44-43](https://user-images.githubusercontent.com/19169882/50231958-147a1180-0397-11e9-8eff-f7b2b4e1978d.png)

## Seu Ambiente
Versão usada (Release): 3.1.138
Nome e versão do navegador: Versão 70.0.3538.80 (Versão oficial)
Nome e versão do Sistema Operacional (desktop ou mobile): Ubuntu 16.04 64 bits




Discussion:

Resolving patch:
diff --git a/sapl/materia/views.py b/sapl/materia/views.py
--- a/sapl/materia/views.py
+++ b/sapl/materia/views.py
@@ -2039,24 +2039,41 @@ def post(self, request, *args, **kwargs):
         if not request.POST['data_encaminhamento']:
             data_encaminhamento = None
         else:
-            data_encaminhamento = tz.localize(datetime.strptime(
-                request.POST['data_encaminhamento'], "%d/%m/%Y"))
+            try:
+                data_encaminhamento = tz.localize(datetime.strptime(
+                    request.POST['data_encaminhamento'], "%d/%m/%Y"))
+            except ValueError:
+                msg = _('Formato da data de encaminhamento incorreto.')
+                messages.add_message(request, messages.ERROR, msg)
+                return self.get(request, self.kwargs)
 
         if request.POST['data_fim_prazo'] == '':
             data_fim_prazo = None
         else:
-            data_fim_prazo = tz.localize(datetime.strptime(
-                request.POST['data_fim_prazo'], "%d/%m/%Y"))
+            try:
+                data_fim_prazo = tz.localize(datetime.strptime(
+                    request.POST['data_fim_prazo'], "%d/%m/%Y"))
+            except ValueError:
+                msg = _('Formato da data fim do prazo incorreto.')
+                messages.add_message(request, messages.ERROR, msg)
+                return self.get(request, self.kwargs)
 
         # issue https://github.com/interlegis/sapl/issues/1123
         # TODO: usar Form
         urgente = request.POST['urgente'] == 'True'
         flag_error = False
         for materia_id in marcadas:
+            try:
+                data_tramitacao = tz.localize(datetime.strptime(
+                        request.POST['data_tramitacao'], "%d/%m/%Y"))
+            except ValueError:
+                msg = _('Formato da data da tramitação incorreto.')
+                messages.add_message(request, messages.ERROR, msg)
+                return self.get(request, self.kwargs)
+            
             t = Tramitacao(
                 materia_id=materia_id,
-                data_tramitacao=tz.localize(datetime.strptime(
-                    request.POST['data_tramitacao'], "%d/%m/%Y")),
+                data_tramitacao=data_tramitacao,
                 data_encaminhamento=data_encaminhamento,
                 data_fim_prazo=data_fim_prazo,
                 unidade_tramitacao_local_id=request.POST[


Test patch: