From: Kriti Godey Date: Fri, 2 Jul 2010 11:51:13 +0000 (+0530) Subject: Merge branch 'master' into penfield, cleaned up. X-Git-Tag: philo-0.9~59^2^2 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/4b094dbc60c3853814c2523d5772e4cf2884a073 Merge branch 'master' into penfield, cleaned up. --- 4b094dbc60c3853814c2523d5772e4cf2884a073 diff --cc contrib/penfield/models.py index a5ba85a,371ea57..8d7e3ff --- a/contrib/penfield/models.py +++ b/contrib/penfield/models.py @@@ -1,31 -1,9 +1,11 @@@ from django.db import models - from philo.models import Entity, MultiNode, Template, register_value_model - from django.contrib.auth.models import User + from django.conf import settings + from philo.models import Tag, Titled, Entity, MultiView, Page, register_value_model from django.conf.urls.defaults import url, patterns from django.http import Http404, HttpResponse - from django.template import RequestContext from datetime import datetime - from utils import paginate - from validators import validate_pagination_count - - - class Tag(models.Model): - name = models.CharField(max_length=250) - slug = models.SlugField() - - def __unicode__(self): - return self.name - - - class Titled(models.Model): - title = models.CharField(max_length=255) - slug = models.SlugField() - - def __unicode__(self): - return self.title - - class Meta: - abstract = True ++from philo.contrib.penfield.utils import paginate ++from philo.contrib.penfield.validators import validate_pagination_count class Blog(Entity, Titled): @@@ -57,15 -38,15 +40,16 @@@ class BlogView(MultiView) ('N', 'No base') ) - blog = models.ForeignKey(Blog, related_name='nodes') + blog = models.ForeignKey(Blog, related_name='blogviews') - index_template = models.ForeignKey(Template, related_name='blog_index_related') - archive_template = models.ForeignKey(Template, related_name='blog_archive_related') - tag_template = models.ForeignKey(Template, related_name='blog_tag_related') + index_page = models.ForeignKey(Page, related_name='blog_index_related') + entry_page = models.ForeignKey(Page, related_name='blog_entry_related') + 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]) - entry_template = models.ForeignKey(Template, related_name='blog_entry_related') - entry_permalink_style = models.CharField(max_length=1, choices=PERMALINK_STYLE_CHOICES) + 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') @@@ -105,16 -86,13 +89,19 @@@ ) return base_patterns + entry_patterns - def index_view(self, request): - entries = self.blog.entries.order_by('-date') + def index_view(self, request, node=None, extra_context=None): ++ entries = self.blog.entries.all() + if self.entries_per_page: - page = paginate(request, entries, self.entries_per_page) - entries = page.object_list ++ paginated_page = paginate(request, entries, self.entries_per_page) ++ entries = paginated_page.object_list + else: - page = None - return HttpResponse(self.index_template.django_template.render(RequestContext(request, {'blog': self.blog, 'entries': entries, 'page': page})), mimetype=self.index_template.mimetype) ++ paginated_page = None + context = {} + context.update(extra_context or {}) - context.update({'blog': self.blog}) ++ context.update({'blog': self.blog, 'entries': entries, 'paginated_page': paginated_page}) + return self.index_page.render_to_response(node, request, extra_context=context) - def archive_view(self, request, year=None, month=None, day=None): + def entry_view(self, request, slug, year=None, month=None, day=None, node=None, extra_context=None): entries = self.blog.entries.all() if year: entries = entries.filter(date__year=year) @@@ -147,11 -119,29 +128,39 @@@ entries = entries.filter(date__month=month) if day: entries = entries.filter(date__day=day) ++ if self.entries_per_page: ++ paginated_page = paginate(request, entries, self.entries_per_page) ++ entries = paginated_page.object_list ++ else: ++ paginated_page = None + context = {} + context.update(extra_context or {}) - context.update({'blog': self.blog, 'year': year, 'month': month, 'day': day, 'entries': entries}) ++ context.update({'blog': self.blog, 'year': year, 'month': month, 'day': day, 'entries': entries, 'paginated_page': paginated_page}) + return self.entry_archive_page.render_to_response(node, request, extra_context=context) + + def tag_view(self, request, tag, node=None, extra_context=None): try: - entry = entries.get(slug=slug) + tag = self.blog.entry_tags.filter(slug=tag) except: raise Http404 - return HttpResponse(self.entry_template.django_template.render(RequestContext(request, {'blog': self.blog, 'entry': entry})), mimetype=self.entry_template.mimetype) + entries = self.blog.entries.filter(tags=tag) ++ if self.entries_per_page: ++ paginated_page = paginate(request, entries, self.entries_per_page) ++ entries = paginated_page.object_list ++ else: ++ paginated_page = None + context = {} + context.update(extra_context or {}) - context.update({'blog': self.blog, 'tag': tag, 'entries': entries}) ++ context.update({'blog': self.blog, 'tag': tag, 'entries': entries, 'paginated_page': paginated_page}) + return self.tag_page.render_to_response(node, request, extra_context=context) + + def tag_archive_view(self, request, node=None, extra_context=None): + if not self.tag_archive_page: + raise Http404 + context = {} + context.update(extra_context or {}) + context.update({'blog': self.blog}) + return self.tag_archive_page.render_to_response(node, request, extra_context=context) class Newsletter(Entity, Titled):