Added support for tags to Blogs and BlogViews.
authorJoseph Spiros <joseph.spiros@ithinksw.com>
Tue, 29 Jun 2010 23:02:31 +0000 (19:02 -0400)
committerJoseph Spiros <joseph.spiros@ithinksw.com>
Tue, 29 Jun 2010 23:02:31 +0000 (19:02 -0400)
admin/base.py
contrib/penfield/models.py

index 0383ad4..bdf9f38 100644 (file)
@@ -1,6 +1,6 @@
 from django.contrib import admin
 from django.contrib.contenttypes import generic
-from philo.models import Attribute, Relationship
+from philo.models import Tag, Attribute, Relationship
 
 
 COLLAPSE_CLASSES = ('collapse', 'collapse-closed', 'closed',)
@@ -26,4 +26,7 @@ class RelationshipInline(generic.GenericTabularInline):
 
 class EntityAdmin(admin.ModelAdmin):
        inlines = [AttributeInline, RelationshipInline]
-       save_on_top = True
\ No newline at end of file
+       save_on_top = True
+
+
+admin.site.register(Tag)
\ No newline at end of file
index 42aca6c..af19afb 100644 (file)
@@ -8,7 +8,10 @@ from datetime import datetime
 
 
 class Blog(Entity, Titled):
-       pass
+       @property
+       def entry_tags(self):
+               """ Returns a QuerySet of Tags that are used on any entries in this blog. """
+               return Tag.objects.filter(blogentries__blog=self)
 
 
 class BlogEntry(Entity, Titled):
@@ -17,11 +20,11 @@ class BlogEntry(Entity, Titled):
        date = models.DateTimeField(default=datetime.now)
        content = models.TextField()
        excerpt = models.TextField()
-       tags = models.ManyToManyField(Tag)
+       tags = models.ManyToManyField(Tag, related_name='blogentries')
        
        class Meta:
                ordering = ['-date']
-               verbose_name_plural = "Blog Entries"
+               verbose_name_plural = "blog entries"
 
 
 register_value_model(BlogEntry)
@@ -84,8 +87,7 @@ class BlogView(MultiView):
                return base_patterns + entry_patterns
        
        def index_view(self, request):
-               entries = self.blog.entries.order_by('-date')
-               return HttpResponse(self.index_template.django_template.render(RequestContext(request, {'blog': self.blog, 'entries': entries})), mimetype=self.index_template.mimetype)
+               return HttpResponse(self.index_template.django_template.render(RequestContext(request, {'blog': self.blog})), mimetype=self.index_template.mimetype)
        
        def archive_view(self, request, year=None, month=None, day=None):
                entries = self.blog.entries.all()
@@ -98,8 +100,8 @@ class BlogView(MultiView):
                return HttpResponse(self.archive_template.django_template.render(RequestContext(request, {'blog': self.blog, 'year': year, 'month': month, 'day': day, 'entries': entries})), mimetype=self.archive_template.mimetype)
        
        def tag_view(self, request, tag=None):
-               # return HttpResponse(self.tag_template.django_template.render(RequestContext(request, {'blog': self.blog, 'tag': tag, 'entries': None})), mimetype=self.tag_template.mimetype)
-               raise Http404
+               entries = self.blog.entries.filter(tags__slug=tag)
+               return HttpResponse(self.tag_template.django_template.render(RequestContext(request, {'blog': self.blog, 'tag': tag, 'entries': entries})), mimetype=self.tag_template.mimetype)
        
        def entry_view(self, request, slug, year=None, month=None, day=None):
                entries = self.blog.entries.all()