Django

Code

Changeset 6216

Show
Ignore:
Timestamp:
09/14/07 16:13:07 (1 year ago)
Author:
jkocherhans
Message:

newforms-admin: Fixed #4699. Really this time. AllValuesFilterSpec? uses the ModelAdmin?'s queryset method instead of the model's deafult queryset.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/newforms-admin/django/contrib/admin/filterspecs.py

    r6103 r6216  
    1414class FilterSpec(object): 
    1515    filter_specs = [] 
    16     def __init__(self, f, request, params, model): 
     16    def __init__(self, f, request, params, model, model_admin): 
    1717        self.field = f 
    1818        self.params = params 
     
    2222    register = classmethod(register) 
    2323 
    24     def create(cls, f, request, params, model): 
     24    def create(cls, f, request, params, model, model_admin): 
    2525        for test, factory in cls.filter_specs: 
    2626            if test(f): 
    27                 return factory(f, request, params, model
     27                return factory(f, request, params, model, model_admin
    2828    create = classmethod(create) 
    2929 
     
    5151 
    5252class RelatedFilterSpec(FilterSpec): 
    53     def __init__(self, f, request, params, model): 
    54         super(RelatedFilterSpec, self).__init__(f, request, params, model
     53    def __init__(self, f, request, params, model, model_admin): 
     54        super(RelatedFilterSpec, self).__init__(f, request, params, model, model_admin
    5555        if isinstance(f, models.ManyToManyField): 
    5656            self.lookup_title = f.rel.to._meta.verbose_name 
     
    8080 
    8181class ChoicesFilterSpec(FilterSpec): 
    82     def __init__(self, f, request, params, model): 
    83         super(ChoicesFilterSpec, self).__init__(f, request, params, model
     82    def __init__(self, f, request, params, model, model_admin): 
     83        super(ChoicesFilterSpec, self).__init__(f, request, params, model, model_admin
    8484        self.lookup_kwarg = '%s__exact' % f.name 
    8585        self.lookup_val = request.GET.get(self.lookup_kwarg, None) 
     
    9797 
    9898class DateFieldFilterSpec(FilterSpec): 
    99     def __init__(self, f, request, params, model): 
    100         super(DateFieldFilterSpec, self).__init__(f, request, params, model
     99    def __init__(self, f, request, params, model, model_admin): 
     100        super(DateFieldFilterSpec, self).__init__(f, request, params, model, model_admin
    101101 
    102102        self.field_generic = '%s__' % self.field.name 
     
    132132 
    133133class BooleanFieldFilterSpec(FilterSpec): 
    134     def __init__(self, f, request, params, model): 
    135         super(BooleanFieldFilterSpec, self).__init__(f, request, params, model
     134    def __init__(self, f, request, params, model, model_admin): 
     135        super(BooleanFieldFilterSpec, self).__init__(f, request, params, model, model_admin
    136136        self.lookup_kwarg = '%s__exact' % f.name 
    137137        self.lookup_kwarg2 = '%s__isnull' % f.name 
     
    158158# more appropriate, and the AllValuesFilterSpec won't get used for it. 
    159159class AllValuesFilterSpec(FilterSpec): 
    160     def __init__(self, f, request, params, model): 
    161         super(AllValuesFilterSpec, self).__init__(f, request, params, model
     160    def __init__(self, f, request, params, model, model_admin): 
     161        super(AllValuesFilterSpec, self).__init__(f, request, params, model, model_admin
    162162        self.lookup_val = request.GET.get(f.name, None) 
    163         self.lookup_choices = model._default_manager.distinct().order_by(f.name).values(f.name) 
     163        self.lookup_choices = model_admin.queryset(request).distinct().order_by(f.name).values(f.name) 
    164164 
    165165    def title(self): 
  • django/branches/newforms-admin/django/contrib/admin/views/main.py

    r5997 r6216  
    183183            filter_fields = [self.lookup_opts.get_field(field_name) for field_name in self.list_filter] 
    184184            for f in filter_fields: 
    185                 spec = FilterSpec.create(f, request, self.params, self.model
     185                spec = FilterSpec.create(f, request, self.params, self.model, self.model_admin
    186186                if spec and spec.has_output(): 
    187187                    filter_specs.append(spec)