Changeset 39

Show
Ignore:
Timestamp:
06/06/09 06:43:29 (3 years ago)
Author:
235
Message:

banners cache

Location:
plesonet_banners/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • plesonet_banners/trunk/models.py

    r34 r39  
    33from django.utils.translation import ugettext_lazy as _ 
    44from django.contrib import admin 
     5from django.core.cache import cache 
     6 
     7BANNERS_CACHE_KEY = "all_menu_items" 
     8ALL_BANNERS_CACHE_TIMEOUT = 60 * 10 
    59 
    610''' 
     
    2933            return self.url      
    3034 
     35class PublishedBannersManager(models.Manager): 
     36    def get_query_set(self, banner_type): 
     37        return super(PublishedBannersManager, self).get_query_set().select_related().filter(bannerplace__is_published=True, is_published = True, bannertype=banner_type) 
     38     
     39    def get_type(self, banner_type): 
     40        result = cache.get(BANNERS_CACHE_KEY + str(banner_type)) 
     41        if result is None: 
     42            result = list(self.get_query_set(banner_type).all()) 
     43            cache.set(BANNERS_CACHE_KEY + str(banner_type), result, ALL_BANNERS_CACHE_TIMEOUT) 
     44        return result 
     45 
     46 
    3147class Banners(models.Model): 
    3248    BANNER_TYPE = ( 
     
    5268    one_page_only = models.BooleanField(_('Only in this URL'))#, core=True) 
    5369    child_page_only = models.BooleanField(_('Only on childrens'))#, core=True) 
     70 
     71    published = PublishedBannersManager() 
    5472     
     73    def save(self, *args, **kwargs): 
     74        super(MenuItem, self).save(*args, **kwargs) 
     75        cache.delete(BANNERS_CACHE_KEY + str(banner_type)) 
     76     
     77    def delete(self): 
     78        super(MenuItem, self).delete() 
     79        cache.delete(BANNERS_CACHE_KEY + str(banner_type)) 
     80             
    5581    class Meta: 
    5682        db_table = 'plesonet_banner' 
  • plesonet_banners/trunk/templatetags/banners_tags.py

    r35 r39  
    1212    url = context['request'].path 
    1313     
    14     banners = Banners.objects.filter( 
    15                                     bannerplace__is_published=True,  
    16                                     is_published=True,  
    17                                     bannertype=banner_type) 
     14    #banners = Banners.objects.filter( 
     15    #                                bannerplace__is_published=True,  
     16    #                                is_published=True,  
     17    #                                bannertype=banner_type) 
     18     
     19    banners = Banners.published.get_type(banner_type) 
    1820     
    1921