Created
June 30, 2012 01:31
-
-
Save wnielson/3021699 to your computer and use it in GitHub Desktop.
get_latest_objects_by_category templatetag
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/categories/templatetags/category_tags.py b/categories/templatetags/category_tags.py | |
index 226a3ad..cddc8b9 100644 | |
--- a/categories/templatetags/category_tags.py | |
+++ b/categories/templatetags/category_tags.py | |
@@ -1,4 +1,6 @@ | |
from django import template | |
+from django.core.cache import cache | |
+from django.db import models | |
from django.template import Library, Node, TemplateSyntaxError, \ | |
Variable, resolve_variable, VariableDoesNotExist, Context | |
from categories.base import CategoryBase | |
@@ -221,7 +223,7 @@ def resolve(var, context): | |
def get_latest_objects_by_category(category, app_label, model_name, set_name, | |
date_field='pub_date', num=15): | |
- m = get_model(app_label, model_name) | |
+ m = models.get_model(app_label, model_name) | |
if not isinstance(category, CategoryBase): | |
category = Category.objects.get(slug=str(category)) | |
children = category.children.all() | |
@@ -248,7 +250,7 @@ class LatestObjectsNode(Node): | |
date_field, num): | |
"""Get the cache key""" | |
key = 'latest_objects.%s' % '.'.join([category, app_label, model_name, | |
- set_name, date_field, num]) | |
+ set_name, date_field, str(num)]) | |
def render(self, context): | |
"""Render this sucker""" | |
@@ -263,14 +265,19 @@ class LatestObjectsNode(Node): | |
date_field, num) | |
result = cache.get(cache_key) | |
if not result: | |
- result = get_latest_objects_by_category(category, app_label, model_name, | |
+ try: | |
+ result = get_latest_objects_by_category(category, app_label, model_name, | |
set_name, date_field, num) | |
- cache.set(key, result, 300) | |
+ cache.set(cache_key, result, 300) | |
+ except Exception, e: | |
+ result = None | |
+ | |
context[self.var_name] = result | |
return '' | |
+@register.tag("get_latest_objects_by_category") | |
def do_get_latest_objects_by_category(parser, token): | |
""" | |
Get the latest objects by category |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment