Fixing a bug in BlogView's tag_view where it would provide a QuerySet as `tag` instea...
[philo.git] / contrib / penfield / models.py
index 8d7e3ff..4273165 100644 (file)
@@ -12,7 +12,10 @@ class Blog(Entity, Titled):
        @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)
+               return Tag.objects.filter(blogentries__blog=self).distinct()
+
+
+register_value_model(Blog)
 
 
 class BlogEntry(Entity, Titled):
@@ -20,8 +23,8 @@ class BlogEntry(Entity, Titled):
        author = models.ForeignKey(getattr(settings, 'PHILO_PERSON_MODULE', 'auth.User'), related_name='blogentries')
        date = models.DateTimeField(default=datetime.now)
        content = models.TextField()
-       excerpt = models.TextField()
-       tags = models.ManyToManyField(Tag, related_name='blogentries')
+       excerpt = models.TextField(blank=True, null=True)
+       tags = models.ManyToManyField(Tag, related_name='blogentries', blank=True, null=True)
        
        class Meta:
                ordering = ['-date']
@@ -47,12 +50,15 @@ class BlogView(MultiView):
        entry_archive_page = models.ForeignKey(Page, related_name='blog_entry_archive_related', null=True, blank=True)
        tag_page = models.ForeignKey(Page, related_name='blog_tag_related')
        tag_archive_page = models.ForeignKey(Page, related_name='blog_tag_archive_related', null=True, blank=True)
-       entries_per_page = models.IntegerField(blank=True, validators=[validate_pagination_count])
+       entries_per_page = models.IntegerField(blank=True, validators=[validate_pagination_count], null=True)
        
        entry_permalink_style = models.CharField(max_length=1, choices=ENTRY_PERMALINK_STYLE_CHOICES)
        entry_permalink_base = models.CharField(max_length=255, blank=False, default='entries')
        tag_permalink_base = models.CharField(max_length=255, blank=False, default='tags')
        
+       def __unicode__(self):
+               return u'BlogView for %s' % self.blog.title
+       
        @property
        def urlpatterns(self):
                base_patterns = patterns('',
@@ -140,7 +146,7 @@ class BlogView(MultiView):
        
        def tag_view(self, request, tag, node=None, extra_context=None):
                try:
-                       tag = self.blog.entry_tags.filter(slug=tag)
+                       tag = self.blog.entry_tags.get(slug=tag)
                except:
                        raise Http404
                entries = self.blog.entries.filter(tags=tag)