From: Joseph Spiros Date: Tue, 29 Jun 2010 23:02:31 +0000 (-0400) Subject: Added support for tags to Blogs and BlogViews. X-Git-Tag: philo-0.9~65 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/69872b7b5b2fe15db037125bf6e3d9ef5f6f20d8 Added support for tags to Blogs and BlogViews. --- diff --git a/admin/base.py b/admin/base.py index 0383ad4..bdf9f38 100644 --- a/admin/base.py +++ b/admin/base.py @@ -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 diff --git a/contrib/penfield/models.py b/contrib/penfield/models.py index 42aca6c..af19afb 100644 --- a/contrib/penfield/models.py +++ b/contrib/penfield/models.py @@ -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()