Changeset 32
- Timestamp:
- 05/07/09 19:39:02 (3 years ago)
- Files:
-
- 3 modified
-
.project (modified) (1 diff)
-
plesonet_banners/trunk/models.py (modified) (3 diffs)
-
plesonet_banners/trunk/templatetags/banners_tags.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
.project
r1 r32 6 6 </projects> 7 7 <buildSpec> 8 <buildCommand> 9 <name>org.python.pydev.PyDevBuilder</name> 10 <arguments> 11 </arguments> 12 </buildCommand> 8 13 </buildSpec> 9 14 <natures> 15 <nature>org.python.pydev.pythonNature</nature> 10 16 </natures> 11 17 </projectDescription> -
plesonet_banners/trunk/models.py
r1 r32 14 14 is_published = models.BooleanField(_('Published'), default=True) 15 15 16 class Admin: 17 list_display = ('url', 'is_published') 18 list_filter = ('is_published',) 19 search_fields = ('url', ) 20 16 21 class Meta: 17 22 db_table = 'plesonet_bannerpage' … … 26 31 class Banners(models.Model): 27 32 BANNER_TYPE = ( 28 (1, 'Top'), 29 (2, 'Premium left'), 30 (3, 'Premium right'), 31 (4, 'Below news'), 32 (5, 'Counters'), 33 (6, 'Ad links'), 34 (7, 'Technical Script') 33 (101, 'Premium Top'), 34 (100, 'Premium center'), 35 (110, 'Premium left'), 36 (120, 'Premium right'), 37 (210, 'Left under events(links) - index page'), 38 (220, 'Right under tags - index page'), 39 (300, 'Center bottom'), 40 (310, 'Left bottom'), 41 (320, 'Right bottom'), 42 (600, 'Ad links'), 43 (605, 'Ad links - personal blogs'), 44 (700, 'Technical Script') 35 45 ) 36 46 BANNERS = 6 37 47 38 bannerplace = models.ForeignKey(Bannerpage ) #, edit_inline=models.TABULAR, min_num_in_admin=BANNERS, max_num_in_admin=BANNERS)48 bannerplace = models.ForeignKey(Bannerpage, edit_inline=models.TABULAR, min_num_in_admin=BANNERS, max_num_in_admin=BANNERS) 39 49 bannertype = models.SmallIntegerField(_('Banner place'), choices=BANNER_TYPE) 40 bannercode = models.TextField(_('Code'), blank=True) #, core=True 41 is_published = models.BooleanField(_('Published')) #, core=True 42 one_page_only = models.BooleanField(_('Only in this URL')) #, core=True 50 bannercode = models.TextField(_('Code'), blank=True, core=True) 51 is_published = models.BooleanField(_('Published'), core=True) 52 one_page_only = models.BooleanField(_('Only in this URL'), core=True) 53 child_page_only = models.BooleanField(_('Only on childrens'), core=True) 43 54 44 55 class Meta: … … 47 58 verbose_name_plural = _('banners') 48 59 unique_together = (('bannerplace', 'bannertype'),) 49 60 50 61 def __unicode__(self): 51 62 return str(self.bannertype) 52 63 53 class BannerInline(admin.TabularInline):54 model = Banners55 56 57 class BannerpageAdmin(admin.ModelAdmin):58 list_display = ('url', 'is_published')59 list_filter = ('is_published',)60 search_fields = ('url', )61 inlines = [ BannerInline, ]62 admin.site.register(Bannerpage, BannerpageAdmin)64 #class BannerInline(admin.TabularInline): 65 # model = Banners 66 # 67 # 68 #class BannerpageAdmin(admin.ModelAdmin): 69 # list_display = ('url', 'is_published') 70 # list_filter = ('is_published',) 71 # search_fields = ('url', ) 72 # inlines = [ BannerInline, ] 73 #admin.site.register(Bannerpage, BannerpageAdmin) -
plesonet_banners/trunk/templatetags/banners_tags.py
r1 r32 2 2 from apps.plesonet_banners.models import Bannerpage, Banners 3 3 from django.template import Library 4 from apps.lib.threadlocals import get_request 5 6 from scache.tags import cached_inclusion_tag 7 from django.db.models import signals 4 8 5 9 register = Library() 10 6 11 7 12 @register.inclusion_tag('plesonet_banners/show_banner.html', takes_context=True) … … 11 16 url = context['request'].path 12 17 13 # banner only this page14 18 banners = Banners.objects.filter( 15 19 bannerplace__is_published=True, 16 bannerplace__url__iexact=url,17 20 is_published=True, 18 21 bannertype=banner_type) 19 22 20 if banners: 21 return {'banner': banners[0]} 23 24 #better to find proper banner on client-side, than making a dozen of sql requests 25 for b in banners: 26 if b.bannerplace.url == url and b.child_page_only == False: 27 return {'banner': b} 22 28 23 29 # last word 24 30 url = url.rsplit('/',1)[0] 31 if url == "": 32 return {'banner': None} 25 33 26 34 # parent banners … … 28 36 url = url.rsplit('/',1)[0] 29 37 select_url = url + '/' 30 31 banners = Banners.objects.filter( 32 bannerplace__is_published=True, 33 bannerplace__url__iexact=select_url, 34 is_published=True, 35 bannertype=banner_type) 36 37 if banners: 38 if not banners[0].one_page_only: 39 banner = banners[0] 40 break 38 39 for b in banners: 40 if b.bannerplace.url == select_url and not b.one_page_only: 41 return {'banner': b} 41 42 42 43 if url.find('/') : break 43 44 44 return {'banner': banner}45 return {'banner': None}

