Fixed #12325 -- Allows zero values for moderate_after and close_after fields of comment moderators. Thanks, Gabriel Hurley.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14556 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
109f42a981
commit
9b7be918ed
|
@ -205,8 +205,9 @@ class CommentModerator(object):
|
||||||
if self.enable_field:
|
if self.enable_field:
|
||||||
if not getattr(content_object, self.enable_field):
|
if not getattr(content_object, self.enable_field):
|
||||||
return False
|
return False
|
||||||
if self.auto_close_field and self.close_after:
|
if self.auto_close_field and self.close_after is not None:
|
||||||
if self._get_delta(datetime.datetime.now(), getattr(content_object, self.auto_close_field)).days >= self.close_after:
|
close_after_date = getattr(content_object, self.auto_close_field)
|
||||||
|
if close_after_date is not None and self._get_delta(datetime.datetime.now(), close_after_date).days >= self.close_after:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -220,8 +221,9 @@ class CommentModerator(object):
|
||||||
non-public), ``False`` otherwise.
|
non-public), ``False`` otherwise.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if self.auto_moderate_field and self.moderate_after:
|
if self.auto_moderate_field and self.moderate_after is not None:
|
||||||
if self._get_delta(datetime.datetime.now(), getattr(content_object, self.auto_moderate_field)).days >= self.moderate_after:
|
moderate_after_date = getattr(content_object, self.auto_moderate_field)
|
||||||
|
if moderate_after_date is not None and self._get_delta(datetime.datetime.now(), moderate_after_date).days >= self.moderate_after:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,9 @@ Built-in moderation options
|
||||||
If :attr:`auto_close_field` is used, this must specify the number
|
If :attr:`auto_close_field` is used, this must specify the number
|
||||||
of days past the value of the field specified by
|
of days past the value of the field specified by
|
||||||
:attr:`auto_close_field` after which new comments for an object
|
:attr:`auto_close_field` after which new comments for an object
|
||||||
should be disallowed. Default value is ``None``.
|
should be disallowed. Allowed values are ``None``, 0 (which disallows
|
||||||
|
comments immediately), or any positive integer. Default value is
|
||||||
|
``None``.
|
||||||
|
|
||||||
.. attribute:: email_notification
|
.. attribute:: email_notification
|
||||||
|
|
||||||
|
@ -126,12 +128,18 @@ Built-in moderation options
|
||||||
If :attr:`auto_moderate_field` is used, this must specify the number
|
If :attr:`auto_moderate_field` is used, this must specify the number
|
||||||
of days past the value of the field specified by
|
of days past the value of the field specified by
|
||||||
:attr:`auto_moderate_field` after which new comments for an object
|
:attr:`auto_moderate_field` after which new comments for an object
|
||||||
should be marked non-public. Default value is ``None``.
|
should be marked non-public. Allowed values are ``None``, 0 (which
|
||||||
|
moderates comments immediately), or any positive integer. Default
|
||||||
|
value is ``None``.
|
||||||
|
|
||||||
Simply subclassing :class:`CommentModerator` and changing the values of these
|
Simply subclassing :class:`CommentModerator` and changing the values of these
|
||||||
options will automatically enable the various moderation methods for any
|
options will automatically enable the various moderation methods for any
|
||||||
models registered using the subclass.
|
models registered using the subclass.
|
||||||
|
|
||||||
|
.. versionchanged:: 1.3
|
||||||
|
|
||||||
|
``moderate_after`` and ``close_after`` now accept 0 as a valid value.
|
||||||
|
|
||||||
Adding custom moderation methods
|
Adding custom moderation methods
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,14 @@ class EntryModerator4(CommentModerator):
|
||||||
auto_moderate_field = 'pub_date'
|
auto_moderate_field = 'pub_date'
|
||||||
moderate_after = 7
|
moderate_after = 7
|
||||||
|
|
||||||
|
class EntryModerator5(CommentModerator):
|
||||||
|
auto_moderate_field = 'pub_date'
|
||||||
|
moderate_after = 0
|
||||||
|
|
||||||
|
class EntryModerator6(CommentModerator):
|
||||||
|
auto_close_field = 'pub_date'
|
||||||
|
close_after = 0
|
||||||
|
|
||||||
class CommentUtilsModeratorTests(CommentTestCase):
|
class CommentUtilsModeratorTests(CommentTestCase):
|
||||||
fixtures = ["comment_utils.xml"]
|
fixtures = ["comment_utils.xml"]
|
||||||
|
|
||||||
|
@ -73,3 +81,13 @@ class CommentUtilsModeratorTests(CommentTestCase):
|
||||||
moderator.register(Entry, EntryModerator4)
|
moderator.register(Entry, EntryModerator4)
|
||||||
c1, c2 = self.createSomeComments()
|
c1, c2 = self.createSomeComments()
|
||||||
self.assertEquals(c2.is_public, False)
|
self.assertEquals(c2.is_public, False)
|
||||||
|
|
||||||
|
def testAutoModerateFieldImmediate(self):
|
||||||
|
moderator.register(Entry, EntryModerator5)
|
||||||
|
c1, c2 = self.createSomeComments()
|
||||||
|
self.assertEquals(c2.is_public, False)
|
||||||
|
|
||||||
|
def testAutoCloseFieldImmediate(self):
|
||||||
|
moderator.register(Entry, EntryModerator6)
|
||||||
|
c1, c2 = self.createSomeComments()
|
||||||
|
self.assertEquals(Comment.objects.all().count(), 0)
|
Loading…
Reference in New Issue