def METHOD_NAME(self):
    cleaned_data = super(SearchFormLog, self).METHOD_NAME()
    first_date = cleaned_data.get("first_date")
    last_date = cleaned_data.get("last_date")
    start_time = cleaned_data.get("start_time")
    end_time = cleaned_data.get("end_time")
    if first_date != '' and last_date != '':
        start_time = cleaned_data.get("start_time")
        first_date = first_date + ' ' + start_time + ':00'
        end_time = cleaned_data.get("end_time")
        last_date = last_date + ' ' + end_time + ':59'
        try:
            first_date = datetime.strptime(first_date, '%d/%m/%Y %H:%M:%S')
        except ValueError, e:
            raise forms.ValidationError("Formato de data e hora inválido.")
        try:
            last_date = datetime.strptime(last_date, '%d/%m/%Y %H:%M:%S')
        except ValueError, e:
            self.log.error(u'Datetime format of %s is invalid.', e.value)
            raise forms.ValidationError("Formato de data e hora inválido.")
        if last_date < first_date:
            raise forms.ValidationError(
                "A data/hora final não pode ser menor que a data inicial.")
        if (first_date > datetime.today()):
            raise forms.ValidationError(
                "A data/hora inicial não pode ser maior que a data atual.")
    else:
        start_time = datetime.strptime(start_time, '%H:%M')
        end_time = datetime.strptime(end_time, '%H:%M')
        if end_time < start_time:
            raise forms.ValidationError(
                "A hora final não pode ser menor que a hora inicial.")
    if first_date != '' and last_date == '':
        raise forms.ValidationError(
            "A data final do período deve ser informada.")
    if first_date == '' and last_date != '':
        raise forms.ValidationError(
            "A data inicial do período deve ser informada.")
    return cleaned_data