Skip to content

nickdjones/django-akismet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-akismet

django-akismet lets you use Akismet's spam checks without requiring any modification to your models. It provides a signal receiver which will check comments as they are created, although you can also check comments with a management command or Celery task.

By default it will update the admin interface for your comment model to add 'mark as spam' and 'mark as ham' actions, which are used to train Akismet on existing messages.

Example:

# models.py
class MyComment(models.Model):
    comment = models.CharField(.....)
    user = models.ForeignKey(User)

# someapp/spam_checks.py
from dj_akismet import spam_checks
from dj_akismet.utils import do_spam_check

class MyCommentCheck(AkismetCheck):

    def get_data(self):
        return {'comment_author': self.object.author.username,
                'comment_author_email': self.object.author.email,
                ...
                }

    def get_content(self):
        return self.object.comment

    def is_spam(self):
        self.object.delete()

    def is_ham(self):
        self.object.publish()
spam_checks.register(MyCommentCheck, model=MyComment)

# Set up a signal to check for spam when comments are posted (optional)
post_save.connect(spam_check,
                  sender=MyComment,
                  dispatch_uid='do_spam_check')

# settings.py
# List of modules to search for AkismetCheck subclasses
AKISMET_CHECK_SOURCES = (
    'someapp.spam_checks',
)
AKISMET_API_KEY = 'your key'
AKISMET_DOMAIN = 'your domain'

TODO

  • Management command to check multiple items from command line
  • Fix admin interface for AkismetCheckItems

About

Akismet spam checks for your Django models

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages