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 field_name in form.data and form.data[field_name]:
                    return HttpResponseForbidden()
            return func(request, *args, **kwargs)
        return _wrapped_func
    return _dec