|
@@ -0,0 +1,21 @@
|
|
|
+from django.http import HttpResponseForbidden
|
|
|
+from .forms import PublicContribForm
|
|
|
+
|
|
|
+
|
|
|
+def prevent_robots(field_name='human_field'):
|
|
|
+ """
|
|
|
+ this decorator returns a HTTP 403 Forbidden error on POST requests
|
|
|
+ if a given field has been set
|
|
|
+
|
|
|
+ Keyword arguments :
|
|
|
+ field_name -- the name of the field to search for (default 'human_field')
|
|
|
+ """
|
|
|
+ def _dec(func):
|
|
|
+ def _wrapped_func(request, *args, **kwargs):
|
|
|
+ if request.method == 'POST':
|
|
|
+ form = PublicContribForm(request.POST)
|
|
|
+ if form.data[field_name]:
|
|
|
+ return HttpResponseForbidden()
|
|
|
+ return func(request, *args, **kwargs)
|
|
|
+ return _wrapped_func
|
|
|
+ return _dec
|