Django

Code

Changeset 2989

Show
Ignore:
Timestamp:
05/26/06 11:30:42 (2 years ago)
Author:
adrian
Message:

Fixed #1985 -- Got CurrentSiteManager? working

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/sites/managers.py

    r2961 r2989  
    88        super(CurrentSiteManager, self).__init__() 
    99        self.__field_name = field_name 
    10  
    11     def contribute_to_class(self, *args, **kwargs): 
    12         # This method is overridden purely to check for errors in 
    13         # self.field_name. We can't do this in __init__() because of 
    14         # how Managers are implemented -- self.model isn't available 
    15         # until after contribute_to_class() is called. 
    16         super(CurrentSiteManager, self).contribute_to_class(*args, **kwargs) 
    17         try: 
    18             self.model._meta.get_field(self.__field_name) 
    19         except FieldDoesNotExist: 
    20             raise ValueError, "%s couldn't find a field named %s in %s." % \ 
    21                 (self.__class__.__name__, self.__field_name, self.model._meta.object_name) 
    22         self.__lookup = self.__field_name + '__id__exact' 
    23         del self.__field_name 
     10        self.__is_validated = False 
    2411 
    2512    def get_query_set(self): 
    26         return super(SiteLimitManager, self).get_query_set().filter(**{self.__lookup: settings.SITE_ID}) 
     13        if not self.__is_validated: 
     14            try: 
     15                self.model._meta.get_field(self.__field_name) 
     16            except FieldDoesNotExist: 
     17                raise ValueError, "%s couldn't find a field named %s in %s." % \ 
     18                    (self.__class__.__name__, self.__field_name, self.model._meta.object_name) 
     19            self.__is_validated = True 
     20        return super(CurrentSiteManager, self).get_query_set().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})