Show
Ignore:
Timestamp:
06/06/09 07:02:07 (3 years ago)
Author:
235
Message:

content areas cache

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • plesonet_contentareas/trunk/models.py

    r1 r42  
    33from django.conf import settings 
    44from django.utils.translation import ugettext_lazy as _ 
     5from django.core.cache import cache 
     6 
     7CONTENT_AREA_CACHE_KEY = "contarea" 
     8ALL_CONTENT_AREA_CACHE_TIMEOUT = 60 * 10 
    59 
    610class PublishedContentAreasManager(models.Manager): 
    711    def get_query_set(self): 
    812        return super(PublishedContentAreasManager, self).get_query_set().filter(is_published = True) 
    9  
     13     
     14    def get_name(self, name): 
     15        result = cache.get(CONTENT_AREA_CACHE_KEY + name) 
     16        if result is None: 
     17            result = list(self.get_query_set().filter(name=name)) 
     18            cache.set(CONTENT_AREA_CACHE_KEY + name, result, ALL_CONTENT_AREA_CACHE_TIMEOUT) 
     19        return result 
     20     
    1021class ContentArea(models.Model): 
    1122    EXISTING_NAMES = ( ('contacts_form', 'Contacts form'), 
     
    1930    published = PublishedContentAreasManager() 
    2031     
     32    def save(self, *args, **kwargs): 
     33        super(ContentArea, self).save(*args, **kwargs) 
     34        cache.delete(CONTENT_AREA_CACHE_KEY + self.name) 
     35     
     36    def delete(self): 
     37        super(ContentArea, self).delete() 
     38        cache.delete(CONTENT_AREA_CACHE_KEY + self.name)   
     39 
    2140    class Meta: 
    2241        db_table = 'plesonet_contentareas'