Supply Akismet with everything it needs to work.

This commit is contained in:
Ray Schamp 2014-02-14 13:22:53 -05:00
parent 8f52a28e70
commit e4d0e3bcab
3 changed files with 11 additions and 2 deletions

View file

@ -66,6 +66,7 @@ class AddPostForm(forms.ModelForm):
self.topic = kwargs.pop('topic', None)
self.forum = kwargs.pop('forum', None)
self.ip = kwargs.pop('ip', None)
self.request_data = kwargs.pop('request_data', {})
self.is_ip_banned = kwargs.pop('is_ip_banned')
super(AddPostForm, self).__init__(*args, **kwargs)
@ -114,7 +115,7 @@ class AddPostForm(forms.ModelForm):
if self.user.groups.filter(name="New Scratchers"):
try:
cleaned_data['body'] = filter_akismet(body)
cleaned_data['body'] = filter_akismet(body, self.user, self.ip, self.request_data)
except AkismetSpamError as e:
self._errors['body'] = self.error_class([e.user_error()])
del cleaned_data['body']

View file

@ -433,7 +433,7 @@ class AkismetSpamError(Exception):
def user_error(self):
return _('Sorry, your post looks like spam!')
def filter_akismet(text):
def filter_akismet(text, user, ip, request_data):
is_spam = False
try:
from akismet import Akismet
@ -443,6 +443,11 @@ def filter_akismet(text):
agent=forum_settings.AKISMET_AGENT,
api_timeout=forum_settings.AKISMET_TIMEOUT)
if api.verify_key():
data = {
'user_ip': ip,
'user_agent': request_data.get("HTTP_USER_AGENT", ""),
'comment_author': user.username,
}
is_spam = api.comment_check(text)
else:
logger.error("Invalid Aksimet API key.", extra={'key': api.key, 'blog': api.blog_url, 'user_agent': api.user_agent})

View file

@ -430,6 +430,7 @@ def show_topic(request, topic_id, full=True):
post_form_kwargs = {
"topic":topic,
"user":request.user,
"request_data":request.META,
"ip":ip,
'is_ip_banned': request.is_ip_banned,
}
@ -568,6 +569,7 @@ def add_topic(request, forum_id, full=True):
post_form_kwargs = {
"forum": forum,
"user": request.user,
"request_data":request.META,
"ip": ip,
"is_ip_banned": request.is_ip_banned,
}
@ -1072,6 +1074,7 @@ def mobile_reply(request, post_id):
post_form_kwargs = {
"topic":post.topic,
"user":request.user,
"request_data":request.META,
"ip":ip,
'is_ip_banned': request.is_ip_banned,
}