Django

Code

Changeset 2045

Show
Ignore:
Timestamp:
01/17/06 19:52:28 (3 years ago)
Author:
adrian
Message:

magic-removal: Simplified AdminBoundField?.existing_display() logic to use a single method instead of three

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/magic-removal/django/contrib/admin/views/main.py

    r2044 r2045  
    8282    LogEntry.objects.log_action(user.id, opts.get_content_type_id(), pk_value, str(new_object), ADDITION) 
    8383 
    84  
    8584def get_javascript_imports(opts, auto_populated_fields, ordered_objects, field_sets): 
    8685# Put in any necessary JavaScript imports. 
     
    135134            self.related_url = url_for_model(field.rel.to) 
    136135 
    137     def _fetch_existing_display(self, func_name): 
    138         class_dict = self.original.__class__.__dict__ 
    139         func = class_dict.get(func_name) 
    140         return func(self.original) 
    141  
    142     def _fill_existing_display(self): 
    143         if getattr(self, '_display_filled', False): 
    144             return 
    145         # HACK 
    146         if isinstance(self.field.rel, models.ManyToOne): 
    147              func_name = 'get_%s' % self.field.name 
    148              self._display = self._fetch_existing_display(func_name) 
    149         elif isinstance(self.field.rel, models.ManyToMany): 
    150             func_name = 'get_%s_list' % self.field.rel.singular 
    151             self._display =  ", ".join([str(obj) for obj in self._fetch_existing_display(func_name)]) 
    152         self._display_filled = True 
    153  
    154136    def existing_display(self): 
    155         self._fill_existing_display() 
    156         return self._display 
     137        try: 
     138            return self._display 
     139        except AttributeError: 
     140            if isinstance(self.field.rel, models.ManyToOne): 
     141                self._display = getattr(self.original, 'get_%s' % self.field.name)() 
     142            elif isinstance(self.field.rel, models.ManyToMany): 
     143                self._display = ", ".join([str(obj) for obj in getattr(self.original, 'get_%s_list' % self.field.rel.singular)()]) 
     144            return self._display 
    157145 
    158146    def __repr__(self):