Hi,
I enabled re-captcha in review board, see:
https://reviews.melroy.org/account/register/Register new user fails with:
POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str. Request information.
Are you not forgetting .encode('utf-8') somewhere?
Traceback:
```
Internal Server Error: /account/register/
TypeError at /account/register/
POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.
Request Method: POST
Request URL:
https://reviews.melroy.org/account/register/ Django Version: 1.11.29
Python Executable: /venv/bin/python
Python Version: 3.8.10
Python Path: ['/site/conf', '/', '/venv/bin', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/venv/lib/python3.8/site-packages']
Server time: Sat, 26 Feb 2022 20:14:59 +0100
Installed Applications:
['corsheaders',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sites',
'django.contrib.sessions',
'django.contrib.staticfiles',
'djblets',
'djblets.avatars',
'djblets.configforms',
'djblets.datagrid',
'djblets.extensions',
'djblets.features',
'djblets.feedview',
'djblets.forms',
'djblets.gravatars',
'djblets.integrations',
'djblets.log',
'djblets.pipeline',
'djblets.privacy',
'djblets.recaptcha',
'djblets.siteconfig',
'djblets.util',
'haystack',
'oauth2_provider',
'pipeline',
'reviewboard',
'reviewboard.accounts',
'reviewboard.admin',
'reviewboard.attachments',
'reviewboard.avatars',
'reviewboard.changedescs',
'reviewboard.diffviewer',
'reviewboard.extensions',
'reviewboard.hostingsvcs',
'reviewboard.integrations',
'reviewboard.notifications',
'reviewboard.oauth',
'reviewboard.reviews',
'reviewboard.scmtools',
'reviewboard.site',
'reviewboard.webapi',
'django_evolution',
'beanbag_licensing',
'rbpowerpack',
'rbpowerpack.sshdb',
'rbintegrations']
Installed Middleware:
['django.middleware.gzip.GZipMiddleware',
'reviewboard.admin.middleware.InitReviewBoardMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.http.ConditionalGetMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'djblets.siteconfig.middleware.SettingsMiddleware',
'reviewboard.admin.middleware.LoadSettingsMiddleware',
'djblets.extensions.middleware.ExtensionsMiddleware',
'djblets.integrations.middleware.IntegrationsMiddleware',
'djblets.log.middleware.LoggingMiddleware',
'reviewboard.accounts.middleware.TimezoneMiddleware',
'reviewboard.accounts.middleware.UpdateLastLoginMiddleware',
'reviewboard.admin.middleware.CheckUpdatesRequiredMiddleware',
'reviewboard.accounts.middleware.X509AuthMiddleware',
'reviewboard.site.middleware.LocalSiteMiddleware',
'djblets.extensions.middleware.ExtensionsMiddlewareRunner',
'reviewboard.admin.middleware.ExtraExceptionInfoMiddleware']
Traceback:
File "/venv/lib/python3.8/site-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/venv/lib/python3.8/site-packages/django/core/handlers/base.py" in _legacy_get_response
249. response = self._get_response(request)
File "/venv/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/venv/lib/python3.8/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/venv/lib/python3.8/site-packages/django/utils/decorators.py" in _wrapped_view
149. response = view_func(request, *args, **kwargs)
File "/venv/lib/python3.8/site-packages/reviewboard/accounts/views.py" in account_register
208. response = register(request, next_page=reverse(next_url),
File "/venv/lib/python3.8/site-packages/django/utils/decorators.py" in _wrapped_view
149. response = view_func(request, *args, **kwargs)
File "/venv/lib/python3.8/site-packages/djblets/auth/views.py" in register
93. form.full_clean()
File "/venv/lib/python3.8/site-packages/django/forms/forms.py" in full_clean
385. self._clean_form()
File "/venv/lib/python3.8/site-packages/django/forms/forms.py" in _clean_form
412. cleaned_data = self.clean()
File "/venv/lib/python3.8/site-packages/djblets/recaptcha/mixins.py" in clean
77. resp = urlopen(
File "/usr/lib/python3.8/urllib/request.py" in urlopen
222. return opener.open(url, data, timeout)
File "/usr/lib/python3.8/urllib/request.py" in open
522. req = meth(req)
File "/usr/lib/python3.8/urllib/request.py" in do_request_
1285. raise TypeError(msg)
Exception Type: TypeError at /account/register/
Exception Value: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.
Request information:
USER: AnonymousUser
GET: No GET data
POST:
csrfmiddlewaretoken = 'Cdat....secret.....'
username = 'testuser'
password1 = 'abcdefg'
password2 = 'abcdefg'
email = '
te...@mail.com'
first_name = 'test'
last_name = 'user'
g-recaptcha-response = '03AGdBq24rTzCVy....secret.....'
FILES: No FILES data
COOKIES:
logged_out_marketing_header_id = 'eyJfcmFpbHMiO....secret.....'
rbsessionid = 'm0po7qgsh....secret.....'
META:
CONTENT_LENGTH = '707'
CONTENT_TYPE = 'application/x-www-form-urlencoded'
CSRF_COOKIE = 'MOpGZ83P....secret.....'
HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'
HTTP_ACCEPT_ENCODING = 'gzip, deflate, br'
HTTP_ACCEPT_LANGUAGE = 'en-US,en;q=0.5'
HTTP_CONNECTION = 'close'
HTTP_COOKIE = 'logged_out_marketing_header_id=eyJfcmFpbHMiOn....secret.....; csrftoken=MOpGZ....secret.....'
HTTP_HOST = '
reviews.melroy.org'
HTTP_ORIGIN = '
https://reviews.melroy.org'
HTTP_REFERER = '
https://reviews.melroy.org/account/register/'
HTTP_SEC_FETCH_DEST = 'document'
HTTP_SEC_FETCH_MODE = 'navigate'
HTTP_SEC_FETCH_SITE = 'same-origin'
HTTP_SEC_FETCH_USER = '?1'
HTTP_UPGRADE_INSECURE_REQUESTS = '1'
HTTP_USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0'
HTTP_X_FORWARDED_FOR = '192.168.2.166'
LOCAL_SITE = None
PATH_INFO = '/account/register/'
QUERY_STRING = ''
RAW_URI = '/account/register/'
REMOTE_ADDR = '172.18.0.1'
REMOTE_PORT = '57868'
REQUEST_METHOD = 'POST'
SCRIPT_NAME = ''
SERVER_NAME = '0.0.0.0'
SERVER_PORT = '8080'
SERVER_PROTOCOL = 'HTTP/1.0'
SERVER_SOFTWARE = 'gunicorn/20.1.0'
gunicorn.socket = <socket.socket fd=10, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.18.0.9', 8080), raddr=('172.18.0.1', 57868)>
wsgi.errors = <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f527b78b160>
wsgi.file_wrapper = ''
wsgi.input = <gunicorn.http.body.Body object at 0x7f527b78b250>
wsgi.input_terminated = True
wsgi.multiprocess = True
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'https'
wsgi.version = '(1, 0)'
[....]
```