Fixed #9303: comment templatetags no longer assume the built-in comment model.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@9891 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
63d85a684a
commit
1aac357d34
|
@ -3,6 +3,7 @@ from django.template.loader import render_to_string
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.contrib import comments
|
from django.contrib import comments
|
||||||
|
from django.db.models import FieldDoesNotExist
|
||||||
from django.utils.encoding import smart_unicode
|
from django.utils.encoding import smart_unicode
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
@ -82,7 +83,15 @@ class BaseCommentNode(template.Node):
|
||||||
site__pk = settings.SITE_ID,
|
site__pk = settings.SITE_ID,
|
||||||
is_public = True,
|
is_public = True,
|
||||||
)
|
)
|
||||||
if getattr(settings, 'COMMENTS_HIDE_REMOVED', True):
|
|
||||||
|
# The is_public and is_removed fields are implementation details of the
|
||||||
|
# built-in comment model's spam filtering system, so they might not
|
||||||
|
# be present on a custom comment model subclass. If they exist, we
|
||||||
|
# should filter on them.
|
||||||
|
field_names = [f.name for f in self.comment_model._meta.fields]
|
||||||
|
if 'is_public' in field_names:
|
||||||
|
qs = qs.filter(is_public=True)
|
||||||
|
if getattr(settings, 'COMMENTS_HIDE_REMOVED', True) and 'is_removed' in field_names:
|
||||||
qs = qs.filter(is_removed=False)
|
qs = qs.filter(is_removed=False)
|
||||||
|
|
||||||
return qs
|
return qs
|
||||||
|
|
Loading…
Reference in New Issue