Ejemplo n.º 1
0
def filter(request, model=None, exclude=('lft', 'rght', 'tree_id', 'level')):
    Model = model
    fields_to_exclude = exclude

    class ModelTable(django_tables.ModelTable):
        class Meta:
            model = Model
            exclude = fields_to_exclude

    form_classes = generate_field_forms(Model, exclude=fields_to_exclude)

    generic_filter = Filter(request.GET, form_classes=form_classes)
    has_control_params, params = generic_filter.build_from_params()
    if has_control_params:
        return HttpResponseRedirect('%s?%s' % (request.path, params.urlencode()))

    query = Q() if not generic_filter.is_valid() else generic_filter.construct_Q()
    table = ModelTable(Model.objects.filter(query))

    return render_to_response('filter/filter.html',
                              {'table': table,
                               'app_label': Model._meta.app_label,
                               'filter': generic_filter,
                               },
                              context_instance=RequestContext(request))
 def assertFilterGroupConsistency(self, params, expected_number_of_groups=-1, expected_number_of_forms=-1):
     filter = Filter(params, form_classes=self.form_classes)
     filter.build_from_params()
     number_of_forms = self.get_number_of_forms(filter)
     self.assertEquals(expected_number_of_groups, len(filter.groups))
     self.assertEquals(expected_number_of_forms, number_of_forms)