Effing spam.

master
Nick Sergeant 2016-05-09 12:35:49 -04:00
parent 03bef7a4bd
commit 8f59093aff
2 changed files with 26 additions and 6 deletions

View File

@ -1,3 +1,4 @@
AKISMET_KEY = ''
CSRF_COOKIE_SECURE = False CSRF_COOKIE_SECURE = False
DEBUG = True DEBUG = True
INTERCOM_SECRET_KEY = '' INTERCOM_SECRET_KEY = ''

View File

@ -2,9 +2,11 @@ import datetime
import hashlib import hashlib
import parsedatetime as pdt import parsedatetime as pdt
import re import re
import requests
import time import time
from accounts.models import UserProfile from accounts.models import UserProfile
from django.conf import settings
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import models from django.db import models
from django.template.defaultfilters import date, urlize, linebreaksbr from django.template.defaultfilters import date, urlize, linebreaksbr
@ -141,7 +143,7 @@ class FavoriteValidation(Validation):
if Favorite.objects.filter(user=bundle.request.user, if Favorite.objects.filter(user=bundle.request.user,
snipt=snipt).count(): snipt=snipt).count():
errors['duplicate'] = 'User has already favorited this snipt.' errors = 'User has already favorited this snipt.'
return errors return errors
@ -151,7 +153,24 @@ class SniptValidation(Validation):
errors = {} errors = {}
if (len(bundle.data['title']) > 255): if (len(bundle.data['title']) > 255):
errors['title-length'] = ("Title must be 255 characters or less.") errors = 'Title must be 255 characters or less.'
akismet_url = 'https://{}.rest.akismet.com/1.1/comment-check'.format(
settings.AKISMET_KEY)
blog = 'https://snipt.net'
user_ip = bundle.request.META.get('REMOTE_ADDR')
comment_content = bundle.obj.code
payload = {
'blog': blog,
'user_ip': user_ip,
'comment_content': comment_content
}
r = requests.post(akismet_url,
data=payload)
if r.text == 'true':
errors = 'This snipt looks like spam. If you believe that your snipt is not spam, please email support@snipt.net.'
return errors return errors
@ -163,9 +182,9 @@ class UserProfileValidation(Validation):
for field in bundle.data: for field in bundle.data:
if bundle.data[field]: if bundle.data[field]:
if not re.match('^[ A-Za-z0-9\/\@\._-]*$', bundle.data[field]): if not re.match('^[ A-Za-z0-9\/\@\._-]*$', bundle.data[field]):
errors[field] = ("Only spaces, letters, numbers, " errors[field] = ('Only spaces, letters, numbers, '
"underscores, dashes, periods, forward " 'underscores, dashes, periods, forward '
"slashes, and \"at sign\" are valid.") 'slashes, and "at sign" are valid.')
return errors return errors
@ -466,7 +485,7 @@ class PrivateSniptResource(ModelResource):
publish_date, result = p.parse(bundle.data['publish_date']) publish_date, result = p.parse(bundle.data['publish_date'])
if result != 0: if result != 0:
publish_date = time.strftime("%Y-%m-%d %H:%M:%S", publish_date) publish_date = time.strftime('%Y-%m-%d %H:%M:%S', publish_date)
else: else:
publish_date = datetime.datetime.now() publish_date = datetime.datetime.now()