Changeset 2499

Show
Ignore:
Timestamp:
01/20/10 09:40:19 (2 months ago)
Author:
JensDiemer
Message:

add a cache to PageMeta?.get_permalink()

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/0.9/pylucid_project/apps/pylucid/models/pagemeta.py

    r2473 r2499  
    111111        return url 
    112112 
     113    _permalink_cache = {} 
    113114    def get_permalink(self): 
    114115        """ 
    115116        return a permalink. Use page slug/name/title or nothing as additional text. 
    116117        """ 
     118        if self.pk in self._permalink_cache: 
     119            #print "PageMeta permalink_cache len: %s, pk: %s" % (len(self._permalink_cache), self.pk) 
     120            return self._permalink_cache[self.pk] 
     121 
    117122        from pylucid.preference_forms import SystemPreferencesForm # FIXME: against import loops. 
    118123 
     
    138143 
    139144        url = reverse('PyLucid-permalink', kwargs={'page_id': self.pagetree.id, 'url_rest': addition_txt}) 
     145        self._permalink_cache[self.pk] = url 
    140146        return url 
    141147 
     
    143149        """ reset PageMeta and PageTree url cache """ 
    144150        self._url_cache.clear() 
     151        self._permalink_cache.clear() 
    145152        self.pagetree._url_cache.clear() 
    146153        return super(PageMeta, self).save(*args, **kwargs)