AkismetModerator для комментариев в Django

В django есть хорошее встроенное приложение comments с поддержкой модерации. Сегодня написал AkismetModerator - крохотный класс, который фильтрует спам в комментариях с помощью сервиса Akismet:

from akismet import Akismet
from django.contrib.comments.moderation import CommentModerator, moderator
from django.utils.encoding import smart_str

class AkismetModerator(CommentModerator):
    def moderate(self, comment, content_object, request):
        api = Akismet(agent='AkismetModerator@vorushin.ru')
        if not api.key:
            api.setAPIKey(settings.AKISMET_KEY, 'http://vorushin2.wordpress.com')
        if not api.verify_key():
            return True
        return api.comment_check(smart_str(comment.comment), 
            {'user_ip': request.META['REMOTE_ADDR'], 
             'user_agent': request.META['HTTP_USER_AGENT']})

moderator.register(Entry, AkismetModerator)
moderator.register(Link, AkismetModerator)

Entry, Link - модели, комментарии к которым будут прогоняться через AkismetModerator.

comments powered by Disqus