From 0f8df8272daa49077779d41a89af7e783eb69864 Mon Sep 17 00:00:00 2001 From: Jeremy Carbaugh Date: Wed, 3 Nov 2010 23:04:38 -0400 Subject: [PATCH] clean up wordpress views and models --- wordpress/models.py | 11 +++++----- .../templates/wordpress/post_archive.html | 2 +- wordpress/urls.py | 2 +- wordpress/views.py | 20 +++++++++++++------ 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/wordpress/models.py b/wordpress/models.py index f8efb3d..5d59ed1 100644 --- a/wordpress/models.py +++ b/wordpress/models.py @@ -1,6 +1,6 @@ from django.conf import settings from django.core.urlresolvers import reverse -from django.db import connection, models +from django.db import connections, models from django.db.models import signals from django.http import HttpResponseRedirect import re @@ -154,11 +154,12 @@ class PostManager(models.Manager): def published(self, post_type='post'): return self._by_status('publish', post_type) - def term(self, term, taxonomy='post_tag'): + def term(self, term, taxonomy='post_tag'): + term = term.replace('-', ' ') tx = Taxonomy.objects.get(name=taxonomy, term__name=term) table = '%s_term_relationships' % TABLE_PREFIX sql = """SELECT object_id FROM """ + table + """ WHERE term_taxonomy_id = %s""" - cursor = connection.cursor() + cursor = connections['wordpress'].cursor() cursor.execute(sql, [tx.pk,]) pids = [row[0] for row in cursor.fetchall()] return Post.objects.published().filter(pk__in=pids) @@ -223,7 +224,6 @@ class Post(WordPressModel): month = self.post_date.month day = self.post_date.day slug = self.slug - print reverse('wp_object_detail', args=(year, month, day, slug)) return reverse('wp_object_detail', args=(year, month, day, slug)) """ @@ -244,6 +244,7 @@ class Post(WordPressModel): """ def tags(self): + print self.get_absolute_url() if not self.tag_cache: taxonomy = "post_tag" self.tag_cache = self._get_terms(taxonomy) @@ -252,7 +253,7 @@ class Post(WordPressModel): def _get_terms(self, taxonomy): table = '%s_term_relationships' % TABLE_PREFIX sql = """SELECT term_taxonomy_id FROM """ + table + """ WHERE object_id = %s ORDER BY term_order""" - cursor = connection.cursor() + cursor = connections['wordpress'].cursor() cursor.execute(sql, [self.id,]) ttids = [row[0] for row in cursor.fetchall()] return Term.objects.filter(taxonomies__name=taxonomy, taxonomies__pk__in=ttids) diff --git a/wordpress/templates/wordpress/post_archive.html b/wordpress/templates/wordpress/post_archive.html index 65ba12e..fc4f0b5 100644 --- a/wordpress/templates/wordpress/post_archive.html +++ b/wordpress/templates/wordpress/post_archive.html @@ -1 +1 @@ -{{ latest }} \ No newline at end of file +{{ post_list }} \ No newline at end of file diff --git a/wordpress/urls.py b/wordpress/urls.py index ee570aa..b12f56a 100644 --- a/wordpress/urls.py +++ b/wordpress/urls.py @@ -1,7 +1,7 @@ from django.conf.urls.defaults import * urlpatterns = patterns('wordpress.views', - url(r'^taxonomy/(?Pterm|category)/(?P[\w-]+)/$', 'taxonomy', name='wp_taxonomy'), + url(r'^taxonomy/(?Pterm|category)/(?P[\w\-\.]+)/$', 'taxonomy', name='wp_taxonomy'), url(r'^(?P\d{4})/(?P\d{1,2})/(?P\d{1,2})/(?P[-\w]+)/$', 'object_detail', name='wp_object_detail'), url(r'^(?P\d{4})/(?P\d{1,2})/(?P\d{1,2})/$', 'archive_day', name='wp_archive_day'), url(r'^(?P\d{4})/(?P\d{1,2})/$', 'archive_month', name='wp_archive_month'), diff --git a/wordpress/views.py b/wordpress/views.py index 5f84224..c42dfcf 100644 --- a/wordpress/views.py +++ b/wordpress/views.py @@ -1,8 +1,11 @@ +from django.conf import settings from django.http import HttpResponseRedirect from django.shortcuts import render_to_response -from django.views.generic import date_based +from django.views.generic import list_detail, date_based from wordpress.models import Post +PER_PAGE = getattr(settings, 'WP_PER_PAGE', 10) + TAXONOMIES = { 'term': 'post_tag', 'category': 'category', @@ -12,7 +15,7 @@ TAXONOMIES = { def object_detail(request, year, month, day, slug): return date_based.object_detail(request, queryset=Post.objects.published(), date_field='post_date', year=year, month=month, month_format="%m", - day=day, slug=slug, slug_field='slug', template_object_name='post') + day=day, slug=slug, template_object_name='post', allow_future=True) def archive_day(request, year, month, day): return date_based.archive_day(request, queryset=Post.objects.published(), @@ -33,11 +36,16 @@ def archive_index(request): if p: post = Post.objects.get(pk=p) return HttpResponseRedirect(post.get_absolute_url()) - return date_based.archive_index(request, - queryset=Post.objects.published(), date_field='post_date') + posts = Post.objects.published().select_related() + return list_detail.object_list(request, queryset=posts, + paginate_by=10, template_name='wordpress/post_archive.html', + template_object_name='post', allow_empty=True) def taxonomy(request, taxonomy, term): taxonomy = TAXONOMIES.get(taxonomy, None) if taxonomy: - posts = Post.objects.term(term, taxonomy=taxonomy) - return render_to_response('wordpress/post_term.html', {'post_list': posts}) \ No newline at end of file + posts = Post.objects.term(term, taxonomy=taxonomy).select_related() + return list_detail.object_list(request, queryset=posts, + paginate_by=10, template_name='wordpress/post_term.html', + template_object_name='post', allow_empty=True, + extra_context={'term': term}) \ No newline at end of file