Supply Akismet with everything it needs to work.
This commit is contained in:
parent
8f52a28e70
commit
e4d0e3bcab
3 changed files with 11 additions and 2 deletions
|
@ -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']
|
||||
|
|
|
@ -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})
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
Reference in a new issue