Skip to content

Instantly share code, notes, and snippets.

@JuniorLima
Created August 30, 2013 11:33
Show Gist options
  • Save JuniorLima/6388980 to your computer and use it in GitHub Desktop.
Save JuniorLima/6388980 to your computer and use it in GitHub Desktop.
Gostaria de validar a busca. Tipo, se no filtro a data final for menor que a inicial ele mostra um erro. "Data final menor que a inicial" Qual o recomendável? ErroList ou ValidationError?
class FiltroManifestacoes(forms.Form):
dt_inicial = forms.DateTimeField(label=u'Data Inicial',widget=AdminDateWidget(format='%d/%m/%Y'),
input_formats='%d/%m/%Y', required=False)
dt_final = forms.DateTimeField(label=u'Data Final',widget=AdminDateWidget(format='%d/%m/%Y'),
input_formats='%d/%m/%Y', required=False)
def __init__(self, *args, **kwargs):
super(FiltroManifestacoes, self).__init__(*args, **kwargs)
self.fields['dt_inicial'].input_formats = ['%d/%m/%Y']
self.fields['dt_final'].input_formats = ['%d/%m/%Y']
<p>{{ form_filter.as_p }}</p>
def status(request, *args, **kwargs):
unidades = Unidades.objects.order_by('nome')
status = STATUS_MANIFESTACAO
orgaos = Orgaos.objects.order_by('nome')
manifestacoes = Manifestacoes.objects.order_by('statusman')
form_filter = FiltroManifestacoes(request.GET or None)
filters = request.GET.items()
date1 = (datetime.strptime('01/01/2013 00:00:01','%d/%m/%Y %H:%M:%S'))
date2 = (datetime.strptime('31/12/2100 23:59:59','%d/%m/%Y %H:%M:%S'))
datas = u'PERÍODO: GERAL'
for key, value in filters:
print key, value
if len(value) > 0:
if key == 'statusman':
statusman_list = request.GET.getlist('statusman')
manifestacoes = manifestacoes.filter(statusman__in = statusman_list)
if key == 'unidades':
unid_list = request.GET.getlist('unidades')
manifestacoes = manifestacoes.filter(unidade__in = unid_list)
if key == 'orgaos':
unid_list = request.GET.getlist('orgaos')
manifestacoes = manifestacoes.filter(orgaos__in = unid_list)
if key == 'dt_inicial':
date1 = (datetime.strptime((request.GET.get('dt_inicial')+' 00:00:01'), '%d/%m/%Y %H:%M:%S'))
if key == 'dt_final':
date2 = (datetime.strptime((request.GET.get('dt_final')+' 23:59:59'), '%d/%m/%Y %H:%M:%S'))
if ((date1 is not None) and (date2 is not None)):
manifestacoes = manifestacoes.filter(criado_p_em__range = (date1,date2))
formato = '%d/ %m/ %Y'
datas = u'PERÍODO: %s até %s' % (date1.strftime(formato), date2.strftime(formato))
if request.GET:
resp = HttpResponse(mimetype='application/pdf')
purchases = manifestacoes
report = Status(queryset=purchases)
report.generate_by(PDFGenerator, filename=resp, variables={'datas': datas})
return resp
return render(request, 'relatorios/relatorios_status.html',locals(),
context_instance=RequestContext(request))
@tarcisiossousa
Copy link

Adiciona essa teste na tua classe FiltroManifestacoes no forms.py
def clean(self):
super(FiltroManifestacoes, self).clean()

            if self.cleaned_data.get('dt_final') > self.cleaned_data.get('dt_inicial'):
                    raise ValidationError(_(u'Data final menor que a inicial'))

            return self.cleaned_data

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment