An error message is added if user enters wrong credentials while login and the UI of /accounts/confirm-email page is fixed
It resolves #4056
The error message for the wrong credentials while login -
The UI of /accounts/confirm-email/ page -
Summary by CodeRabbit
- New Features
- Enhanced the login experience with clear, instant error notifications for invalid inputs.
- Added a new verification page that guides users to check their email and offers easy access to login and sign-up options.
- Refactor
- Improved the header structure for more flexible customization, supporting a consistent and adaptable interface.
Walkthrough
Login now shows non-field form errors and Django messages and replaces "Username" with translatable "Email" (input still bound to form.login); verification pages converted to two‑panel layouts with resend/login/signup CTAs and spam reminders; ACCOUNT_USERNAME_REQUIRED removed and ACCOUNT_AUTHENTICATION_METHOD = "email" added; tests updated to use email-based login.
Changes
| Cohort / File(s) | Change Summary |
|---|---|
Login templatewebsite/templates/account/login.html |
Replaced "Username" label with translatable "Email" (type="email" input still bound to form.login/form.login.value); added rendering for form.non_field_errors and Django messages with tag-based alert styling; minor comment/text fixes. |
Verification sent pagewebsite/templates/account/verification_sent.html |
Added {% load i18n %} and header/include_header blocks; converted to a responsive two-panel layout (branding/info left, verification content right); updated heading to "Check Your Email"; moved resend action and added two-column CTAs for Login and Sign Up. |
Email confirmation pagewebsite/templates/account/email_confirm.html |
Added "Already Verified" indicator, spam-folder reminder and "Helpful Tips" blocks for verified and invalid/expired flows; changed action label to "Resend Verification Email"; minor styling/markup refinements. |
Auth settingsblt/settings.py |
Removed ACCOUNT_USERNAME_REQUIRED = True; added ACCOUNT_AUTHENTICATION_METHOD = "email" near existing email/verification settings. |
API testswebsite/tests/test_api.py |
Updated login payloads (3 occurrences) to use email instead of username. |
Selenium / UI testswebsite/tests/test_main.py |
Switched UI login flows to use email; added _ensure_bugbug_user_verified helper and invoked it; adjusted assertions and DOM selectors to match updated flows. |
Unit & integration tests (many)website/tests/test_feed.py, website/tests/test_adventure.py, website/tests/test_bidding.py, website/tests/test_bitcoin_slack_notification.py, website/tests/test_bugs_list.py, website/tests/test_core.py, website/tests/test_issues.py, website/tests/test_organization.py, website/tests/test_project_compact_view.py, website/tests/test_user_profile.py |
Tests updated to create users with email and authenticate via login(email=..., password=...) (replacing username=...); no other assertion or control-flow changes. |
Estimated code review effort
🎯 4 (Complex) | ⏱️ ~45 minutes
- Pay special attention to:
website/templates/account/login.html: confirmname="login"/form.loginremain compatible with the authentication backend (allauth) and that message rendering is properly escaped and accessible.blt/settings.py: ensureACCOUNT_AUTHENTICATION_METHOD = "email"is consistent with allauth configuration and there are no residual username checks.website/tests/test_main.py: verify the_ensure_bugbug_user_verifiedhelper deterministically verifies the user in test context and that Selenium selectors reflect updated markup.- Broad test sweep: many tests switched to
login(email=...)— confirm Django test Client and user creation calls match positional/keyword argument expectations used in each test.
Pre-merge checks and finishing touches
❌ Failed checks (2 warnings)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Out of Scope Changes check | ⚠️ Warning | The PR includes significant out-of-scope changes beyond the three stated objectives: a comprehensive email-based authentication refactor affecting 16 test files with wholesale credential migration from username to email, and changes to Django settings that go beyond the issue requirements. | Separate the email authentication refactor (tests and core settings) into a distinct PR, keeping this PR focused on the three stated objectives: error message display, UI fixes, and ACCOUNT_AUTHENTICATION_METHOD configuration only. |
| Docstring Coverage | ⚠️ Warning | Docstring coverage is 59.52% which is insufficient. The required threshold is 80.00%. | You can run @coderabbitai generate docstrings to improve docstring coverage. |
✅ Passed checks (3 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | The title is partially related to the changeset. It mentions two main goals (error message on login and email verification UI fixes) which are present, but the actual implementation reveals a much broader email-based authentication refactor affecting test files and configuration, which the title does not capture. |
| Linked Issues check | ✅ Passed | The PR addresses the three coding requirements from issue #4056: (1) error message display for wrong credentials via form.non_field_errors rendering in login.html, (2) email verification UI fixes via updated email_confirm.html and verification_sent.html, and (3) email-based authentication via ACCOUNT_AUTHENTICATION_METHOD="email" setting and updated form bindings. |
✨ Finishing touches
- [ ] 📝 Generate docstrings
🧪 Generate unit tests (beta)
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands and usage tips.
please resolve the conflicts
Sure
@swaparup36 LGTM! Just a note, the UI for /accounts/confirm-email/ was also updated recently in another PR by someone. Maybe double-check with @DonnieBLT on which version should be kept.
❌ Pre-commit checks failed
The pre-commit hooks found issues that need to be fixed. Please run the following commands locally to fix them:
# Install pre-commit if you haven't already
pip install pre-commit
# Run pre-commit on all files
pre-commit run --all-files
# Or run pre-commit on staged files only
pre-commit run
After running these commands, the pre-commit hooks will automatically fix most issues. Please review the changes, commit them, and push to your branch.
💡 Tip: You can set up pre-commit to run automatically on every commit by running:
pre-commit install
Pre-commit output
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
[WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this. if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/pycqa/isort.
[WARNING] repo `https://github.com/pycqa/isort` uses deprecated stage names (commit, merge-commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pycqa/isort` will fix this. if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Initializing environment for https://github.com/djlint/djLint.
[INFO] Initializing environment for local.
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/djlint/djLint.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for local.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
check python ast.........................................................Passed
check builtin type constructor use.......................................Passed
check yaml...............................................................Passed
fix python encoding pragma...............................................Passed
mixed line ending........................................................Passed
isort....................................................................Passed
ruff.....................................................................Passed
ruff-format..............................................................Failed
- hook id: ruff-format
- files were modified by this hook
1 file reformatted, 432 files left unchanged
For more information, see the pre-commit documentation.
💬 Reminder: Unresolved Conversations
Hi @swaparup36!
This pull request has 2 unresolved conversations that need to be addressed.
Please review and resolve the pending discussions so we can move forward with merging this PR.
Thank you! 🙏
❌ Pre-commit checks failed
The pre-commit hooks found issues that need to be fixed. Please run the following commands locally to fix them:
# Install pre-commit if you haven't already
pip install pre-commit
# Run pre-commit on all files
pre-commit run --all-files
# Or run pre-commit on staged files only
pre-commit run
After running these commands, the pre-commit hooks will automatically fix most issues. Please review the changes, commit them, and push to your branch.
💡 Tip: You can set up pre-commit to run automatically on every commit by running:
pre-commit install
Pre-commit output
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
[WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this. if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/pycqa/isort.
[WARNING] repo `https://github.com/pycqa/isort` uses deprecated stage names (commit, merge-commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pycqa/isort` will fix this. if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Initializing environment for https://github.com/djlint/djLint.
[INFO] Initializing environment for local.
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/djlint/djLint.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for local.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
check python ast.........................................................Passed
check builtin type constructor use.......................................Passed
check yaml...............................................................Passed
fix python encoding pragma...............................................Passed
mixed line ending........................................................Passed
isort....................................................................Failed
- hook id: isort
- files were modified by this hook
Fixing /home/runner/work/BLT/BLT/website/views/core.py
For more information, see the pre-commit documentation.
👋 Hi @swaparup36!
This pull request needs a peer review before it can be merged. Please request a review from a team member who is not:
- The PR author
- DonnieBLT
- coderabbitai
- copilot
Once a valid peer review is submitted, this check will pass automatically. Thank you!
❌ Tests failed
The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.
How to run tests locally
# Install dependencies
poetry install --with dev
# Run all tests
poetry run python manage.py test
# Run tests with verbose output
poetry run python manage.py test -v 3
# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
DEBUG Finished Request
tearDownClass (website.tests.test_main.MySeleniumTests) ... ERROR
======================================================================
ERROR: test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
self._post_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
self._fixture_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
call_command(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
sql_list = sql_flush(
^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
tables = connection.introspection.django_table_names(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
existing_tables = set(self.table_names(include_views=include_views))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
return get_names(cursor)
^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
for ti in self.get_table_list(cursor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
cursor.execute(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
======================================================================
ERROR: tearDownClass (website.tests.test_main.MySeleniumTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 93, in tearDownClass
User.objects.filter(username="bugbugbug").delete()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 1187, in delete
collector.collect(del_query)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/deletion.py", line 282, in collect
new_objs = self.add(
^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/deletion.py", line 124, in add
if not objs:
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 414, in __bool__
self._fetch_all()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 1928, in _fetch_all
self._result_cache = list(self._iterable_class(self))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 91, in __iter__
results = compiler.execute_sql(
^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
cursor.execute(sql, params)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
======================================================================
FAIL: test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 232, in test_post_bug_domain_url
self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:54623/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 06:51:38 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n response = self.process_request(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n tz = request.session.get("detected_tz")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n return self._session.get(key, default)\n ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n self._session_cache = self.load()\n ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n s = self._get_session_from_db()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n return self.model.objects.get(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n return getattr(self.get_queryset(), name)(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n num = len(clone)\n ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n results = compiler.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.431395484.1764485490\'\n_gid\n\'GA1.1.830803467.1764485490\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764485489$o1$g1$t1764485496$j53$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'NA3vdYi7VQGcdd76lLY7aBDH2HVrUjYs\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19795174177\'\nGITHUB_RUN_NUMBER\n\'14375\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:54623\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'97f612fddd07456eacbaa1f09bbc5f93\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:14387\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000578780\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_3aecf096-d92d-4746-84ed-92793f43eee3\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'54623\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1893\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.VeKhvH/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7f4b946f9c00>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7f4baa8e1620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n \'AUTOCOMMIT\': True,\n \'CONN_HEALTH_CHECKS\': False,\n \'CONN_MAX_AGE\': 0,\n \'ENGINE\': \'django.db.backends.sqlite3\',\n \'HOST\': \'\',\n \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n \'OPTIONS\': {},\n \'PASSWORD\': \'********************\',\n \'PORT\': \'\',\n \'TEST\': {\'CHARSET\': None,\n \'COLLATION\': None,\n \'MIGRATE\': True,\n \'MIRROR\': None,\n \'NAME\': None},\n \'TIME_ZONE\': None,\n \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n \'formatter\': \'simple\',\n \'level\': \'DEBUG\',\n \'stream\': \'ext://sys.stdout\'},\n \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'django.server\': {\'handlers\': [\'console\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'website\': {\'handlers\': [\'console\'],\n \'level\': \'DEBUG\',\n \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n \'toolbar\': [\'undo\',\n \'redo\',\n \'|\',\n \'bold\',\n \'del\',\n \'italic\',\n \'quote\',\n \'ucwords\',\n \'uppercase\',\n \'lowercase\',\n \'|\',\n \'h1\',\n \'h2\',\n \'h3\',\n \'h5\',\n \'h6\',\n \'|\',\n \'list-ul\',\n \'list-ol\',\n \'hr\',\n \'|\',\n \'link\',\n \'reference-link\',\n \'code\',\n \'code-block\',\n \'table\',\n \'datetime\',\n \'||\',\n \'preview\',\n \'fullscreen\'],\n \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n \'FIELDS\': [\'id\',\n \'email\',\n \'name\',\n \'first_name\',\n \'last_name\',\n \'verified\',\n \'locale\',\n \'timezone\',\n \'link\'],\n \'LOCALE_FUNC\': <function <lambda> at 0x7f4ba8ce3380>,\n \'METHOD\': \'oauth2\',\n \'SCOPE\': [\'email\'],\n \'VERIFIED_EMAIL\': False,\n \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n \'django.template.context_processors.request\',\n \'django.template.context_processors.media\',\n \'django.contrib.auth.context_processors.auth\',\n \'django.contrib.messages.context_processors.messages\',\n \'django.template.context_processors.i18n\'],\n \'debug\': False,\n \'loaders\': [(\'django.template.loaders.cached.Loader\',\n [\'django.template.loaders.filesystem.Loader\',\n \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'
----------------------------------------------------------------------
Ran 215 tests in 128.268s
FAILED (failures=1, errors=2)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
For more information, see the Django testing documentation.
@coderabbitai can you give me the fix for the test failing error
[!TIP] For best results, initiate chat on the files or code changes.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Get PR details including CI status and checks
gh pr view 4065 --json statusCheckRollup,commits --repo OWASP-BLT/BLT
# Get the latest commit SHA
LATEST_COMMIT=$(gh pr view 4065 --json commits --jq '.commits[-1].oid' --repo OWASP-BLT/BLT)
echo "=== Latest commit: $LATEST_COMMIT ==="
# Get check runs for the latest commit
gh api "/repos/OWASP-BLT/BLT/commits/$LATEST_COMMIT/check-runs" --jq '.check_runs[] | {name: .name, status: .status, conclusion: .conclusion, html_url: .html_url}'
Length of output: 16083
🏁 Script executed:
#!/bin/bash
# Get the logs from the failed test job
gh run view 19795174177 --repo OWASP-BLT/BLT --log | grep -A 50 -B 10 "FAILED\|ERROR\|AssertionError\|Traceback" | head -200
Length of output: 24431
🏁 Script executed:
#!/bin/bash
# Search for the actual test failure summary at the end of the log
gh run view 19795174177 --repo OWASP-BLT/BLT --log | grep -A 100 "FAILED\|test_login"
Length of output: 68449
I need to get the actual specific test error details from the logs. Let me search more specifically in the logs.
🏁 Script executed:
#!/bin/bash
# Get the detailed error/failure messages from the test logs
gh run view 19795174177 --repo OWASP-BLT/BLT --log | grep -B 20 "FAILED (failures=1, errors=2)" | head -100
Length of output: 32618
🏁 Script executed:
#!/bin/bash
# Get the test_main.py file to see the test structure
cat website/tests/test_main.py
Length of output: 22696
@swaparup36 I found the issue! The tests test_post_bug_full_url and test_post_bug_domain_url are failing because they're trying to log in with the user "bugbug", but that user doesn't have a verified email address. Your PR requires email verification for login to work properly.
Here's the fix for website/tests/test_main.py:
@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
# Create and verify the bugbug user
self._ensure_verified_user("bugbug", "[email protected]", "secret")
self.selenium.set_page_load_timeout(70)
self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
self.selenium.find_element("name", "login").send_keys("bugbug")
self.selenium.find_element("name", "password").send_keys("secret")
self.selenium.find_element("name", "login_button").click()
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
# Add explicit wait for the URL input field
url_input = WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.NAME, "url")))
url_input.send_keys("https://blt.owasp.org/report/")
self.selenium.find_element("id", "description").send_keys("XSS Attack on Google") # title of bug
self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
# pass captacha if in test mode
self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
self.selenium.find_element("name", "reportbug_button").click()
self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
body = self.selenium.find_element("tag name", "body")
self.assertIn("XSS Attack on Google", body.text)
@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
# Create and verify the bugbug user
self._ensure_verified_user("bugbug", "[email protected]", "secret")
self.selenium.set_page_load_timeout(70)
self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
self.selenium.find_element("name", "login").send_keys("bugbug")
self.selenium.find_element("name", "password").send_keys("secret")
self.selenium.find_element("name", "login_button").click()
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
self.selenium.find_element("name", "url").send_keys("https://google.com")
self.selenium.find_element("id", "description").send_keys("XSS Attack on Google") # title of bug
self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
# pass captacha if in test mode
self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
self.selenium.find_element("name", "reportbug_button").click()
self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
body = self.selenium.find_element("tag name", "body")
self.assertIn("XSS Attack on Google", body.text)
Also update the tearDownClass method to clean up both test users:
@classmethod
def tearDownClass(cls):
cls.selenium.quit()
# Clean up both test users
User.objects.filter(username="bugbugbug").delete()
User.objects.filter(username="bugbug").delete()
super(MySeleniumTests, cls).tearDownClass()
Summary of changes:
- Add
self._ensure_verified_user("bugbug", "[email protected]", "secret")at the beginning of bothtest_post_bug_full_urlandtest_post_bug_domain_urlmethods - Update
tearDownClassto delete both "bugbugbug" and "bugbug" users
This ensures that the "bugbug" user has a verified email address before the tests try to log in, which is required after your authentication changes.
❌ Pre-commit checks failed
The pre-commit hooks found issues that need to be fixed. Please run the following commands locally to fix them:
# Install pre-commit if you haven't already
pip install pre-commit
# Run pre-commit on all files
pre-commit run --all-files
# Or run pre-commit on staged files only
pre-commit run
After running these commands, the pre-commit hooks will automatically fix most issues. Please review the changes, commit them, and push to your branch.
💡 Tip: You can set up pre-commit to run automatically on every commit by running:
pre-commit install
Pre-commit output
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
[WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this. if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/pycqa/isort.
[WARNING] repo `https://github.com/pycqa/isort` uses deprecated stage names (commit, merge-commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pycqa/isort` will fix this. if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Initializing environment for https://github.com/djlint/djLint.
[INFO] Initializing environment for local.
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/djlint/djLint.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for local.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
check python ast.........................................................Passed
check builtin type constructor use.......................................Passed
check yaml...............................................................Passed
fix python encoding pragma...............................................Passed
mixed line ending........................................................Passed
isort....................................................................Passed
ruff.....................................................................Passed
ruff-format..............................................................Failed
- hook id: ruff-format
- files were modified by this hook
1 file reformatted, 461 files left unchanged
For more information, see the pre-commit documentation.
❌ Tests failed
The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.
How to run tests locally
# Install dependencies
poetry install --with dev
# Run all tests
poetry run python manage.py test
# Run tests with verbose output
poetry run python manage.py test -v 3
# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
cursor.execute(sql, params)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
DEBUG http://localhost:52611 "POST /session/b4b53bd941c289c78556dcb43241c371/url HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:52611/session/b4b53bd941c289c78556dcb43241c371/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:52611 "POST /session/b4b53bd941c289c78556dcb43241c371/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.EBB2BCDB451C4D1FD31537DA670B2267.d.893D30F0328B3C4CDDB2086C7230736A.e.422"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:52611/session/b4b53bd941c289c78556dcb43241c371/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:52611 "POST /session/b4b53bd941c289c78556dcb43241c371/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.EBB2BCDB451C4D1FD31537DA670B2267.d.893D30F0328B3C4CDDB2086C7230736A.e.422"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG GET http://localhost:52611/session/b4b53bd941c289c78556dcb43241c371/element/f.EBB2BCDB451C4D1FD31537DA670B2267.d.893D30F0328B3C4CDDB2086C7230736A.e.422/text {}
DEBUG http://localhost:52611 "GET /session/b4b53bd941c289c78556dcb43241c371/element/f.EBB2BCDB451C4D1FD31537DA670B2267.d.893D30F0328B3C4CDDB2086C7230736A.e.422/text HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":"TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nRequest Method: GET\nRequest URL: http://localhost:56995/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n['/home/runner/work/BLT/BLT',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload',\n '/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages',\n '/home/runner/work/BLT/BLT']\nServer time: Sun, 30 Nov 2025 09:13:55 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n response = self.process_request(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n tz = request.session.get(\"detected_tz\")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n return self._session.get(key, default)\n ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n self._session_cache = self.load()\n ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n s = self._get_session_from_db()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n return self.model.objects.get(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n return getattr(self.get_queryset(), name)(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n num = len(clone)\n ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n results = compiler.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n'GA1.1.979471064.1764494023'\n_gid\n'GA1.1.1495401734.1764494023'\n_gat\n'1'\ncsrftoken\n'********************'\nsessionid\n'********************'\n_ga_TJDHVT49Y0\n'GS2.1.s1764494022$o1$g1$t1764494034$j48$l0$h0'\nMETA\nVariable Value\nACCEPT_EULA\n'Y'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n'/opt/actionarchivecache'\nAGENT_TOOLSDIRECTORY\n'/opt/hostedtoolcache'\nANDROID_HOME\n'/usr/local/lib/android/sdk'\nANDROID_NDK\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_HOME\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_LATEST_HOME\n'/usr/local/lib/android/sdk/ndk/29.0.14206865'\nANDROID_NDK_ROOT\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_SDK_ROOT\n'/usr/local/lib/android/sdk'\nANT_HOME\n'/usr/share/ant'\nAZURE_EXTENSION_DIR\n'/opt/az/azcliextensions'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n'1'\nCHROMEWEBDRIVER\n'/usr/local/share/chromedriver-linux64'\nCHROME_BIN\n'/usr/bin/google-chrome'\nCI\n'true'\nCONDA\n'/usr/share/miniconda'\nCONTENT_LENGTH\n''\nCONTENT_TYPE\n'text/plain'\nCSRF_COOKIE\n'ED8vdcqZ6pDnPkwtaLtCzXKUU6nVIc8x'\nDEBIAN_FRONTEND\n'noninteractive'\nDISPLAY\n':99'\nDJANGO_SETTINGS_MODULE\n'blt.settings'\nDOTNET_MULTILEVEL_LOOKUP\n'0'\nDOTNET_NOLOGO\n'1'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n'1'\nEDGEWEBDRIVER\n'/usr/local/share/edge_driver'\nENABLE_RUNNER_TRACING\n'true'\nFORCE_COLOR\n'1'\nGATEWAY_INTERFACE\n'CGI/1.1'\nGECKOWEBDRIVER\n'/usr/local/share/gecko_driver'\nGHCUP_INSTALL_BASE_PREFIX\n'/usr/local'\nGITHUB_ACTION\n'run-tests'\nGITHUB_ACTIONS\n'true'\nGITHUB_ACTION_REF\n''\nGITHUB_ACTION_REPOSITORY\n''\nGITHUB_ACTOR\n'swaparup36'\nGITHUB_ACTOR_ID\n'82692857'\nGITHUB_API_URL\n'********************'\nGITHUB_BASE_REF\n'main'\nGITHUB_ENV\n'/home/runner/work/_temp/_runner_file_commands/set_env_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_EVENT_NAME\n'pull_request_target'\nGITHUB_EVENT_PATH\n'/home/runner/work/_temp/_github_workflow/event.json'\nGITHUB_GRAPHQL_URL\n'https://api.github.com/graphql'\nGITHUB_HEAD_REF\n'error-msg-login-email-verification-ui'\nGITHUB_JOB\n'test'\nGITHUB_OUTPUT\n'/home/runner/work/_temp/_runner_file_commands/set_output_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_PATH\n'/home/runner/work/_temp/_runner_file_commands/add_path_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_REF\n'refs/heads/main'\nGITHUB_REF_NAME\n'main'\nGITHUB_REF_PROTECTED\n'false'\nGITHUB_REF_TYPE\n'branch'\nGITHUB_REPOSITORY\n'OWASP-BLT/BLT'\nGITHUB_REPOSITORY_ID\n'62963654'\nGITHUB_REPOSITORY_OWNER\n'OWASP-BLT'\nGITHUB_REPOSITORY_OWNER_ID\n'160347863'\nGITHUB_RETENTION_DAYS\n'90'\nGITHUB_RUN_ATTEMPT\n'1'\nGITHUB_RUN_ID\n'19796685423'\nGITHUB_RUN_NUMBER\n'14380'\nGITHUB_SERVER_URL\n'https://github.com'\nGITHUB_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_STATE\n'/home/runner/work/_temp/_runner_file_commands/save_state_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_STEP_SUMMARY\n'/home/runner/work/_temp/_runner_file_commands/step_summary_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_TRIGGERING_ACTOR\n'swaparup36'\nGITHUB_WORKFLOW\n'CI/CD Optimized'\nGITHUB_WORKFLOW_REF\n'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main'\nGITHUB_WORKFLOW_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_WORKSPACE\n'/home/runner/work/BLT/BLT'\nGOROOT_1_22_X64\n'/opt/hostedtoolcache/go/1.22.12/x64'\nGOROOT_1_23_X64\n'/opt/hostedtoolcache/go/1.23.12/x64'\nGOROOT_1_24_X64\n'/opt/hostedtoolcache/go/1.24.10/x64'\nGOROOT_1_25_X64\n'/opt/hostedtoolcache/go/1.25.4/x64'\nGRADLE_HOME\n'/usr/share/gradle-9.2.0'\nHOME\n'/home/runner'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n'3650'\nHOMEBREW_NO_AUTO_UPDATE\n'1'\nHTTP_ACCEPT\n'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'\nHTTP_ACCEPT_ENCODING\n'gzip, deflate, br, zstd'\nHTTP_ACCEPT_LANGUAGE\n'en-US,en;q=0.9'\nHTTP_CONNECTION\n'keep-alive'\nHTTP_COOKIE\n'********************'\nHTTP_HOST\n'localhost:56995'\nHTTP_SEC_CH_UA\n'\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"'\nHTTP_SEC_CH_UA_MOBILE\n'?0'\nHTTP_SEC_CH_UA_PLATFORM\n'\"Linux\"'\nHTTP_SEC_FETCH_DEST\n'document'\nHTTP_SEC_FETCH_MODE\n'navigate'\nHTTP_SEC_FETCH_SITE\n'none'\nHTTP_SEC_FETCH_USER\n'?1'\nHTTP_UPGRADE_INSECURE_REQUESTS\n'1'\nHTTP_USER_AGENT\n('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '\n 'HeadlessChrome/142.0.0.0 Safari/537.36')\nINVOCATION_ID\n'5cbc1ab196874c4b8d8a0f6a27fa826e'\nImageOS\n'ubuntu24'\nImageVersion\n'20251112.124.1'\nJAVA_HOME\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_11_X64\n'/usr/lib/jvm/temurin-11-jdk-amd64'\nJAVA_HOME_17_X64\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_21_X64\n'/usr/lib/jvm/temurin-21-jdk-amd64'\nJAVA_HOME_25_X64\n'/usr/lib/jvm/temurin-25-jdk-amd64'\nJAVA_HOME_8_X64\n'/usr/lib/jvm/temurin-8-jdk-amd64'\nJOURNAL_STREAM\n'9:13571'\nLANG\n'C.UTF-8'\nLD_LIBRARY_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib'\nLOGNAME\n'runner'\nMEMORY_PRESSURE_WATCH\n'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure'\nMEMORY_PRESSURE_WRITE\n'c29tZSAyMDAwMDAgMjAwMDAwMAA='\nNVM_DIR\n'/home/runner/.nvm'\nPATH\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'\nPATH_INFO\n'/all_activity/'\nPIPX_BIN_DIR\n'/opt/pipx_bin'\nPIPX_HOME\n'/opt/pipx'\nPKG_CONFIG_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig'\nPOETRY_CACHE_DIR\n'~/.cache/pypoetry'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n'GitHub-Actions-ubuntu24'\nPWD\n'/home/runner/work/BLT/BLT'\nPython2_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython3_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nQUERY_STRING\n''\nREMOTE_ADDR\n'127.0.0.1'\nREMOTE_HOST\n''\nREQUEST_METHOD\n'GET'\nRUNNER_ARCH\n'X64'\nRUNNER_DEBUG\n'1'\nRUNNER_ENVIRONMENT\n'github-hosted'\nRUNNER_NAME\n'GitHub Actions 1000578934'\nRUNNER_OS\n'Linux'\nRUNNER_TEMP\n'/home/runner/work/_temp'\nRUNNER_TOOL_CACHE\n'/opt/hostedtoolcache'\nRUNNER_TRACKING_ID\n'github_12364ba3-f986-4484-8504-a05c7d941dd7'\nRUNNER_WORKSPACE\n'/home/runner/work/BLT'\nSCRIPT_NAME\n''\nSELENIUM_JAR_PATH\n'/usr/share/java/selenium-server.jar'\nSERVER_NAME\n'localhost'\nSERVER_PORT\n'56995'\nSERVER_PROTOCOL\n'HTTP/1.1'\nSERVER_SOFTWARE\n'WSGIServer/0.2'\nSGX_AESM_ADDR\n'1'\nSHELL\n'/bin/bash'\nSHLVL\n'1'\nSWIFT_PATH\n'/usr/share/swift/usr/bin'\nSYSTEMD_EXEC_PID\n'1964'\nTZ\n'UTC'\nUSER\n'runner'\nVCPKG_INSTALLATION_ROOT\n'/usr/local/share/vcpkg'\nVIRTUAL_ENV\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11'\nXAUTHORITY\n'/tmp/xvfb-run.VJpxrR/Xauthority'\nXDG_CONFIG_HOME\n'/home/runner/.config'\nXDG_RUNTIME_DIR\n'/run/user/1001'\n_\n'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry'\npythonLocation\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nwsgi.errors\n\u003C_io.TextIOWrapper name='\u003Cstderr>' mode='w' encoding='utf-8'>\nwsgi.file_wrapper\n\u003Cclass 'wsgiref.util.FileWrapper'>\nwsgi.input\n\u003Cdjango.core.handlers.wsgi.LimitedStream object at 0x7f9473aa5a80>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n'http'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{'auth.user': \u003Cfunction \u003Clambda> at 0x7f948cd25620>}\nACCESS_TOKEN\n'********************'\nACCESS_TOKEN_SECRET\n'********************'\nACCOUNT_ADAPTER\n'allauth.account.adapter.DefaultAccountAdapter'\nACCOUNT_AUTHENTICATION_METHOD\n'username_email'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n'mandatory'\nACCOUNT_FORMS\n{'signup': 'website.forms.SignupFormWithCaptcha'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n(('Admin', '[email protected]'),)\nADMIN_URL\n'admin'\nALLOWED_HOSTS\n['127.0.0.1', 'localhost', '0.0.0.0', '', 'testserver']\nAPPEND_SLASH\nTrue\nAPP_KEY\n'********************'\nAPP_KEY_SECRET\n'********************'\nASGI_APPLICATION\n'blt.asgi.application'\nAUTHENTICATION_BACKENDS\n('django.contrib.auth.backends.ModelBackend',\n 'allauth.account.auth_backends.AuthenticationBackend')\nAUTH_PASSWORD_VALIDATORS\n'********************'\nAUTH_USER_MODEL\n'auth.User'\nAVATAR_PATH\n'media/avatars'\nBASE_DIR\n'/home/runner/work/BLT/BLT'\nBEARER_TOKEN\n'********************'\nBITCOIN_RPC_HOST\n'localhost'\nBITCOIN_RPC_PASSWORD\n'********************'\nBITCOIN_RPC_PORT\n'8332'\nBITCOIN_RPC_USER\n'yourusername'\nBLOG_URL\n'blt.owasp.org/blog/'\nBLUESKY_PASSWORD\n'********************'\nBLUESKY_USERNAME\n'default_username'\nCACHES\n{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n 'LOCATION': 'unique-snowflake'}}\nCACHE_MIDDLEWARE_ALIAS\n'default'\nCACHE_MIDDLEWARE_KEY_PREFIX\n'********************'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer',\n 'CONFIG': {'hosts': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n'csrftoken'\nCSRF_COOKIE_PATH\n'/'\nCSRF_COOKIE_SAMESITE\n'Lax'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n'django.views.csrf.csrf_failure'\nCSRF_HEADER_NAME\n'HTTP_X_CSRFTOKEN'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{'default': {'ATOMIC_REQUESTS': False,\n 'AUTOCOMMIT': True,\n 'CONN_HEALTH_CHECKS': False,\n 'CONN_MAX_AGE': 0,\n 'ENGINE': 'django.db.backends.sqlite3',\n 'HOST': '',\n 'NAME': 'file:memorydb_default?mode=memory&cache=shared',\n 'OPTIONS': {},\n 'PASSWORD': '********************',\n 'PORT': '',\n 'TEST': {'CHARSET': None,\n 'COLLATION': None,\n 'MIGRATE': True,\n 'MIRROR': None,\n 'NAME': None},\n 'TIME_ZONE': None,\n 'USER': ''}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n'N j, Y, P'\nDATETIME_INPUT_FORMATS\n['%Y-%m-%d %H:%M:%S',\n '%Y-%m-%d %H:%M:%S.%f',\n '%Y-%m-%d %H:%M',\n '%m/%d/%Y %H:%M:%S',\n '%m/%d/%Y %H:%M:%S.%f',\n '%m/%d/%Y %H:%M',\n '%m/%d/%y %H:%M:%S',\n '%m/%d/%y %H:%M:%S.%f',\n '%m/%d/%y %H:%M']\nDATE_FORMAT\n'N j, Y'\nDATE_INPUT_FORMATS\n['%Y-%m-%d',\n '%m/%d/%Y',\n '%m/%d/%y',\n '%b %d %Y',\n '%b %d, %Y',\n '%d %b %Y',\n '%d %b, %Y',\n '%B %d %Y',\n '%B %d, %Y',\n '%d %B %Y',\n '%d %B, %Y']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n'.'\nDEFAULT_AUTO_FIELD\n'django.db.models.AutoField'\nDEFAULT_CHARSET\n'utf-8'\nDEFAULT_EXCEPTION_REPORTER\n'django.views.debug.ExceptionReporter'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n'django.views.debug.SafeExceptionReporterFilter'\nDEFAULT_FROM_EMAIL\n'[email protected]'\nDEFAULT_INDEX_TABLESPACE\n''\nDEFAULT_TABLESPACE\n''\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n'********************'\nDOMAIN_NAME\n'blt.owasp.org'\nDOMAIN_NAME_PREVIOUS\n'BLT'\nEMAIL_BACKEND\n'django.core.mail.backends.locmem.EmailBackend'\nEMAIL_HOST\n'localhost'\nEMAIL_HOST_PASSWORD\n'********************'\nEMAIL_HOST_USER\n''\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n'********************'\nEMAIL_SUBJECT_PREFIX\n'[Django] '\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n'BLT \[email protected]>'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n'https://github.com/OWASP/BLT-Extension'\nFACEBOOK_URL\n'https://www.facebook.com/groups/owaspfoundation/'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n['django.core.files.uploadhandler.MemoryFileUploadHandler',\n 'django.core.files.uploadhandler.TemporaryFileUploadHandler']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n'django.forms.renderers.DjangoTemplates'\nFQDN\n'blt.owasp.org'\nGITHUB_TOKEN\n'********************'\nGITHUB_URL\n'https://github.com/OWASP/BLT'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n('django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'django.contrib.sites',\n 'django.contrib.humanize',\n 'website',\n 'allauth',\n 'allauth.account',\n 'allauth.socialaccount',\n 'allauth.socialaccount.providers.github',\n 'allauth.socialaccount.providers.facebook',\n 'allauth.socialaccount.providers.google',\n 'django_gravatar',\n 'email_obfuscator',\n 'import_export',\n 'comments',\n 'annoying',\n 'rest_framework',\n 'django_filters',\n 'rest_framework.authtoken',\n 'mdeditor',\n 'tz_detect',\n 'star_ratings',\n 'drf_yasg',\n 'captcha',\n 'dj_rest_auth',\n 'dj_rest_auth.registration',\n 'storages',\n 'channels')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n(('en', 'English'),\n ('fr', 'French'),\n ('zh-cn', 'Chinese'),\n ('de', 'German'),\n ('ja', 'Japanese'),\n ('ru', 'Russian'),\n ('hi', 'Hindi'))\nLANGUAGES_BIDI\n['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']\nLANGUAGE_CODE\n'en-us'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n'django_language'\nLANGUAGE_COOKIE_PATH\n'/'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n('/home/runner/work/BLT/BLT/locale',)\nLOGGING\n{'disable_existing_loggers': False,\n 'formatters': {'simple': {'format': '%(levelname)s %(message)s'},\n 'verbose': {'format': '%(levelname)s %(asctime)s %(module)s '\n '%(process)d %(thread)d %(message)s'}},\n 'handlers': {'console': {'class': 'logging.StreamHandler',\n 'formatter': 'simple',\n 'level': 'DEBUG',\n 'stream': 'ext://sys.stdout'},\n 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',\n 'level': 'ERROR'}},\n 'loggers': {'django': {'handlers': ['console', 'mail_admins'],\n 'level': 'INFO',\n 'propagate': True},\n 'django.server': {'handlers': ['console'],\n 'level': 'INFO',\n 'propagate': True},\n 'website': {'handlers': ['console'],\n 'level': 'DEBUG',\n 'propagate': True}},\n 'root': {'handlers': ['console'], 'level': 'DEBUG'},\n 'version': 1}\nLOGGING_CONFIG\n'logging.config.dictConfig'\nLOGIN_REDIRECT_URL\n'/'\nLOGIN_URL\n'/accounts/login/'\nLOGOUT_REDIRECT_URL\n'/'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{'default': {'language': 'en',\n 'toolbar': ['undo',\n 'redo',\n '|',\n 'bold',\n 'del',\n 'italic',\n 'quote',\n 'ucwords',\n 'uppercase',\n 'lowercase',\n '|',\n 'h1',\n 'h2',\n 'h3',\n 'h5',\n 'h6',\n '|',\n 'list-ul',\n 'list-ol',\n 'hr',\n '|',\n 'link',\n 'reference-link',\n 'code',\n 'code-block',\n 'table',\n 'datetime',\n '||',\n 'preview',\n 'fullscreen'],\n 'watch': False}}\nMEDIA_ROOT\n'media'\nMEDIA_URL\n'/media/'\nMESSAGE_STORAGE\n'django.contrib.messages.storage.fallback.FallbackStorage'\nMIDDLEWARE\n['django.contrib.sessions.middleware.SessionMiddleware',\n 'blt.middleware.domain.DomainMiddleware',\n 'django.middleware.locale.LocaleMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'allauth.account.middleware.AccountMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n 'django.middleware.security.SecurityMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware',\n 'blt.middleware.throttling.ThrottlingMiddleware',\n 'tz_detect.middleware.TimezoneMiddleware',\n 'blt.middleware.ip_restrict.IPRestrictMiddleware',\n 'blt.middleware.user_visit_tracking.VisitTrackingMiddleware']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n'F j'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n'********************'\nORD_SERVER_URL\n'http://localhost:9001'\nPASSWORD_HASHERS\n'********************'\nPASSWORD_RESET_TIMEOUT\n'********************'\nPORT\n'8000'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n'blt.owasp.org'\nPROJECT_NAME\n'BLT'\nPROJECT_NAME_LOWER\n'blt'\nPROJECT_NAME_UPPER\n'BLT'\nPROJECT_ROOT\n'/home/runner/work/BLT/BLT/blt'\nREPORT_EMAIL\n'blank'\nREPORT_EMAIL_PASSWORD\n'********************'\nREST_AUTH\n{'SESSION_LOGIN': False}\nREST_FRAMEWORK\n{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',),\n 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),\n 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',\n 'DEFAULT_THROTTLE_RATES': {'anon': '100000/day', 'user': '100000/day'},\n 'PAGE_SIZE': 10}\nROOT_URLCONF\n'blt.urls'\nSCOUT_KEY\n'********************'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n'BLT'\nSECRET_KEY\n'********************'\nSECRET_KEY_FALLBACKS\n'********************'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n'same-origin'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n('HTTP_X_FORWARDED_PROTO', 'https')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n'same-origin'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n'[email protected]'\nSESSION_CACHE_ALIAS\n'default'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n'sessionid'\nSESSION_COOKIE_PATH\n'/'\nSESSION_COOKIE_SAMESITE\n'Lax'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n'django.contrib.sessions.backends.db'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n'django.contrib.sessions.serializers.JSONSerializer'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n'm/d/Y P'\nSHORT_DATE_FORMAT\n'm/d/Y'\nSIGNING_BACKEND\n'django.core.signing.TimestampSigner'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n'allauth.socialaccount.adapter.DefaultSocialAccountAdapter'\nSOCIALACCOUNT_PROVIDERS\n{'facebook': {'EXCHANGE_TOKEN': '********************',\n 'FIELDS': ['id',\n 'email',\n 'name',\n 'first_name',\n 'last_name',\n 'verified',\n 'locale',\n 'timezone',\n 'link'],\n 'LOCALE_FUNC': \u003Cfunction \u003Clambda> at 0x7f948af0f380>,\n 'METHOD': 'oauth2',\n 'SCOPE': ['email'],\n 'VERIFIED_EMAIL': False,\n 'VERSION': 'v7.0'},\n 'github': {'AUTH_PARAMS': {'access_type': 'online'},\n 'SCOPE': ['user', 'repo']},\n 'google': {'AUTH_PARAMS': {'access_type': 'online'},\n 'SCOPE': ['profile', 'email']}}\nSOCIALACCOUNT_STORE_TOKENS\n'********************'\nSOCIAL_AUTH_GITHUB_KEY\n'********************'\nSOCIAL_AUTH_GITHUB_SECRET\n'********************'\nSTAGING_DOMAIN\n'blt-staging.herokuapp.com'\nSTAR_RATINGS_RATING_MODEL\n'star_ratings.Rating'\nSTATICFILES_DIRS\n('/home/runner/work/BLT/BLT/website/static',)\nSTATICFILES_FINDERS\n['django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder']\nSTATIC_ROOT\n'/home/runner/work/BLT/BLT/blt/staticfiles'\nSTATIC_URL\n'/static/'\nSTORAGES\n{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},\n 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'}}\nSUPERUSERS\n(('admin123', '[email protected]', 'admin@123'),)\nSUPERUSER_EMAIL\n'[email protected]'\nSUPERUSER_PASSWORD\n'********************'\nSUPERUSER_USERNAME\n'admin123'\nTEMPLATES\n[{'APP_DIRS': False,\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': ['/home/runner/work/BLT/BLT/website/templates'],\n 'OPTIONS': {'context_processors': ['django.template.context_processors.debug',\n 'django.template.context_processors.request',\n 'django.template.context_processors.media',\n 'django.contrib.auth.context_processors.auth',\n 'django.contrib.messages.context_processors.messages',\n 'django.template.context_processors.i18n'],\n 'debug': False,\n 'loaders': [('django.template.loaders.cached.Loader',\n ['django.template.loaders.filesystem.Loader',\n 'django.template.loaders.app_directories.Loader'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n'django.test.runner.DiscoverRunner'\nTHOUSAND_SEPARATOR\n','\nTHROTTLE_EXEMPT_PATHS\n['/admin/', '/static/', '/media/']\nTHROTTLE_LIMITS\n{'GET': 100, 'OTHER': 30, 'POST': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n'P'\nTIME_INPUT_FORMATS\n['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']\nTIME_ZONE\n'UTC'\nTWITTER_URL\n'https://twitter.com/owasp_blt'\nUSERS_AVATAR_PATH\n'avatars'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n'********************'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n'SAMEORIGIN'\nYEAR_MONTH_FORMAT\n'F Y'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code."} | headers=HTTPHeaderDict({'Content-Length': '29056', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
FAIL
test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url) ... ERROR
DEBUG DELETE http://localhost:52611/session/b4b53bd941c289c78556dcb43241c371 {}
DEBUG http://localhost:52611 "DELETE /session/b4b53bd941c289c78556dcb43241c371 HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
======================================================================
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
self._post_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
self._fixture_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
call_command(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
sql_list = sql_flush(
^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
tables = connection.introspection.django_table_names(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
existing_tables = set(self.table_names(include_views=include_views))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
return get_names(cursor)
^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
for ti in self.get_table_list(cursor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
cursor.execute(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 184, in test_post_bug_full_url
self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:56995/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 09:13:55 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n response = self.process_request(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n tz = request.session.get("detected_tz")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n return self._session.get(key, default)\n ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n self._session_cache = self.load()\n ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n s = self._get_session_from_db()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n return self.model.objects.get(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n return getattr(self.get_queryset(), name)(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n num = len(clone)\n ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n results = compiler.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.979471064.1764494023\'\n_gid\n\'GA1.1.1495401734.1764494023\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764494022$o1$g1$t1764494034$j48$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'ED8vdcqZ6pDnPkwtaLtCzXKUU6nVIc8x\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19796685423\'\nGITHUB_RUN_NUMBER\n\'14380\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:56995\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'5cbc1ab196874c4b8d8a0f6a27fa826e\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:13571\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000578934\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_12364ba3-f986-4484-8504-a05c7d941dd7\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'56995\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1964\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.VJpxrR/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7f9473aa5a80>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7f948cd25620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n \'AUTOCOMMIT\': True,\n \'CONN_HEALTH_CHECKS\': False,\n \'CONN_MAX_AGE\': 0,\n \'ENGINE\': \'django.db.backends.sqlite3\',\n \'HOST\': \'\',\n \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n \'OPTIONS\': {},\n \'PASSWORD\': \'********************\',\n \'PORT\': \'\',\n \'TEST\': {\'CHARSET\': None,\n \'COLLATION\': None,\n \'MIGRATE\': True,\n \'MIRROR\': None,\n \'NAME\': None},\n \'TIME_ZONE\': None,\n \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n \'formatter\': \'simple\',\n \'level\': \'DEBUG\',\n \'stream\': \'ext://sys.stdout\'},\n \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'django.server\': {\'handlers\': [\'console\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'website\': {\'handlers\': [\'console\'],\n \'level\': \'DEBUG\',\n \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n \'toolbar\': [\'undo\',\n \'redo\',\n \'|\',\n \'bold\',\n \'del\',\n \'italic\',\n \'quote\',\n \'ucwords\',\n \'uppercase\',\n \'lowercase\',\n \'|\',\n \'h1\',\n \'h2\',\n \'h3\',\n \'h5\',\n \'h6\',\n \'|\',\n \'list-ul\',\n \'list-ol\',\n \'hr\',\n \'|\',\n \'link\',\n \'reference-link\',\n \'code\',\n \'code-block\',\n \'table\',\n \'datetime\',\n \'||\',\n \'preview\',\n \'fullscreen\'],\n \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n \'FIELDS\': [\'id\',\n \'email\',\n \'name\',\n \'first_name\',\n \'last_name\',\n \'verified\',\n \'locale\',\n \'timezone\',\n \'link\'],\n \'LOCALE_FUNC\': <function <lambda> at 0x7f948af0f380>,\n \'METHOD\': \'oauth2\',\n \'SCOPE\': [\'email\'],\n \'VERIFIED_EMAIL\': False,\n \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n \'django.template.context_processors.request\',\n \'django.template.context_processors.media\',\n \'django.contrib.auth.context_processors.auth\',\n \'django.contrib.messages.context_processors.messages\',\n \'django.template.context_processors.i18n\'],\n \'debug\': False,\n \'loaders\': [(\'django.template.loaders.cached.Loader\',\n [\'django.template.loaders.filesystem.Loader\',\n \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'
----------------------------------------------------------------------
Ran 216 tests in 128.162s
FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
For more information, see the Django testing documentation.
❌ Tests failed
The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.
How to run tests locally
# Install dependencies
poetry install --with dev
# Run all tests
poetry run python manage.py test
# Run tests with verbose output
poetry run python manage.py test -v 3
# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py", line 161, in _record_ip
ip_record.save(update_fields=["agent", "count"])
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 892, in save
self.save_base(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 998, in save_base
updated = self._save_table(
^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 1130, in _save_table
updated = self._do_update(
^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 1195, in _do_update
return filtered._update(values) > 0
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 1278, in _update
return query.get_compiler(self.db).execute_sql(CURSOR)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 2003, in execute_sql
cursor = super().execute_sql(result_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
cursor.execute(sql, params)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
self._post_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
self._fixture_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
call_command(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
sql_list = sql_flush(
^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
tables = connection.introspection.django_table_names(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
existing_tables = set(self.table_names(include_views=include_views))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
return get_names(cursor)
^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
for ti in self.get_table_list(cursor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
cursor.execute(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 184, in test_post_bug_full_url
self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:37253/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 09:20:37 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 161, in _record_ip\n ip_record.save(update_fields=["agent", "count"])\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 892, in save\n self.save_base(\n ^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 998, in save_base\n updated = self._save_table(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 1130, in _save_table\n updated = self._do_update(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 1195, in _do_update\n return filtered._update(values) > 0\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1278, in _update\n return query.get_compiler(self.db).execute_sql(CURSOR)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 2003, in execute_sql\n cursor = super().execute_sql(result_type)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\nThe above exception (An error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.) was the direct cause of the following exception:\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n response = self.process_request(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n tz = request.session.get("detected_tz")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n return self._session.get(key, default)\n ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n self._session_cache = self.load()\n ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n s = self._get_session_from_db()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n return self.model.objects.get(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n return getattr(self.get_queryset(), name)(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n num = len(clone)\n ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n results = compiler.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.19036856.1764494424\'\n_gid\n\'GA1.1.1672972759.1764494424\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764494424$o1$g1$t1764494436$j48$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'L5AUnvetpGPo8nFFRPeKXjlUsZhcMLkW\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19796764319\'\nGITHUB_RUN_NUMBER\n\'14381\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:37253\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'ea9c39a5dee3485a81faf08610e13c26\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:10881\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000578960\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_a0dda4cb-967c-42ef-a77d-1a284f1ab860\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'37253\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1914\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.H71Ff0/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7fda3427bfa0>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7fda4e011620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n \'AUTOCOMMIT\': True,\n \'CONN_HEALTH_CHECKS\': False,\n \'CONN_MAX_AGE\': 0,\n \'ENGINE\': \'django.db.backends.sqlite3\',\n \'HOST\': \'\',\n \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n \'OPTIONS\': {},\n \'PASSWORD\': \'********************\',\n \'PORT\': \'\',\n \'TEST\': {\'CHARSET\': None,\n \'COLLATION\': None,\n \'MIGRATE\': True,\n \'MIRROR\': None,\n \'NAME\': None},\n \'TIME_ZONE\': None,\n \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n \'formatter\': \'simple\',\n \'level\': \'DEBUG\',\n \'stream\': \'ext://sys.stdout\'},\n \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'django.server\': {\'handlers\': [\'console\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'website\': {\'handlers\': [\'console\'],\n \'level\': \'DEBUG\',\n \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n \'toolbar\': [\'undo\',\n \'redo\',\n \'|\',\n \'bold\',\n \'del\',\n \'italic\',\n \'quote\',\n \'ucwords\',\n \'uppercase\',\n \'lowercase\',\n \'|\',\n \'h1\',\n \'h2\',\n \'h3\',\n \'h5\',\n \'h6\',\n \'|\',\n \'list-ul\',\n \'list-ol\',\n \'hr\',\n \'|\',\n \'link\',\n \'reference-link\',\n \'code\',\n \'code-block\',\n \'table\',\n \'datetime\',\n \'||\',\n \'preview\',\n \'fullscreen\'],\n \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n \'FIELDS\': [\'id\',\n \'email\',\n \'name\',\n \'first_name\',\n \'last_name\',\n \'verified\',\n \'locale\',\n \'timezone\',\n \'link\'],\n \'LOCALE_FUNC\': <function <lambda> at 0x7fda4c20f380>,\n \'METHOD\': \'oauth2\',\n \'SCOPE\': [\'email\'],\n \'VERIFIED_EMAIL\': False,\n \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n \'django.template.context_processors.request\',\n \'django.template.context_processors.media\',\n \'django.contrib.auth.context_processors.auth\',\n \'django.contrib.messages.context_processors.messages\',\n \'django.template.context_processors.i18n\'],\n \'debug\': False,\n \'loaders\': [(\'django.template.loaders.cached.Loader\',\n [\'django.template.loaders.filesystem.Loader\',\n \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'
----------------------------------------------------------------------
Ran 216 tests in 130.959s
FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
For more information, see the Django testing documentation.
@coderabbitai Can you help me to fix the test error now
[!TIP] For best results, initiate chat on the files or code changes.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check the current PR status and latest CI runs
gh pr view 4065 --json statusCheckRollup,commits --repo OWASP-BLT/BLT
# Get the latest commit SHA
LATEST_COMMIT=$(gh pr view 4065 --json commits --jq '.commits[-1].oid' --repo OWASP-BLT/BLT)
echo "=== Latest commit: $LATEST_COMMIT ==="
# Get check runs for the latest commit
gh api "/repos/OWASP-BLT/BLT/commits/$LATEST_COMMIT/check-runs" --jq '.check_runs[] | {name: .name, status: .status, conclusion: .conclusion, html_url: .html_url, started_at: .started_at}'
Length of output: 20380
🏁 Script executed:
#!/bin/bash
# Check the current state of test_main.py to see if fixes were applied
cat website/tests/test_main.py | grep -A 15 "def test_post_bug_full_url"
Length of output: 1201
🏁 Script executed:
#!/bin/bash
# Get the most recent test run logs
LATEST_RUN=$(gh run list --repo OWASP-BLT/BLT --branch error-msg-login-email-verification-ui --limit 1 --json databaseId --jq '.[0].databaseId')
echo "=== Latest run ID: $LATEST_RUN ==="
if [ -n "$LATEST_RUN" ]; then
gh run view $LATEST_RUN --repo OWASP-BLT/BLT --log | grep -A 30 "FAILED\|ERROR" | tail -100
fi
Length of output: 34
🏁 Script executed:
#!/bin/bash
# Get detailed logs from the failed test run
gh run view 19796764319 --repo OWASP-BLT/BLT --log | grep -B 10 -A 30 "FAILED\|ERROR" | tail -200
Length of output: 91835
🏁 Script executed:
#!/bin/bash
# Also check the full test_main.py to understand the setUp method
cat website/tests/test_main.py | grep -A 30 "class MySeleniumTests"
Length of output: 1256
🏁 Script executed:
#!/bin/bash
# Check if _ensure_verified_user method exists
cat website/tests/test_main.py | grep -A 10 "_ensure_verified_user"
Length of output: 0
🏁 Script executed:
#!/bin/bash
# Get the setUp method and user creation logic
cat website/tests/test_main.py | grep -A 50 "def setUp"
Length of output: 10380
🏁 Script executed:
#!/bin/bash
# Look for how users are created and verified in the test file
cat website/tests/test_main.py | grep -B 5 -A 15 "User.objects.create\|EmailAddress"
Length of output: 6204
🏁 Script executed:
#!/bin/bash
# Check for test_post_bug_domain_url to see if it has the same pattern
cat website/tests/test_main.py | grep -A 20 "def test_post_bug_domain_url"
Length of output: 1548
@swaparup36 I see the issue now! The error is happening because the bugbug user from the fixtures doesn't have a verified email address, even though the setUp method tries to verify all users. The TransactionManagementError is occurring after login when the test navigates to /all_activity/.
Here's the fix for both failing tests in website/tests/test_main.py:
For test_post_bug_full_url:
@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
# Ensure bugbug user exists and has verified email
from allauth.account.models import EmailAddress
# Get or create the bugbug user
bugbug_user, created = User.objects.get_or_create(
username="bugbug",
defaults={"email": "[email protected]"}
)
if created:
bugbug_user.set_password("secret")
bugbug_user.save()
# Verify the email
email_address, created = EmailAddress.objects.get_or_create(
user=bugbug_user,
email="[email protected]",
defaults={"verified": True, "primary": True}
)
if not created:
email_address.verified = True
email_address.primary = True
email_address.save()
self.selenium.set_page_load_timeout(70)
self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
self.selenium.find_element("name", "login").send_keys("bugbug")
self.selenium.find_element("name", "password").send_keys("secret")
self.selenium.find_element("name", "login_button").click()
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
# Add explicit wait for the URL input field
url_input = WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.NAME, "url")))
url_input.send_keys("https://blt.owasp.org/report/")
self.selenium.find_element("id", "description").send_keys("XSS Attack on Google") # title of bug
self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
# pass captacha if in test mode
self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
self.selenium.find_element("name", "reportbug_button").click()
self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
body = self.selenium.find_element("tag name", "body")
self.assertIn("XSS Attack on Google", body.text)
For test_post_bug_domain_url:
@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
# Ensure bugbug user exists and has verified email
from allauth.account.models import EmailAddress
# Get or create the bugbug user
bugbug_user, created = User.objects.get_or_create(
username="bugbug",
defaults={"email": "[email protected]"}
)
if created:
bugbug_user.set_password("secret")
bugbug_user.save()
# Verify the email
email_address, created = EmailAddress.objects.get_or_create(
user=bugbug_user,
email="[email protected]",
defaults={"verified": True, "primary": True}
)
if not created:
email_address.verified = True
email_address.primary = True
email_address.save()
self.selenium.set_page_load_timeout(70)
self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
self.selenium.find_element("name", "login").send_keys("bugbug")
self.selenium.find_element("name", "password").send_keys("secret")
self.selenium.find_element("name", "login_button").click()
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
self.selenium.find_element("name", "url").send_keys("https://google.com")
self.selenium.find_element("id", "description").send_keys("XSS Attack on Google") # title of bug
self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
# pass captacha if in test mode
self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
self.selenium.find_element("name", "reportbug_button").click()
self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
body = self.selenium.find_element("tag name", "body")
self.assertIn("XSS Attack on Google", body.text)
Key changes:
- Both tests now explicitly create or get the
bugbuguser at the start - Set the password if the user was just created
- Create and verify the EmailAddress entry for that user
- This ensures the user can log in successfully with mandatory email verification enabled
This fix follows the same pattern used in the test_signup method and ensures the bugbug user has a verified email before attempting to log in.
@sidd190 Sure, all of these are already done. And for the remaining tests that still posts username instead of login/email after signup is fine because both of the methods will work for login.
@sidd190 Sure, all of these are already done. And for the remaining tests that still posts username instead of login/email after signup is fine because both of the methods will work for login.
Coool. I kinda figured! LGTM I think.
❌ Tests failed
The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.
How to run tests locally
# Install dependencies
poetry install --with dev
# Run all tests
poetry run python manage.py test
# Run tests with verbose output
poetry run python manage.py test -v 3
# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
cursor.execute(sql, params)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
DEBUG http://localhost:56901 "POST /session/3b0cbee6c5afc4b56c5a0985b27a6fde/url HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:56901/session/3b0cbee6c5afc4b56c5a0985b27a6fde/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:56901 "POST /session/3b0cbee6c5afc4b56c5a0985b27a6fde/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.C7E07904E45977B90B83C27D16C0E36F.d.F3DEE8BC6E1DDC88D72273C293BA7F9F.e.495"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:56901/session/3b0cbee6c5afc4b56c5a0985b27a6fde/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:56901 "POST /session/3b0cbee6c5afc4b56c5a0985b27a6fde/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.C7E07904E45977B90B83C27D16C0E36F.d.F3DEE8BC6E1DDC88D72273C293BA7F9F.e.495"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG GET http://localhost:56901/session/3b0cbee6c5afc4b56c5a0985b27a6fde/element/f.C7E07904E45977B90B83C27D16C0E36F.d.F3DEE8BC6E1DDC88D72273C293BA7F9F.e.495/text {}
DEBUG http://localhost:56901 "GET /session/3b0cbee6c5afc4b56c5a0985b27a6fde/element/f.C7E07904E45977B90B83C27D16C0E36F.d.F3DEE8BC6E1DDC88D72273C293BA7F9F.e.495/text HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":"TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nRequest Method: GET\nRequest URL: http://localhost:55435/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n['/home/runner/work/BLT/BLT',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload',\n '/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages',\n '/home/runner/work/BLT/BLT']\nServer time: Sun, 30 Nov 2025 11:43:32 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n response = self.process_request(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n tz = request.session.get(\"detected_tz\")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n return self._session.get(key, default)\n ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n self._session_cache = self.load()\n ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n s = self._get_session_from_db()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n return self.model.objects.get(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n return getattr(self.get_queryset(), name)(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n num = len(clone)\n ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n results = compiler.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n'GA1.1.498057479.1764502997'\n_gid\n'GA1.1.840050233.1764502997'\n_gat\n'1'\ncsrftoken\n'********************'\nsessionid\n'********************'\n_ga_TJDHVT49Y0\n'GS2.1.s1764502997$o1$g1$t1764503011$j46$l0$h0'\nMETA\nVariable Value\nACCEPT_EULA\n'Y'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n'/opt/actionarchivecache'\nAGENT_TOOLSDIRECTORY\n'/opt/hostedtoolcache'\nANDROID_HOME\n'/usr/local/lib/android/sdk'\nANDROID_NDK\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_HOME\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_LATEST_HOME\n'/usr/local/lib/android/sdk/ndk/29.0.14206865'\nANDROID_NDK_ROOT\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_SDK_ROOT\n'/usr/local/lib/android/sdk'\nANT_HOME\n'/usr/share/ant'\nAZURE_EXTENSION_DIR\n'/opt/az/azcliextensions'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n'1'\nCHROMEWEBDRIVER\n'/usr/local/share/chromedriver-linux64'\nCHROME_BIN\n'/usr/bin/google-chrome'\nCI\n'true'\nCONDA\n'/usr/share/miniconda'\nCONTENT_LENGTH\n''\nCONTENT_TYPE\n'text/plain'\nCSRF_COOKIE\n'k7LS08MFluk62tVNukDdBC77CMmxuGIO'\nDEBIAN_FRONTEND\n'noninteractive'\nDISPLAY\n':99'\nDJANGO_SETTINGS_MODULE\n'blt.settings'\nDOTNET_MULTILEVEL_LOOKUP\n'0'\nDOTNET_NOLOGO\n'1'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n'1'\nEDGEWEBDRIVER\n'/usr/local/share/edge_driver'\nENABLE_RUNNER_TRACING\n'true'\nFORCE_COLOR\n'1'\nGATEWAY_INTERFACE\n'CGI/1.1'\nGECKOWEBDRIVER\n'/usr/local/share/gecko_driver'\nGHCUP_INSTALL_BASE_PREFIX\n'/usr/local'\nGITHUB_ACTION\n'run-tests'\nGITHUB_ACTIONS\n'true'\nGITHUB_ACTION_REF\n''\nGITHUB_ACTION_REPOSITORY\n''\nGITHUB_ACTOR\n'swaparup36'\nGITHUB_ACTOR_ID\n'82692857'\nGITHUB_API_URL\n'********************'\nGITHUB_BASE_REF\n'main'\nGITHUB_ENV\n'/home/runner/work/_temp/_runner_file_commands/set_env_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_EVENT_NAME\n'pull_request_target'\nGITHUB_EVENT_PATH\n'/home/runner/work/_temp/_github_workflow/event.json'\nGITHUB_GRAPHQL_URL\n'https://api.github.com/graphql'\nGITHUB_HEAD_REF\n'error-msg-login-email-verification-ui'\nGITHUB_JOB\n'test'\nGITHUB_OUTPUT\n'/home/runner/work/_temp/_runner_file_commands/set_output_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_PATH\n'/home/runner/work/_temp/_runner_file_commands/add_path_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_REF\n'refs/heads/main'\nGITHUB_REF_NAME\n'main'\nGITHUB_REF_PROTECTED\n'false'\nGITHUB_REF_TYPE\n'branch'\nGITHUB_REPOSITORY\n'OWASP-BLT/BLT'\nGITHUB_REPOSITORY_ID\n'62963654'\nGITHUB_REPOSITORY_OWNER\n'OWASP-BLT'\nGITHUB_REPOSITORY_OWNER_ID\n'160347863'\nGITHUB_RETENTION_DAYS\n'90'\nGITHUB_RUN_ATTEMPT\n'1'\nGITHUB_RUN_ID\n'19798335209'\nGITHUB_RUN_NUMBER\n'14390'\nGITHUB_SERVER_URL\n'https://github.com'\nGITHUB_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_STATE\n'/home/runner/work/_temp/_runner_file_commands/save_state_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_STEP_SUMMARY\n'/home/runner/work/_temp/_runner_file_commands/step_summary_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_TRIGGERING_ACTOR\n'swaparup36'\nGITHUB_WORKFLOW\n'CI/CD Optimized'\nGITHUB_WORKFLOW_REF\n'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main'\nGITHUB_WORKFLOW_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_WORKSPACE\n'/home/runner/work/BLT/BLT'\nGOROOT_1_22_X64\n'/opt/hostedtoolcache/go/1.22.12/x64'\nGOROOT_1_23_X64\n'/opt/hostedtoolcache/go/1.23.12/x64'\nGOROOT_1_24_X64\n'/opt/hostedtoolcache/go/1.24.10/x64'\nGOROOT_1_25_X64\n'/opt/hostedtoolcache/go/1.25.4/x64'\nGRADLE_HOME\n'/usr/share/gradle-9.2.0'\nHOME\n'/home/runner'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n'3650'\nHOMEBREW_NO_AUTO_UPDATE\n'1'\nHTTP_ACCEPT\n'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'\nHTTP_ACCEPT_ENCODING\n'gzip, deflate, br, zstd'\nHTTP_ACCEPT_LANGUAGE\n'en-US,en;q=0.9'\nHTTP_CONNECTION\n'keep-alive'\nHTTP_COOKIE\n'********************'\nHTTP_HOST\n'localhost:55435'\nHTTP_SEC_CH_UA\n'\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"'\nHTTP_SEC_CH_UA_MOBILE\n'?0'\nHTTP_SEC_CH_UA_PLATFORM\n'\"Linux\"'\nHTTP_SEC_FETCH_DEST\n'document'\nHTTP_SEC_FETCH_MODE\n'navigate'\nHTTP_SEC_FETCH_SITE\n'none'\nHTTP_SEC_FETCH_USER\n'?1'\nHTTP_UPGRADE_INSECURE_REQUESTS\n'1'\nHTTP_USER_AGENT\n('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '\n 'HeadlessChrome/142.0.0.0 Safari/537.36')\nINVOCATION_ID\n'a224b4a42e3b4cb18a74159eabb6d05d'\nImageOS\n'ubuntu24'\nImageVersion\n'20251112.124.1'\nJAVA_HOME\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_11_X64\n'/usr/lib/jvm/temurin-11-jdk-amd64'\nJAVA_HOME_17_X64\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_21_X64\n'/usr/lib/jvm/temurin-21-jdk-amd64'\nJAVA_HOME_25_X64\n'/usr/lib/jvm/temurin-25-jdk-amd64'\nJAVA_HOME_8_X64\n'/usr/lib/jvm/temurin-8-jdk-amd64'\nJOURNAL_STREAM\n'9:11058'\nLANG\n'C.UTF-8'\nLD_LIBRARY_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib'\nLOGNAME\n'runner'\nMEMORY_PRESSURE_WATCH\n'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure'\nMEMORY_PRESSURE_WRITE\n'c29tZSAyMDAwMDAgMjAwMDAwMAA='\nNVM_DIR\n'/home/runner/.nvm'\nPATH\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'\nPATH_INFO\n'/all_activity/'\nPIPX_BIN_DIR\n'/opt/pipx_bin'\nPIPX_HOME\n'/opt/pipx'\nPKG_CONFIG_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig'\nPOETRY_CACHE_DIR\n'~/.cache/pypoetry'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n'GitHub-Actions-ubuntu24'\nPWD\n'/home/runner/work/BLT/BLT'\nPython2_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython3_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nQUERY_STRING\n''\nREMOTE_ADDR\n'127.0.0.1'\nREMOTE_HOST\n''\nREQUEST_METHOD\n'GET'\nRUNNER_ARCH\n'X64'\nRUNNER_DEBUG\n'1'\nRUNNER_ENVIRONMENT\n'github-hosted'\nRUNNER_NAME\n'GitHub Actions 1000579342'\nRUNNER_OS\n'Linux'\nRUNNER_TEMP\n'/home/runner/work/_temp'\nRUNNER_TOOL_CACHE\n'/opt/hostedtoolcache'\nRUNNER_TRACKING_ID\n'github_dcda8d85-42a5-405d-a052-a3c94a9f62fd'\nRUNNER_WORKSPACE\n'/home/runner/work/BLT'\nSCRIPT_NAME\n''\nSELENIUM_JAR_PATH\n'/usr/share/java/selenium-server.jar'\nSERVER_NAME\n'localhost'\nSERVER_PORT\n'55435'\nSERVER_PROTOCOL\n'HTTP/1.1'\nSERVER_SOFTWARE\n'WSGIServer/0.2'\nSGX_AESM_ADDR\n'1'\nSHELL\n'/bin/bash'\nSHLVL\n'1'\nSWIFT_PATH\n'/usr/share/swift/usr/bin'\nSYSTEMD_EXEC_PID\n'1899'\nTZ\n'UTC'\nUSER\n'runner'\nVCPKG_INSTALLATION_ROOT\n'/usr/local/share/vcpkg'\nVIRTUAL_ENV\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11'\nXAUTHORITY\n'/tmp/xvfb-run.Higjh6/Xauthority'\nXDG_CONFIG_HOME\n'/home/runner/.config'\nXDG_RUNTIME_DIR\n'/run/user/1001'\n_\n'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry'\npythonLocation\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nwsgi.errors\n\u003C_io.TextIOWrapper name='\u003Cstderr>' mode='w' encoding='utf-8'>\nwsgi.file_wrapper\n\u003Cclass 'wsgiref.util.FileWrapper'>\nwsgi.input\n\u003Cdjango.core.handlers.wsgi.LimitedStream object at 0x7f89011a6500>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n'http'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{'auth.user': \u003Cfunction \u003Clambda> at 0x7f891ac41620>}\nACCESS_TOKEN\n'********************'\nACCESS_TOKEN_SECRET\n'********************'\nACCOUNT_ADAPTER\n'allauth.account.adapter.DefaultAccountAdapter'\nACCOUNT_AUTHENTICATION_METHOD\n'username_email'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n'mandatory'\nACCOUNT_FORMS\n{'signup': 'website.forms.SignupFormWithCaptcha'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n(('Admin', '[email protected]'),)\nADMIN_URL\n'admin'\nALLOWED_HOSTS\n['127.0.0.1', 'localhost', '0.0.0.0', '', 'testserver']\nAPPEND_SLASH\nTrue\nAPP_KEY\n'********************'\nAPP_KEY_SECRET\n'********************'\nASGI_APPLICATION\n'blt.asgi.application'\nAUTHENTICATION_BACKENDS\n('django.contrib.auth.backends.ModelBackend',\n 'allauth.account.auth_backends.AuthenticationBackend')\nAUTH_PASSWORD_VALIDATORS\n'********************'\nAUTH_USER_MODEL\n'auth.User'\nAVATAR_PATH\n'media/avatars'\nBASE_DIR\n'/home/runner/work/BLT/BLT'\nBEARER_TOKEN\n'********************'\nBITCOIN_RPC_HOST\n'localhost'\nBITCOIN_RPC_PASSWORD\n'********************'\nBITCOIN_RPC_PORT\n'8332'\nBITCOIN_RPC_USER\n'yourusername'\nBLOG_URL\n'blt.owasp.org/blog/'\nBLUESKY_PASSWORD\n'********************'\nBLUESKY_USERNAME\n'default_username'\nCACHES\n{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n 'LOCATION': 'unique-snowflake'}}\nCACHE_MIDDLEWARE_ALIAS\n'default'\nCACHE_MIDDLEWARE_KEY_PREFIX\n'********************'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer',\n 'CONFIG': {'hosts': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n'csrftoken'\nCSRF_COOKIE_PATH\n'/'\nCSRF_COOKIE_SAMESITE\n'Lax'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n'django.views.csrf.csrf_failure'\nCSRF_HEADER_NAME\n'HTTP_X_CSRFTOKEN'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{'default': {'ATOMIC_REQUESTS': False,\n 'AUTOCOMMIT': True,\n 'CONN_HEALTH_CHECKS': False,\n 'CONN_MAX_AGE': 0,\n 'ENGINE': 'django.db.backends.sqlite3',\n 'HOST': '',\n 'NAME': 'file:memorydb_default?mode=memory&cache=shared',\n 'OPTIONS': {},\n 'PASSWORD': '********************',\n 'PORT': '',\n 'TEST': {'CHARSET': None,\n 'COLLATION': None,\n 'MIGRATE': True,\n 'MIRROR': None,\n 'NAME': None},\n 'TIME_ZONE': None,\n 'USER': ''}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n'N j, Y, P'\nDATETIME_INPUT_FORMATS\n['%Y-%m-%d %H:%M:%S',\n '%Y-%m-%d %H:%M:%S.%f',\n '%Y-%m-%d %H:%M',\n '%m/%d/%Y %H:%M:%S',\n '%m/%d/%Y %H:%M:%S.%f',\n '%m/%d/%Y %H:%M',\n '%m/%d/%y %H:%M:%S',\n '%m/%d/%y %H:%M:%S.%f',\n '%m/%d/%y %H:%M']\nDATE_FORMAT\n'N j, Y'\nDATE_INPUT_FORMATS\n['%Y-%m-%d',\n '%m/%d/%Y',\n '%m/%d/%y',\n '%b %d %Y',\n '%b %d, %Y',\n '%d %b %Y',\n '%d %b, %Y',\n '%B %d %Y',\n '%B %d, %Y',\n '%d %B %Y',\n '%d %B, %Y']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n'.'\nDEFAULT_AUTO_FIELD\n'django.db.models.AutoField'\nDEFAULT_CHARSET\n'utf-8'\nDEFAULT_EXCEPTION_REPORTER\n'django.views.debug.ExceptionReporter'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n'django.views.debug.SafeExceptionReporterFilter'\nDEFAULT_FROM_EMAIL\n'[email protected]'\nDEFAULT_INDEX_TABLESPACE\n''\nDEFAULT_TABLESPACE\n''\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n'********************'\nDOMAIN_NAME\n'blt.owasp.org'\nDOMAIN_NAME_PREVIOUS\n'BLT'\nEMAIL_BACKEND\n'django.core.mail.backends.locmem.EmailBackend'\nEMAIL_HOST\n'localhost'\nEMAIL_HOST_PASSWORD\n'********************'\nEMAIL_HOST_USER\n''\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n'********************'\nEMAIL_SUBJECT_PREFIX\n'[Django] '\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n'BLT \[email protected]>'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n'https://github.com/OWASP/BLT-Extension'\nFACEBOOK_URL\n'https://www.facebook.com/groups/owaspfoundation/'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n['django.core.files.uploadhandler.MemoryFileUploadHandler',\n 'django.core.files.uploadhandler.TemporaryFileUploadHandler']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n'django.forms.renderers.DjangoTemplates'\nFQDN\n'blt.owasp.org'\nGITHUB_TOKEN\n'********************'\nGITHUB_URL\n'https://github.com/OWASP/BLT'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n('django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'django.contrib.sites',\n 'django.contrib.humanize',\n 'website',\n 'allauth',\n 'allauth.account',\n 'allauth.socialaccount',\n 'allauth.socialaccount.providers.github',\n 'allauth.socialaccount.providers.facebook',\n 'allauth.socialaccount.providers.google',\n 'django_gravatar',\n 'email_obfuscator',\n 'import_export',\n 'comments',\n 'annoying',\n 'rest_framework',\n 'django_filters',\n 'rest_framework.authtoken',\n 'mdeditor',\n 'tz_detect',\n 'star_ratings',\n 'drf_yasg',\n 'captcha',\n 'dj_rest_auth',\n 'dj_rest_auth.registration',\n 'storages',\n 'channels')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n(('en', 'English'),\n ('fr', 'French'),\n ('zh-cn', 'Chinese'),\n ('de', 'German'),\n ('ja', 'Japanese'),\n ('ru', 'Russian'),\n ('hi', 'Hindi'))\nLANGUAGES_BIDI\n['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']\nLANGUAGE_CODE\n'en-us'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n'django_language'\nLANGUAGE_COOKIE_PATH\n'/'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n('/home/runner/work/BLT/BLT/locale',)\nLOGGING\n{'disable_existing_loggers': False,\n 'formatters': {'simple': {'format': '%(levelname)s %(message)s'},\n 'verbose': {'format': '%(levelname)s %(asctime)s %(module)s '\n '%(process)d %(thread)d %(message)s'}},\n 'handlers': {'console': {'class': 'logging.StreamHandler',\n 'formatter': 'simple',\n 'level': 'DEBUG',\n 'stream': 'ext://sys.stdout'},\n 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',\n 'level': 'ERROR'}},\n 'loggers': {'django': {'handlers': ['console', 'mail_admins'],\n 'level': 'INFO',\n 'propagate': True},\n 'django.server': {'handlers': ['console'],\n 'level': 'INFO',\n 'propagate': True},\n 'website': {'handlers': ['console'],\n 'level': 'DEBUG',\n 'propagate': True}},\n 'root': {'handlers': ['console'], 'level': 'DEBUG'},\n 'version': 1}\nLOGGING_CONFIG\n'logging.config.dictConfig'\nLOGIN_REDIRECT_URL\n'/'\nLOGIN_URL\n'/accounts/login/'\nLOGOUT_REDIRECT_URL\n'/'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{'default': {'language': 'en',\n 'toolbar': ['undo',\n 'redo',\n '|',\n 'bold',\n 'del',\n 'italic',\n 'quote',\n 'ucwords',\n 'uppercase',\n 'lowercase',\n '|',\n 'h1',\n 'h2',\n 'h3',\n 'h5',\n 'h6',\n '|',\n 'list-ul',\n 'list-ol',\n 'hr',\n '|',\n 'link',\n 'reference-link',\n 'code',\n 'code-block',\n 'table',\n 'datetime',\n '||',\n 'preview',\n 'fullscreen'],\n 'watch': False}}\nMEDIA_ROOT\n'media'\nMEDIA_URL\n'/media/'\nMESSAGE_STORAGE\n'django.contrib.messages.storage.fallback.FallbackStorage'\nMIDDLEWARE\n['django.contrib.sessions.middleware.SessionMiddleware',\n 'blt.middleware.domain.DomainMiddleware',\n 'django.middleware.locale.LocaleMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'allauth.account.middleware.AccountMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n 'django.middleware.security.SecurityMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware',\n 'blt.middleware.throttling.ThrottlingMiddleware',\n 'tz_detect.middleware.TimezoneMiddleware',\n 'blt.middleware.ip_restrict.IPRestrictMiddleware',\n 'blt.middleware.user_visit_tracking.VisitTrackingMiddleware']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n'F j'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n'********************'\nORD_SERVER_URL\n'http://localhost:9001'\nPASSWORD_HASHERS\n'********************'\nPASSWORD_RESET_TIMEOUT\n'********************'\nPORT\n'8000'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n'blt.owasp.org'\nPROJECT_NAME\n'BLT'\nPROJECT_NAME_LOWER\n'blt'\nPROJECT_NAME_UPPER\n'BLT'\nPROJECT_ROOT\n'/home/runner/work/BLT/BLT/blt'\nREPORT_EMAIL\n'blank'\nREPORT_EMAIL_PASSWORD\n'********************'\nREST_AUTH\n{'SESSION_LOGIN': False}\nREST_FRAMEWORK\n{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',),\n 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),\n 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',\n 'DEFAULT_THROTTLE_RATES': {'anon': '100000/day', 'user': '100000/day'},\n 'PAGE_SIZE': 10}\nROOT_URLCONF\n'blt.urls'\nSCOUT_KEY\n'********************'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n'BLT'\nSECRET_KEY\n'********************'\nSECRET_KEY_FALLBACKS\n'********************'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n'same-origin'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n('HTTP_X_FORWARDED_PROTO', 'https')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n'same-origin'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n'[email protected]'\nSESSION_CACHE_ALIAS\n'default'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n'sessionid'\nSESSION_COOKIE_PATH\n'/'\nSESSION_COOKIE_SAMESITE\n'Lax'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n'django.contrib.sessions.backends.db'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n'django.contrib.sessions.serializers.JSONSerializer'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n'm/d/Y P'\nSHORT_DATE_FORMAT\n'm/d/Y'\nSIGNING_BACKEND\n'django.core.signing.TimestampSigner'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n'allauth.socialaccount.adapter.DefaultSocialAccountAdapter'\nSOCIALACCOUNT_PROVIDERS\n{'facebook': {'EXCHANGE_TOKEN': '********************',\n 'FIELDS': ['id',\n 'email',\n 'name',\n 'first_name',\n 'last_name',\n 'verified',\n 'locale',\n 'timezone',\n 'link'],\n 'LOCALE_FUNC': \u003Cfunction \u003Clambda> at 0x7f8918e0f380>,\n 'METHOD': 'oauth2',\n 'SCOPE': ['email'],\n 'VERIFIED_EMAIL': False,\n 'VERSION': 'v7.0'},\n 'github': {'AUTH_PARAMS': {'access_type': 'online'},\n 'SCOPE': ['user', 'repo']},\n 'google': {'AUTH_PARAMS': {'access_type': 'online'},\n 'SCOPE': ['profile', 'email']}}\nSOCIALACCOUNT_STORE_TOKENS\n'********************'\nSOCIAL_AUTH_GITHUB_KEY\n'********************'\nSOCIAL_AUTH_GITHUB_SECRET\n'********************'\nSTAGING_DOMAIN\n'blt-staging.herokuapp.com'\nSTAR_RATINGS_RATING_MODEL\n'star_ratings.Rating'\nSTATICFILES_DIRS\n('/home/runner/work/BLT/BLT/website/static',)\nSTATICFILES_FINDERS\n['django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder']\nSTATIC_ROOT\n'/home/runner/work/BLT/BLT/blt/staticfiles'\nSTATIC_URL\n'/static/'\nSTORAGES\n{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},\n 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'}}\nSUPERUSERS\n(('admin123', '[email protected]', 'admin@123'),)\nSUPERUSER_EMAIL\n'[email protected]'\nSUPERUSER_PASSWORD\n'********************'\nSUPERUSER_USERNAME\n'admin123'\nTEMPLATES\n[{'APP_DIRS': False,\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': ['/home/runner/work/BLT/BLT/website/templates'],\n 'OPTIONS': {'context_processors': ['django.template.context_processors.debug',\n 'django.template.context_processors.request',\n 'django.template.context_processors.media',\n 'django.contrib.auth.context_processors.auth',\n 'django.contrib.messages.context_processors.messages',\n 'django.template.context_processors.i18n'],\n 'debug': False,\n 'loaders': [('django.template.loaders.cached.Loader',\n ['django.template.loaders.filesystem.Loader',\n 'django.template.loaders.app_directories.Loader'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n'django.test.runner.DiscoverRunner'\nTHOUSAND_SEPARATOR\n','\nTHROTTLE_EXEMPT_PATHS\n['/admin/', '/static/', '/media/']\nTHROTTLE_LIMITS\n{'GET': 100, 'OTHER': 30, 'POST': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n'P'\nTIME_INPUT_FORMATS\n['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']\nTIME_ZONE\n'UTC'\nTWITTER_URL\n'https://twitter.com/owasp_blt'\nUSERS_AVATAR_PATH\n'avatars'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n'********************'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n'SAMEORIGIN'\nYEAR_MONTH_FORMAT\n'F Y'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code."} | headers=HTTPHeaderDict({'Content-Length': '29055', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
FAIL
test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url) ... ERROR
DEBUG DELETE http://localhost:56901/session/3b0cbee6c5afc4b56c5a0985b27a6fde {}
DEBUG http://localhost:56901 "DELETE /session/3b0cbee6c5afc4b56c5a0985b27a6fde HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
======================================================================
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
self._post_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
self._fixture_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
call_command(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
sql_list = sql_flush(
^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
tables = connection.introspection.django_table_names(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
existing_tables = set(self.table_names(include_views=include_views))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
return get_names(cursor)
^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
for ti in self.get_table_list(cursor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
cursor.execute(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 229, in test_post_bug_full_url
self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:55435/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 11:43:32 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n response = self.process_request(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n tz = request.session.get("detected_tz")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n return self._session.get(key, default)\n ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n self._session_cache = self.load()\n ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n s = self._get_session_from_db()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n return self.model.objects.get(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n return getattr(self.get_queryset(), name)(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n num = len(clone)\n ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n results = compiler.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.498057479.1764502997\'\n_gid\n\'GA1.1.840050233.1764502997\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764502997$o1$g1$t1764503011$j46$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'k7LS08MFluk62tVNukDdBC77CMmxuGIO\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19798335209\'\nGITHUB_RUN_NUMBER\n\'14390\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:55435\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'a224b4a42e3b4cb18a74159eabb6d05d\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:11058\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000579342\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_dcda8d85-42a5-405d-a052-a3c94a9f62fd\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'55435\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1899\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.Higjh6/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7f89011a6500>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7f891ac41620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n \'AUTOCOMMIT\': True,\n \'CONN_HEALTH_CHECKS\': False,\n \'CONN_MAX_AGE\': 0,\n \'ENGINE\': \'django.db.backends.sqlite3\',\n \'HOST\': \'\',\n \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n \'OPTIONS\': {},\n \'PASSWORD\': \'********************\',\n \'PORT\': \'\',\n \'TEST\': {\'CHARSET\': None,\n \'COLLATION\': None,\n \'MIGRATE\': True,\n \'MIRROR\': None,\n \'NAME\': None},\n \'TIME_ZONE\': None,\n \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n \'formatter\': \'simple\',\n \'level\': \'DEBUG\',\n \'stream\': \'ext://sys.stdout\'},\n \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'django.server\': {\'handlers\': [\'console\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'website\': {\'handlers\': [\'console\'],\n \'level\': \'DEBUG\',\n \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n \'toolbar\': [\'undo\',\n \'redo\',\n \'|\',\n \'bold\',\n \'del\',\n \'italic\',\n \'quote\',\n \'ucwords\',\n \'uppercase\',\n \'lowercase\',\n \'|\',\n \'h1\',\n \'h2\',\n \'h3\',\n \'h5\',\n \'h6\',\n \'|\',\n \'list-ul\',\n \'list-ol\',\n \'hr\',\n \'|\',\n \'link\',\n \'reference-link\',\n \'code\',\n \'code-block\',\n \'table\',\n \'datetime\',\n \'||\',\n \'preview\',\n \'fullscreen\'],\n \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n \'FIELDS\': [\'id\',\n \'email\',\n \'name\',\n \'first_name\',\n \'last_name\',\n \'verified\',\n \'locale\',\n \'timezone\',\n \'link\'],\n \'LOCALE_FUNC\': <function <lambda> at 0x7f8918e0f380>,\n \'METHOD\': \'oauth2\',\n \'SCOPE\': [\'email\'],\n \'VERIFIED_EMAIL\': False,\n \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n \'django.template.context_processors.request\',\n \'django.template.context_processors.media\',\n \'django.contrib.auth.context_processors.auth\',\n \'django.contrib.messages.context_processors.messages\',\n \'django.template.context_processors.i18n\'],\n \'debug\': False,\n \'loaders\': [(\'django.template.loaders.cached.Loader\',\n [\'django.template.loaders.filesystem.Loader\',\n \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'
----------------------------------------------------------------------
Ran 217 tests in 135.005s
FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
For more information, see the Django testing documentation.
@coderabbitai give the fix for the tests
[!TIP] For best results, initiate chat on the files or code changes.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Get the latest PR status and CI runs
gh pr view 4065 --json statusCheckRollup,commits --repo OWASP-BLT/BLT
# Get the latest commit SHA
LATEST_COMMIT=$(gh pr view 4065 --json commits --jq '.commits[-1].oid' --repo OWASP-BLT/BLT)
echo "=== Latest commit: $LATEST_COMMIT ==="
# Get check runs for the latest commit
gh api "/repos/OWASP-BLT/BLT/commits/$LATEST_COMMIT/check-runs" --jq '.check_runs[] | {name: .name, status: .status, conclusion: .conclusion, html_url: .html_url, started_at: .started_at}' | head -50
Length of output: 21234
🏁 Script executed:
#!/bin/bash
# Get the most recent failed test run logs
LATEST_RUN=$(gh run list --repo OWASP-BLT/BLT --branch error-msg-login-email-verification-ui --limit 1 --json databaseId,conclusion,status --jq '.[0] | {id: .databaseId, conclusion: .conclusion, status: .status}')
echo "=== Latest run info: $LATEST_RUN ==="
LATEST_RUN_ID=$(gh run list --repo OWASP-BLT/BLT --branch error-msg-login-email-verification-ui --limit 1 --json databaseId --jq '.[0].databaseId')
echo "=== Fetching logs for run ID: $LATEST_RUN_ID ==="
if [ -n "$LATEST_RUN_ID" ]; then
gh run view $LATEST_RUN_ID --repo OWASP-BLT/BLT --log | grep -B 5 -A 20 "FAILED\|AssertionError" | tail -150
fi
Length of output: 133
🏁 Script executed:
#!/bin/bash
# Check the current state of test_main.py
cat website/tests/test_main.py
Length of output: 24785
🏁 Script executed:
#!/bin/bash
# Get detailed logs from the failing test run
gh run view 19798335209 --repo OWASP-BLT/BLT --log | grep -B 10 -A 30 "FAILED\|ERROR\|AssertionError" | tail -200
Length of output: 83659
@swaparup36 I can see the issue! The tests are failing with a TransactionManagementError when navigating to /all_activity/. This is because the user creation and email verification happening inside the test methods are not being committed properly in Django's LiveServerTestCase transaction.
Here's the fix for website/tests/test_main.py:
Replace both test_post_bug_full_url and test_post_bug_domain_url methods with:
@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
# Use transaction.atomic to ensure changes are committed
from django.db import transaction
from allauth.account.models import EmailAddress
# Wrap user setup in atomic block and force commit
with transaction.atomic():
# Get or create the bugbug user
bugbug_user, created = User.objects.get_or_create(
username="bugbug", defaults={"email": "[email protected]"}
)
if created:
bugbug_user.set_password("secret")
bugbug_user.save()
# Verify the email
email_address, created = EmailAddress.objects.get_or_create(
user=bugbug_user, email="[email protected]", defaults={"verified": True, "primary": True}
)
if not created:
email_address.verified = True
email_address.primary = True
email_address.save()
# Force transaction commit by accessing the database
User.objects.get(username="bugbug")
self.selenium.set_page_load_timeout(70)
self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
self.selenium.find_element("name", "login").send_keys("bugbug")
self.selenium.find_element("name", "password").send_keys("secret")
self.selenium.find_element("name", "login_button").click()
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
# Add explicit wait for the URL input field
url_input = WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.NAME, "url")))
url_input.send_keys("https://blt.owasp.org/report/")
self.selenium.find_element("id", "description").send_keys("XSS Attack on Google") # title of bug
self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
# pass captacha if in test mode
self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
self.selenium.find_element("name", "reportbug_button").click()
self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
body = self.selenium.find_element("tag name", "body")
self.assertIn("XSS Attack on Google", body.text)
@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
# Use transaction.atomic to ensure changes are committed
from django.db import transaction
from allauth.account.models import EmailAddress
# Wrap user setup in atomic block and force commit
with transaction.atomic():
# Get or create the bugbug user
bugbug_user, created = User.objects.get_or_create(
username="bugbug", defaults={"email": "[email protected]"}
)
if created:
bugbug_user.set_password("secret")
bugbug_user.save()
# Verify the email
email_address, created = EmailAddress.objects.get_or_create(
user=bugbug_user, email="[email protected]", defaults={"verified": True, "primary": True}
)
if not created:
email_address.verified = True
email_address.primary = True
email_address.save()
# Force transaction commit by accessing the database
User.objects.get(username="bugbug")
self.selenium.set_page_load_timeout(70)
self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
self.selenium.find_element("name", "login").send_keys("bugbug")
self.selenium.find_element("name", "password").send_keys("secret")
self.selenium.find_element("name", "login_button").click()
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
self.selenium.find_element("name", "url").send_keys("https://google.com")
self.selenium.find_element("id", "description").send_keys("XSS Attack on Google") # title of bug
self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
# pass captacha if in test mode
self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
self.selenium.find_element("name", "reportbug_button").click()
self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
body = self.selenium.find_element("tag name", "body")
self.assertIn("XSS Attack on Google", body.text)
Key changes:
- Wrapped the user creation and email verification in
transaction.atomic()to ensure proper transaction handling - Added
User.objects.get(username="bugbug")after the atomic block to force the transaction to be seen by the live server thread - This ensures the database changes are visible to the Selenium tests running against the live server
The issue was that Django's LiveServerTestCase runs in a separate thread, and without proper transaction handling, the user created in the test wasn't visible to the live server. This fix ensures the changes are properly committed and visible.
@coderabbitai verification_sent.html — missing features: Lines 1-6: No {% block title %}, {% block description %}, {% block keywords %}, {% block og_title %}, {% block og_description %} — confirmed missing Grep for "resend|account_email": no matches — confirmed missing No conditional blocks for expired/invalid links — confirmed missing login.html line 50 — dark mode: Line 50:
— no dark:text-gray-300 — confirmed login.html line 51 — error handling: Line 51: {% if form.errors %} — not form.non_field_errors — confirmed Test duplication: test_post_bug_full_url() (lines 196-212) and test_post_bug_domain_url() (lines 246-262) have identical user setup code — confirmed duplicate. Have these been addressed?
[!TIP] For best results, initiate chat on the files or code changes.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check verification_sent.html for the missing features
echo "=== verification_sent.html content ==="
cat website/templates/account/verification_sent.html
echo -e "\n\n=== login.html lines 45-55 ==="
cat website/templates/account/login.html | head -60 | tail -20
echo -e "\n\n=== test_main.py lines 196-212 (test_post_bug_full_url) ==="
sed -n '196,212p' website/tests/test_main.py
echo -e "\n\n=== test_main.py lines 246-262 (test_post_bug_domain_url) ==="
sed -n '246,262p' website/tests/test_main.py
Length of output: 6864
@Pritz395 Great catch! All four issues you identified are confirmed. Here are the fixes:
1. verification_sent.html — Add missing SEO blocks and resend functionality
Replace the first few lines of website/templates/account/verification_sent.html:
{% extends "base.html" %}
{% load i18n %}
{% load static %}
{% load custom_tags %}
{% block title %}{% trans "Verify Your Email" %} - {% env 'PROJECT_NAME' %}{% endblock %}
{% block description %}{% trans "Please check your email to verify your account" %}{% endblock %}
{% block keywords %}{% trans "email verification, account verification, confirm email" %}{% endblock %}
{% block og_title %}{% trans "Verify Your Email" %} - {% env 'PROJECT_NAME' %}{% endblock %}
{% block og_description %}{% trans "Please check your email to verify your account" %}{% endblock %}
{% block header %}{% endblock %}
{% block include_header %}{% endblock %}
{% block natural_content %}
<div class="flex items-center min-h-screen py-6 px-4 bg-gray-100 lg:justify-center">
<div class="flex flex-col overflow-hidden bg-white rounded-md shadow-lg max md:flex-row md:flex-1 lg:max-w-screen-sm">
<!-- Left Side (Branding and Info) -->
<div class="p-4 py-6 text-white bg-red-500 md:w-80 md:flex-shrink-0 md:flex md:flex-col md:items-center md:justify-evenly">
<div class="my-2 text-4xl font-bold tracking-wider text-center">
<a href="{% url 'home' %}"
class="hover:no-underline text-white hover:text-white">{% env 'PROJECT_NAME' %}</a>
</div>
<p class="mt-4 font-normal text-center text-white text-xl md:mt-0">
{% env 'PROJECT_NAME' %} {% trans "is a bug logging tool to report issues and get points, Organizations are held accountable" %}.
</p>
<p class="mt-6 font-normal text-center text-white text-lg md:mt-0">
{% trans "Thank you for joining our community!" %}
</p>
</div>
<!-- Right Side (Verification Content) -->
<div class="p-5 bg-white md:flex-1">
<h3 class="text-2xl text-center font-semibold text-gray-700 mb-6">{% trans "Check Your Email" %}</h3>
<div class="flex justify-center mb-8">
<div class="relative">
<div class="absolute -inset-2">
<div class="w-full h-full mx-auto opacity-30 blur-lg filter bg-gradient-to-r from-red-400 to-red-600"></div>
</div>
<svg class="relative h-16 w-16 text-red-500"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 19v-8.93a2 2 0 01.89-1.664l7-4.666a2 2 0 012.22 0l7 4.666A2 2 0 0121 10.07V19M3 19a2 2 0 002 2h14a2 2 0 002-2M3 19l6.75-4.5M21 19l-6.75-4.5M3 10l6.75 4.5M21 10l-6.75 4.5m0 0l-1.14.76a2 2 0 01-2.22 0l-1.14-.76">
</path>
</svg>
</div>
</div>
<div class="space-y-6">
<div class="text-center">
<p class="text-gray-600 mb-2">{% trans "We've sent a verification email to your inbox." %}</p>
<p class="text-sm text-gray-500">{% trans "Please click the link in the email to confirm your email address." %}</p>
</div>
<div class="space-y-4">
<div class="text-center mb-4">
<p class="text-sm text-gray-500 mb-2">{% trans "Didn't receive the email?" %}</p>
<a href="{% url 'account_email' %}"
class="text-red-500 hover:text-red-600 underline text-sm font-medium">
{% trans "Resend verification email" %}
</a>
</div>
<div class="grid grid-cols-2 gap-4">
<a href="{% url 'account_login' %}"
class="flex items-center justify-center px-4 py-2 text-lg font-semibold text-white transition-colors duration-300 bg-red-500 rounded-md shadow hover:bg-red-600 focus:outline-none focus:ring-red-200 focus:ring-4">
{% trans "Login" %}
</a>
<a href="{% url 'account_signup' %}"
class="flex items-center justify-center px-4 py-2 text-lg font-semibold text-white transition-colors duration-300 bg-red-500 rounded-md shadow hover:bg-red-600 focus:outline-none focus:ring-red-200 focus:ring-4">
{% trans "Sign Up" %}
</a>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
2. login.html line 50 — Add dark mode support
Update line 50 in website/templates/account/login.html:
<h3 class="text-2xl font-semibold text-gray-700 dark:text-gray-300">{% trans "Account Login" %}</h3>
3. login.html line 51 — Use form.non_field_errors
Replace the error block (lines 51-56) in website/templates/account/login.html:
{% if form.non_field_errors %}
<div class="mt-4 p-4 mb-4 text-sm text-red-700 bg-red-100 rounded-lg"
role="alert">
{% for error in form.non_field_errors %}
<p>{{ error }}</p>
{% endfor %}
</div>
{% endif %}
4. Test duplication — Refactor with helper method
Add this helper method to the MySeleniumTests class in website/tests/test_main.py:
def _ensure_bugbug_user_verified(self):
"""Helper method to create and verify the bugbug test user."""
from django.db import transaction
from allauth.account.models import EmailAddress
with transaction.atomic():
# Get or create the bugbug user
bugbug_user, created = User.objects.get_or_create(
username="bugbug", defaults={"email": "[email protected]"}
)
if created:
bugbug_user.set_password("secret")
bugbug_user.save()
# Verify the email
email_address, created = EmailAddress.objects.get_or_create(
user=bugbug_user,
email="[email protected]",
defaults={"verified": True, "primary": True}
)
if not created:
email_address.verified = True
email_address.primary = True
email_address.save()
# Force transaction commit by accessing the database
User.objects.get(username="bugbug")
Then replace the duplicate code in both test_post_bug_full_url and test_post_bug_domain_url:
@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
# Create and verify the bugbug user
self._ensure_bugbug_user_verified()
self.selenium.set_page_load_timeout(70)
# ... rest of the test
@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
# Create and verify the bugbug user
self._ensure_bugbug_user_verified()
self.selenium.set_page_load_timeout(70)
# ... rest of the test
These changes will:
- Add proper SEO metadata to verification_sent.html
- Add resend verification email link
- Fix dark mode support in login.html
- Improve error handling with non_field_errors
- Eliminate code duplication in tests with DRY principle
@swaparup36 Please look into these.
❌ Tests failed
The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.
How to run tests locally
# Install dependencies
poetry install --with dev
# Run all tests
poetry run python manage.py test
# Run tests with verbose output
poetry run python manage.py test -v 3
# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
cursor.execute(sql, params)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
DEBUG http://localhost:45197 "POST /session/4629fa4046a8b429c59cefe6bef05a5a/url HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:45197/session/4629fa4046a8b429c59cefe6bef05a5a/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:45197 "POST /session/4629fa4046a8b429c59cefe6bef05a5a/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.06AE8DAEB0E698785470BD87B9E6F3BF.d.C0635779AEC53F33CB58A730EB842A08.e.480"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:45197/session/4629fa4046a8b429c59cefe6bef05a5a/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:45197 "POST /session/4629fa4046a8b429c59cefe6bef05a5a/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.06AE8DAEB0E698785470BD87B9E6F3BF.d.C0635779AEC53F33CB58A730EB842A08.e.480"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG GET http://localhost:45197/session/4629fa4046a8b429c59cefe6bef05a5a/element/f.06AE8DAEB0E698785470BD87B9E6F3BF.d.C0635779AEC53F33CB58A730EB842A08.e.480/text {}
DEBUG http://localhost:45197 "GET /session/4629fa4046a8b429c59cefe6bef05a5a/element/f.06AE8DAEB0E698785470BD87B9E6F3BF.d.C0635779AEC53F33CB58A730EB842A08.e.480/text HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":"TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nRequest Method: GET\nRequest URL: http://localhost:48313/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n['/home/runner/work/BLT/BLT',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload',\n '/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages',\n '/home/runner/work/BLT/BLT']\nServer time: Sun, 30 Nov 2025 12:34:59 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n response = self.process_request(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n tz = request.session.get(\"detected_tz\")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n return self._session.get(key, default)\n ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n self._session_cache = self.load()\n ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n s = self._get_session_from_db()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n return self.model.objects.get(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n return getattr(self.get_queryset(), name)(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n num = len(clone)\n ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n results = compiler.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n'GA1.1.717061280.1764506083'\n_gid\n'GA1.1.1532922984.1764506083'\n_gat\n'1'\ncsrftoken\n'********************'\nsessionid\n'********************'\n_ga_TJDHVT49Y0\n'GS2.1.s1764506083$o1$g1$t1764506098$j45$l0$h0'\nMETA\nVariable Value\nACCEPT_EULA\n'Y'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n'/opt/actionarchivecache'\nAGENT_TOOLSDIRECTORY\n'/opt/hostedtoolcache'\nANDROID_HOME\n'/usr/local/lib/android/sdk'\nANDROID_NDK\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_HOME\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_LATEST_HOME\n'/usr/local/lib/android/sdk/ndk/29.0.14206865'\nANDROID_NDK_ROOT\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_SDK_ROOT\n'/usr/local/lib/android/sdk'\nANT_HOME\n'/usr/share/ant'\nAZURE_EXTENSION_DIR\n'/opt/az/azcliextensions'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n'1'\nCHROMEWEBDRIVER\n'/usr/local/share/chromedriver-linux64'\nCHROME_BIN\n'/usr/bin/google-chrome'\nCI\n'true'\nCONDA\n'/usr/share/miniconda'\nCONTENT_LENGTH\n''\nCONTENT_TYPE\n'text/plain'\nCSRF_COOKIE\n'DO1pPC4WRaYvbCOQsp7sTjqnre0ddU41'\nDEBIAN_FRONTEND\n'noninteractive'\nDISPLAY\n':99'\nDJANGO_SETTINGS_MODULE\n'blt.settings'\nDOTNET_MULTILEVEL_LOOKUP\n'0'\nDOTNET_NOLOGO\n'1'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n'1'\nEDGEWEBDRIVER\n'/usr/local/share/edge_driver'\nENABLE_RUNNER_TRACING\n'true'\nFORCE_COLOR\n'1'\nGATEWAY_INTERFACE\n'CGI/1.1'\nGECKOWEBDRIVER\n'/usr/local/share/gecko_driver'\nGHCUP_INSTALL_BASE_PREFIX\n'/usr/local'\nGITHUB_ACTION\n'run-tests'\nGITHUB_ACTIONS\n'true'\nGITHUB_ACTION_REF\n''\nGITHUB_ACTION_REPOSITORY\n''\nGITHUB_ACTOR\n'swaparup36'\nGITHUB_ACTOR_ID\n'82692857'\nGITHUB_API_URL\n'********************'\nGITHUB_BASE_REF\n'main'\nGITHUB_ENV\n'/home/runner/work/_temp/_runner_file_commands/set_env_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_EVENT_NAME\n'pull_request_target'\nGITHUB_EVENT_PATH\n'/home/runner/work/_temp/_github_workflow/event.json'\nGITHUB_GRAPHQL_URL\n'https://api.github.com/graphql'\nGITHUB_HEAD_REF\n'error-msg-login-email-verification-ui'\nGITHUB_JOB\n'test'\nGITHUB_OUTPUT\n'/home/runner/work/_temp/_runner_file_commands/set_output_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_PATH\n'/home/runner/work/_temp/_runner_file_commands/add_path_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_REF\n'refs/heads/main'\nGITHUB_REF_NAME\n'main'\nGITHUB_REF_PROTECTED\n'false'\nGITHUB_REF_TYPE\n'branch'\nGITHUB_REPOSITORY\n'OWASP-BLT/BLT'\nGITHUB_REPOSITORY_ID\n'62963654'\nGITHUB_REPOSITORY_OWNER\n'OWASP-BLT'\nGITHUB_REPOSITORY_OWNER_ID\n'160347863'\nGITHUB_RETENTION_DAYS\n'90'\nGITHUB_RUN_ATTEMPT\n'1'\nGITHUB_RUN_ID\n'19798893782'\nGITHUB_RUN_NUMBER\n'14392'\nGITHUB_SERVER_URL\n'https://github.com'\nGITHUB_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_STATE\n'/home/runner/work/_temp/_runner_file_commands/save_state_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_STEP_SUMMARY\n'/home/runner/work/_temp/_runner_file_commands/step_summary_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_TRIGGERING_ACTOR\n'swaparup36'\nGITHUB_WORKFLOW\n'CI/CD Optimized'\nGITHUB_WORKFLOW_REF\n'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main'\nGITHUB_WORKFLOW_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_WORKSPACE\n'/home/runner/work/BLT/BLT'\nGOROOT_1_22_X64\n'/opt/hostedtoolcache/go/1.22.12/x64'\nGOROOT_1_23_X64\n'/opt/hostedtoolcache/go/1.23.12/x64'\nGOROOT_1_24_X64\n'/opt/hostedtoolcache/go/1.24.10/x64'\nGOROOT_1_25_X64\n'/opt/hostedtoolcache/go/1.25.4/x64'\nGRADLE_HOME\n'/usr/share/gradle-9.2.0'\nHOME\n'/home/runner'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n'3650'\nHOMEBREW_NO_AUTO_UPDATE\n'1'\nHTTP_ACCEPT\n'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'\nHTTP_ACCEPT_ENCODING\n'gzip, deflate, br, zstd'\nHTTP_ACCEPT_LANGUAGE\n'en-US,en;q=0.9'\nHTTP_CONNECTION\n'keep-alive'\nHTTP_COOKIE\n'********************'\nHTTP_HOST\n'localhost:48313'\nHTTP_SEC_CH_UA\n'\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"'\nHTTP_SEC_CH_UA_MOBILE\n'?0'\nHTTP_SEC_CH_UA_PLATFORM\n'\"Linux\"'\nHTTP_SEC_FETCH_DEST\n'document'\nHTTP_SEC_FETCH_MODE\n'navigate'\nHTTP_SEC_FETCH_SITE\n'none'\nHTTP_SEC_FETCH_USER\n'?1'\nHTTP_UPGRADE_INSECURE_REQUESTS\n'1'\nHTTP_USER_AGENT\n('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '\n 'HeadlessChrome/142.0.0.0 Safari/537.36')\nINVOCATION_ID\n'9ce39418059e4faf9b7d4269a2b5d476'\nImageOS\n'ubuntu24'\nImageVersion\n'20251112.124.1'\nJAVA_HOME\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_11_X64\n'/usr/lib/jvm/temurin-11-jdk-amd64'\nJAVA_HOME_17_X64\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_21_X64\n'/usr/lib/jvm/temurin-21-jdk-amd64'\nJAVA_HOME_25_X64\n'/usr/lib/jvm/temurin-25-jdk-amd64'\nJAVA_HOME_8_X64\n'/usr/lib/jvm/temurin-8-jdk-amd64'\nJOURNAL_STREAM\n'9:13011'\nLANG\n'C.UTF-8'\nLD_LIBRARY_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib'\nLOGNAME\n'runner'\nMEMORY_PRESSURE_WATCH\n'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure'\nMEMORY_PRESSURE_WRITE\n'c29tZSAyMDAwMDAgMjAwMDAwMAA='\nNVM_DIR\n'/home/runner/.nvm'\nPATH\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'\nPATH_INFO\n'/all_activity/'\nPIPX_BIN_DIR\n'/opt/pipx_bin'\nPIPX_HOME\n'/opt/pipx'\nPKG_CONFIG_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig'\nPOETRY_CACHE_DIR\n'~/.cache/pypoetry'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n'GitHub-Actions-ubuntu24'\nPWD\n'/home/runner/work/BLT/BLT'\nPython2_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython3_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nQUERY_STRING\n''\nREMOTE_ADDR\n'127.0.0.1'\nREMOTE_HOST\n''\nREQUEST_METHOD\n'GET'\nRUNNER_ARCH\n'X64'\nRUNNER_DEBUG\n'1'\nRUNNER_ENVIRONMENT\n'github-hosted'\nRUNNER_NAME\n'GitHub Actions 1000579699'\nRUNNER_OS\n'Linux'\nRUNNER_TEMP\n'/home/runner/work/_temp'\nRUNNER_TOOL_CACHE\n'/opt/hostedtoolcache'\nRUNNER_TRACKING_ID\n'github_02229f9f-70be-4e54-8e01-be8ef284576a'\nRUNNER_WORKSPACE\n'/home/runner/work/BLT'\nSCRIPT_NAME\n''\nSELENIUM_JAR_PATH\n'/usr/share/java/selenium-server.jar'\nSERVER_NAME\n'localhost'\nSERVER_PORT\n'48313'\nSERVER_PROTOCOL\n'HTTP/1.1'\nSERVER_SOFTWARE\n'WSGIServer/0.2'\nSGX_AESM_ADDR\n'1'\nSHELL\n'/bin/bash'\nSHLVL\n'1'\nSWIFT_PATH\n'/usr/share/swift/usr/bin'\nSYSTEMD_EXEC_PID\n'1905'\nTZ\n'UTC'\nUSER\n'runner'\nVCPKG_INSTALLATION_ROOT\n'/usr/local/share/vcpkg'\nVIRTUAL_ENV\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11'\nXAUTHORITY\n'/tmp/xvfb-run.dWqxim/Xauthority'\nXDG_CONFIG_HOME\n'/home/runner/.config'\nXDG_RUNTIME_DIR\n'/run/user/1001'\n_\n'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry'\npythonLocation\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nwsgi.errors\n\u003C_io.TextIOWrapper name='\u003Cstderr>' mode='w' encoding='utf-8'>\nwsgi.file_wrapper\n\u003Cclass 'wsgiref.util.FileWrapper'>\nwsgi.input\n\u003Cdjango.core.handlers.wsgi.LimitedStream object at 0x7fc492db4520>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n'http'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{'auth.user': \u003Cfunction \u003Clambda> at 0x7fc4a8edd620>}\nACCESS_TOKEN\n'********************'\nACCESS_TOKEN_SECRET\n'********************'\nACCOUNT_ADAPTER\n'allauth.account.adapter.DefaultAccountAdapter'\nACCOUNT_AUTHENTICATION_METHOD\n'username_email'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n'mandatory'\nACCOUNT_FORMS\n{'signup': 'website.forms.SignupFormWithCaptcha'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n(('Admin', '[email protected]'),)\nADMIN_URL\n'admin'\nALLOWED_HOSTS\n['127.0.0.1', 'localhost', '0.0.0.0', '', 'testserver']\nAPPEND_SLASH\nTrue\nAPP_KEY\n'********************'\nAPP_KEY_SECRET\n'********************'\nASGI_APPLICATION\n'blt.asgi.application'\nAUTHENTICATION_BACKENDS\n('django.contrib.auth.backends.ModelBackend',\n 'allauth.account.auth_backends.AuthenticationBackend')\nAUTH_PASSWORD_VALIDATORS\n'********************'\nAUTH_USER_MODEL\n'auth.User'\nAVATAR_PATH\n'media/avatars'\nBASE_DIR\n'/home/runner/work/BLT/BLT'\nBEARER_TOKEN\n'********************'\nBITCOIN_RPC_HOST\n'localhost'\nBITCOIN_RPC_PASSWORD\n'********************'\nBITCOIN_RPC_PORT\n'8332'\nBITCOIN_RPC_USER\n'yourusername'\nBLOG_URL\n'blt.owasp.org/blog/'\nBLUESKY_PASSWORD\n'********************'\nBLUESKY_USERNAME\n'default_username'\nCACHES\n{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n 'LOCATION': 'unique-snowflake'}}\nCACHE_MIDDLEWARE_ALIAS\n'default'\nCACHE_MIDDLEWARE_KEY_PREFIX\n'********************'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer',\n 'CONFIG': {'hosts': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n'csrftoken'\nCSRF_COOKIE_PATH\n'/'\nCSRF_COOKIE_SAMESITE\n'Lax'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n'django.views.csrf.csrf_failure'\nCSRF_HEADER_NAME\n'HTTP_X_CSRFTOKEN'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{'default': {'ATOMIC_REQUESTS': False,\n 'AUTOCOMMIT': True,\n 'CONN_HEALTH_CHECKS': False,\n 'CONN_MAX_AGE': 0,\n 'ENGINE': 'django.db.backends.sqlite3',\n 'HOST': '',\n 'NAME': 'file:memorydb_default?mode=memory&cache=shared',\n 'OPTIONS': {},\n 'PASSWORD': '********************',\n 'PORT': '',\n 'TEST': {'CHARSET': None,\n 'COLLATION': None,\n 'MIGRATE': True,\n 'MIRROR': None,\n 'NAME': None},\n 'TIME_ZONE': None,\n 'USER': ''}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n'N j, Y, P'\nDATETIME_INPUT_FORMATS\n['%Y-%m-%d %H:%M:%S',\n '%Y-%m-%d %H:%M:%S.%f',\n '%Y-%m-%d %H:%M',\n '%m/%d/%Y %H:%M:%S',\n '%m/%d/%Y %H:%M:%S.%f',\n '%m/%d/%Y %H:%M',\n '%m/%d/%y %H:%M:%S',\n '%m/%d/%y %H:%M:%S.%f',\n '%m/%d/%y %H:%M']\nDATE_FORMAT\n'N j, Y'\nDATE_INPUT_FORMATS\n['%Y-%m-%d',\n '%m/%d/%Y',\n '%m/%d/%y',\n '%b %d %Y',\n '%b %d, %Y',\n '%d %b %Y',\n '%d %b, %Y',\n '%B %d %Y',\n '%B %d, %Y',\n '%d %B %Y',\n '%d %B, %Y']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n'.'\nDEFAULT_AUTO_FIELD\n'django.db.models.AutoField'\nDEFAULT_CHARSET\n'utf-8'\nDEFAULT_EXCEPTION_REPORTER\n'django.views.debug.ExceptionReporter'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n'django.views.debug.SafeExceptionReporterFilter'\nDEFAULT_FROM_EMAIL\n'[email protected]'\nDEFAULT_INDEX_TABLESPACE\n''\nDEFAULT_TABLESPACE\n''\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n'********************'\nDOMAIN_NAME\n'blt.owasp.org'\nDOMAIN_NAME_PREVIOUS\n'BLT'\nEMAIL_BACKEND\n'django.core.mail.backends.locmem.EmailBackend'\nEMAIL_HOST\n'localhost'\nEMAIL_HOST_PASSWORD\n'********************'\nEMAIL_HOST_USER\n''\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n'********************'\nEMAIL_SUBJECT_PREFIX\n'[Django] '\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n'BLT \[email protected]>'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n'https://github.com/OWASP/BLT-Extension'\nFACEBOOK_URL\n'https://www.facebook.com/groups/owaspfoundation/'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n['django.core.files.uploadhandler.MemoryFileUploadHandler',\n 'django.core.files.uploadhandler.TemporaryFileUploadHandler']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n'django.forms.renderers.DjangoTemplates'\nFQDN\n'blt.owasp.org'\nGITHUB_TOKEN\n'********************'\nGITHUB_URL\n'https://github.com/OWASP/BLT'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n('django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'django.contrib.sites',\n 'django.contrib.humanize',\n 'website',\n 'allauth',\n 'allauth.account',\n 'allauth.socialaccount',\n 'allauth.socialaccount.providers.github',\n 'allauth.socialaccount.providers.facebook',\n 'allauth.socialaccount.providers.google',\n 'django_gravatar',\n 'email_obfuscator',\n 'import_export',\n 'comments',\n 'annoying',\n 'rest_framework',\n 'django_filters',\n 'rest_framework.authtoken',\n 'mdeditor',\n 'tz_detect',\n 'star_ratings',\n 'drf_yasg',\n 'captcha',\n 'dj_rest_auth',\n 'dj_rest_auth.registration',\n 'storages',\n 'channels')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n(('en', 'English'),\n ('fr', 'French'),\n ('zh-cn', 'Chinese'),\n ('de', 'German'),\n ('ja', 'Japanese'),\n ('ru', 'Russian'),\n ('hi', 'Hindi'))\nLANGUAGES_BIDI\n['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']\nLANGUAGE_CODE\n'en-us'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n'django_language'\nLANGUAGE_COOKIE_PATH\n'/'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n('/home/runner/work/BLT/BLT/locale',)\nLOGGING\n{'disable_existing_loggers': False,\n 'formatters': {'simple': {'format': '%(levelname)s %(message)s'},\n 'verbose': {'format': '%(levelname)s %(asctime)s %(module)s '\n '%(process)d %(thread)d %(message)s'}},\n 'handlers': {'console': {'class': 'logging.StreamHandler',\n 'formatter': 'simple',\n 'level': 'DEBUG',\n 'stream': 'ext://sys.stdout'},\n 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',\n 'level': 'ERROR'}},\n 'loggers': {'django': {'handlers': ['console', 'mail_admins'],\n 'level': 'INFO',\n 'propagate': True},\n 'django.server': {'handlers': ['console'],\n 'level': 'INFO',\n 'propagate': True},\n 'website': {'handlers': ['console'],\n 'level': 'DEBUG',\n 'propagate': True}},\n 'root': {'handlers': ['console'], 'level': 'DEBUG'},\n 'version': 1}\nLOGGING_CONFIG\n'logging.config.dictConfig'\nLOGIN_REDIRECT_URL\n'/'\nLOGIN_URL\n'/accounts/login/'\nLOGOUT_REDIRECT_URL\n'/'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{'default': {'language': 'en',\n 'toolbar': ['undo',\n 'redo',\n '|',\n 'bold',\n 'del',\n 'italic',\n 'quote',\n 'ucwords',\n 'uppercase',\n 'lowercase',\n '|',\n 'h1',\n 'h2',\n 'h3',\n 'h5',\n 'h6',\n '|',\n 'list-ul',\n 'list-ol',\n 'hr',\n '|',\n 'link',\n 'reference-link',\n 'code',\n 'code-block',\n 'table',\n 'datetime',\n '||',\n 'preview',\n 'fullscreen'],\n 'watch': False}}\nMEDIA_ROOT\n'media'\nMEDIA_URL\n'/media/'\nMESSAGE_STORAGE\n'django.contrib.messages.storage.fallback.FallbackStorage'\nMIDDLEWARE\n['django.contrib.sessions.middleware.SessionMiddleware',\n 'blt.middleware.domain.DomainMiddleware',\n 'django.middleware.locale.LocaleMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'allauth.account.middleware.AccountMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n 'django.middleware.security.SecurityMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware',\n 'blt.middleware.throttling.ThrottlingMiddleware',\n 'tz_detect.middleware.TimezoneMiddleware',\n 'blt.middleware.ip_restrict.IPRestrictMiddleware',\n 'blt.middleware.user_visit_tracking.VisitTrackingMiddleware']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n'F j'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n'********************'\nORD_SERVER_URL\n'http://localhost:9001'\nPASSWORD_HASHERS\n'********************'\nPASSWORD_RESET_TIMEOUT\n'********************'\nPORT\n'8000'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n'blt.owasp.org'\nPROJECT_NAME\n'BLT'\nPROJECT_NAME_LOWER\n'blt'\nPROJECT_NAME_UPPER\n'BLT'\nPROJECT_ROOT\n'/home/runner/work/BLT/BLT/blt'\nREPORT_EMAIL\n'blank'\nREPORT_EMAIL_PASSWORD\n'********************'\nREST_AUTH\n{'SESSION_LOGIN': False}\nREST_FRAMEWORK\n{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',),\n 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),\n 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',\n 'DEFAULT_THROTTLE_RATES': {'anon': '100000/day', 'user': '100000/day'},\n 'PAGE_SIZE': 10}\nROOT_URLCONF\n'blt.urls'\nSCOUT_KEY\n'********************'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n'BLT'\nSECRET_KEY\n'********************'\nSECRET_KEY_FALLBACKS\n'********************'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n'same-origin'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n('HTTP_X_FORWARDED_PROTO', 'https')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n'same-origin'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n'[email protected]'\nSESSION_CACHE_ALIAS\n'default'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n'sessionid'\nSESSION_COOKIE_PATH\n'/'\nSESSION_COOKIE_SAMESITE\n'Lax'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n'django.contrib.sessions.backends.db'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n'django.contrib.sessions.serializers.JSONSerializer'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n'm/d/Y P'\nSHORT_DATE_FORMAT\n'm/d/Y'\nSIGNING_BACKEND\n'django.core.signing.TimestampSigner'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n'allauth.socialaccount.adapter.DefaultSocialAccountAdapter'\nSOCIALACCOUNT_PROVIDERS\n{'facebook': {'EXCHANGE_TOKEN': '********************',\n 'FIELDS': ['id',\n 'email',\n 'name',\n 'first_name',\n 'last_name',\n 'verified',\n 'locale',\n 'timezone',\n 'link'],\n 'LOCALE_FUNC': \u003Cfunction \u003Clambda> at 0x7fc4a72f3380>,\n 'METHOD': 'oauth2',\n 'SCOPE': ['email'],\n 'VERIFIED_EMAIL': False,\n 'VERSION': 'v7.0'},\n 'github': {'AUTH_PARAMS': {'access_type': 'online'},\n 'SCOPE': ['user', 'repo']},\n 'google': {'AUTH_PARAMS': {'access_type': 'online'},\n 'SCOPE': ['profile', 'email']}}\nSOCIALACCOUNT_STORE_TOKENS\n'********************'\nSOCIAL_AUTH_GITHUB_KEY\n'********************'\nSOCIAL_AUTH_GITHUB_SECRET\n'********************'\nSTAGING_DOMAIN\n'blt-staging.herokuapp.com'\nSTAR_RATINGS_RATING_MODEL\n'star_ratings.Rating'\nSTATICFILES_DIRS\n('/home/runner/work/BLT/BLT/website/static',)\nSTATICFILES_FINDERS\n['django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder']\nSTATIC_ROOT\n'/home/runner/work/BLT/BLT/blt/staticfiles'\nSTATIC_URL\n'/static/'\nSTORAGES\n{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},\n 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'}}\nSUPERUSERS\n(('admin123', '[email protected]', 'admin@123'),)\nSUPERUSER_EMAIL\n'[email protected]'\nSUPERUSER_PASSWORD\n'********************'\nSUPERUSER_USERNAME\n'admin123'\nTEMPLATES\n[{'APP_DIRS': False,\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': ['/home/runner/work/BLT/BLT/website/templates'],\n 'OPTIONS': {'context_processors': ['django.template.context_processors.debug',\n 'django.template.context_processors.request',\n 'django.template.context_processors.media',\n 'django.contrib.auth.context_processors.auth',\n 'django.contrib.messages.context_processors.messages',\n 'django.template.context_processors.i18n'],\n 'debug': False,\n 'loaders': [('django.template.loaders.cached.Loader',\n ['django.template.loaders.filesystem.Loader',\n 'django.template.loaders.app_directories.Loader'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n'django.test.runner.DiscoverRunner'\nTHOUSAND_SEPARATOR\n','\nTHROTTLE_EXEMPT_PATHS\n['/admin/', '/static/', '/media/']\nTHROTTLE_LIMITS\n{'GET': 100, 'OTHER': 30, 'POST': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n'P'\nTIME_INPUT_FORMATS\n['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']\nTIME_ZONE\n'UTC'\nTWITTER_URL\n'https://twitter.com/owasp_blt'\nUSERS_AVATAR_PATH\n'avatars'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n'********************'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n'SAMEORIGIN'\nYEAR_MONTH_FORMAT\n'F Y'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code."} | headers=HTTPHeaderDict({'Content-Length': '29056', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
FAIL
test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url) ... ERROR
DEBUG DELETE http://localhost:45197/session/4629fa4046a8b429c59cefe6bef05a5a {}
DEBUG http://localhost:45197 "DELETE /session/4629fa4046a8b429c59cefe6bef05a5a HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
======================================================================
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
self._post_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
self._fixture_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
call_command(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
sql_list = sql_flush(
^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
tables = connection.introspection.django_table_names(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
existing_tables = set(self.table_names(include_views=include_views))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
return get_names(cursor)
^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
for ti in self.get_table_list(cursor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
cursor.execute(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 219, in test_post_bug_full_url
self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:48313/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 12:34:59 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n response = self.process_request(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n tz = request.session.get("detected_tz")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n return self._session.get(key, default)\n ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n self._session_cache = self.load()\n ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n s = self._get_session_from_db()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n return self.model.objects.get(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n return getattr(self.get_queryset(), name)(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n num = len(clone)\n ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n results = compiler.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.717061280.1764506083\'\n_gid\n\'GA1.1.1532922984.1764506083\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764506083$o1$g1$t1764506098$j45$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'DO1pPC4WRaYvbCOQsp7sTjqnre0ddU41\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19798893782\'\nGITHUB_RUN_NUMBER\n\'14392\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:48313\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'9ce39418059e4faf9b7d4269a2b5d476\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:13011\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000579699\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_02229f9f-70be-4e54-8e01-be8ef284576a\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'48313\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1905\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.dWqxim/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7fc492db4520>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7fc4a8edd620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n \'AUTOCOMMIT\': True,\n \'CONN_HEALTH_CHECKS\': False,\n \'CONN_MAX_AGE\': 0,\n \'ENGINE\': \'django.db.backends.sqlite3\',\n \'HOST\': \'\',\n \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n \'OPTIONS\': {},\n \'PASSWORD\': \'********************\',\n \'PORT\': \'\',\n \'TEST\': {\'CHARSET\': None,\n \'COLLATION\': None,\n \'MIGRATE\': True,\n \'MIRROR\': None,\n \'NAME\': None},\n \'TIME_ZONE\': None,\n \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n \'formatter\': \'simple\',\n \'level\': \'DEBUG\',\n \'stream\': \'ext://sys.stdout\'},\n \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'django.server\': {\'handlers\': [\'console\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'website\': {\'handlers\': [\'console\'],\n \'level\': \'DEBUG\',\n \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n \'toolbar\': [\'undo\',\n \'redo\',\n \'|\',\n \'bold\',\n \'del\',\n \'italic\',\n \'quote\',\n \'ucwords\',\n \'uppercase\',\n \'lowercase\',\n \'|\',\n \'h1\',\n \'h2\',\n \'h3\',\n \'h5\',\n \'h6\',\n \'|\',\n \'list-ul\',\n \'list-ol\',\n \'hr\',\n \'|\',\n \'link\',\n \'reference-link\',\n \'code\',\n \'code-block\',\n \'table\',\n \'datetime\',\n \'||\',\n \'preview\',\n \'fullscreen\'],\n \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n \'FIELDS\': [\'id\',\n \'email\',\n \'name\',\n \'first_name\',\n \'last_name\',\n \'verified\',\n \'locale\',\n \'timezone\',\n \'link\'],\n \'LOCALE_FUNC\': <function <lambda> at 0x7fc4a72f3380>,\n \'METHOD\': \'oauth2\',\n \'SCOPE\': [\'email\'],\n \'VERIFIED_EMAIL\': False,\n \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n \'django.template.context_processors.request\',\n \'django.template.context_processors.media\',\n \'django.contrib.auth.context_processors.auth\',\n \'django.contrib.messages.context_processors.messages\',\n \'django.template.context_processors.i18n\'],\n \'debug\': False,\n \'loaders\': [(\'django.template.loaders.cached.Loader\',\n [\'django.template.loaders.filesystem.Loader\',\n \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'
----------------------------------------------------------------------
Ran 217 tests in 140.070s
FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
For more information, see the Django testing documentation.
@coderabbitai give me the fix for the test
[!TIP] For best results, initiate chat on the files or code changes.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Get the latest PR status and CI runs
gh pr view 4065 --json statusCheckRollup,commits --repo OWASP-BLT/BLT
# Get the latest commit SHA
LATEST_COMMIT=$(gh pr view 4065 --json commits --jq '.commits[-1].oid' --repo OWASP-BLT/BLT)
echo "=== Latest commit: $LATEST_COMMIT ==="
# Get check runs for the latest commit
gh api "/repos/OWASP-BLT/BLT/commits/$LATEST_COMMIT/check-runs" --jq '.check_runs[] | {name: .name, status: .status, conclusion: .conclusion, html_url: .html_url}' | head -30
Length of output: 22411
🏁 Script executed:
#!/bin/bash
# Get the most recent test run logs
LATEST_RUN_ID=$(gh run list --repo OWASP-BLT/BLT --branch error-msg-login-email-verification-ui --limit 1 --json databaseId --jq '.[0].databaseId')
echo "=== Latest run ID: $LATEST_RUN_ID ==="
if [ -n "$LATEST_RUN_ID" ]; then
gh run view $LATEST_RUN_ID --repo OWASP-BLT/BLT --log | grep -B 10 -A 30 "FAILED\|ERROR\|AssertionError" | tail -200
fi
Length of output: 34
🏁 Script executed:
#!/bin/bash
# Check the current state of test_main.py to see what's implemented
cat website/tests/test_main.py | grep -A 30 "def test_post_bug_full_url\|def test_post_bug_domain_url\|def _ensure_bugbug_user_verified"
Length of output: 4788
🏁 Script executed:
#!/bin/bash
# Get the detailed logs from the failed test run
gh run view 19798893782 --repo OWASP-BLT/BLT --log | grep -B 10 -A 30 "FAILED\|ERROR\|AssertionError" | tail -200
Length of output: 83661
🏁 Script executed:
#!/bin/bash
# Get the full test output to see which specific tests are failing
gh run view 19798893782 --repo OWASP-BLT/BLT --log | grep -E "test_.*\(|FAIL:|ERROR:|Traceback" | tail -100
Length of output: 79315
@swaparup36 I found the issue! The tests test_post_bug_full_url and test_post_bug_domain_url have duplicate lines that are causing the TransactionManagementError.
Looking at the current code structure, after calling self._ensure_bugbug_user_verified(), both tests have these duplicate lines:
self.selenium.set_page_load_timeout(70)(appears twice)User.objects.get(username="bugbug")(unnecessary since the helper already does this)
These duplicate database queries are leaving the transaction in a broken state, causing the error when Django's session middleware tries to access the database.
Here's the fix for website/tests/test_main.py:
Replace test_post_bug_full_url with:
@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
# Create and verify the bugbug user
self._ensure_bugbug_user_verified()
self.selenium.set_page_load_timeout(70)
self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
self.selenium.find_element("name", "login").send_keys("bugbug")
self.selenium.find_element("name", "password").send_keys("secret")
self.selenium.find_element("name", "login_button").click()
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
# Add explicit wait for the URL input field
url_input = WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.NAME, "url")))
url_input.send_keys("https://blt.owasp.org/report/")
self.selenium.find_element("id", "description").send_keys("XSS Attack on Google") # title of bug
self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
# pass captacha if in test mode
self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
self.selenium.find_element("name", "reportbug_button").click()
self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
body = self.selenium.find_element("tag name", "body")
self.assertIn("XSS Attack on Google", body.text)
Replace test_post_bug_domain_url with:
@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
# Create and verify the bugbug user
self._ensure_bugbug_user_verified()
self.selenium.set_page_load_timeout(70)
self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
self.selenium.find_element("name", "login").send_keys("bugbug")
self.selenium.find_element("name", "password").send_keys("secret")
self.selenium.find_element("name", "login_button").click()
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
self.selenium.find_element("name", "url").send_keys("https://google.com")
self.selenium.find_element("id", "description").send_keys("XSS Attack on Google") # title of bug
self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
# pass captacha if in test mode
self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
self.selenium.find_element("name", "reportbug_button").click()
self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
body = self.selenium.find_element("tag name", "body")
self.assertIn("XSS Attack on Google", body.text)
Key changes:
- Removed the duplicate
self.selenium.set_page_load_timeout(70)line - Removed the duplicate
User.objects.get(username="bugbug")line that was causing the transaction error - The
_ensure_bugbug_user_verified()helper already handles all the user setup and transaction management
This should fix the TransactionManagementError by ensuring clean transaction boundaries!
@Pritz395 thanks for pointing out! fixed now
❌ Tests failed
The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.
How to run tests locally
# Install dependencies
poetry install --with dev
# Run all tests
poetry run python manage.py test
# Run tests with verbose output
poetry run python manage.py test -v 3
# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py", line 161, in _record_ip
ip_record.save(update_fields=["agent", "count"])
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 892, in save
self.save_base(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 998, in save_base
updated = self._save_table(
^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 1130, in _save_table
updated = self._do_update(
^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 1195, in _do_update
return filtered._update(values) > 0
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 1278, in _update
return query.get_compiler(self.db).execute_sql(CURSOR)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 2003, in execute_sql
cursor = super().execute_sql(result_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
cursor.execute(sql, params)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
self._post_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
self._fixture_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
call_command(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
sql_list = sql_flush(
^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
tables = connection.introspection.django_table_names(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
existing_tables = set(self.table_names(include_views=include_views))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
return get_names(cursor)
^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
for ti in self.get_table_list(cursor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
cursor.execute(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 214, in test_post_bug_full_url
self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:38131/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Tue, 02 Dec 2025 14:55:09 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 161, in _record_ip\n ip_record.save(update_fields=["agent", "count"])\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 892, in save\n self.save_base(\n ^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 998, in save_base\n updated = self._save_table(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 1130, in _save_table\n updated = self._do_update(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 1195, in _do_update\n return filtered._update(values) > 0\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1278, in _update\n return query.get_compiler(self.db).execute_sql(CURSOR)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 2003, in execute_sql\n cursor = super().execute_sql(result_type)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\nThe above exception (An error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.) was the direct cause of the following exception:\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n response = self.process_request(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n tz = request.session.get("detected_tz")\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n return self._session.get(key, default)\n ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n self._session_cache = self.load()\n ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n s = self._get_session_from_db()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n return self.model.objects.get(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n return getattr(self.get_queryset(), name)(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n num = len(clone)\n ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n results = compiler.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.887834079.1764687294\'\n_gid\n\'GA1.1.1408911291.1764687294\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764687294$o1$g1$t1764687308$j46$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'wk62eRUrqehiNhy3AB5Y2A2eH2k3I9Hx\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19862744582\'\nGITHUB_RUN_NUMBER\n\'14472\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'a613bf46630a482e29bc72b282a54840d512b992\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'a613bf46630a482e29bc72b282a54840d512b992\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:38131\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'7c7ab108c9c741c0a6b371b932006df3\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:11547\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000588648\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_b86bcff4-5000-41a0-b069-d10316a9353e\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'38131\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1903\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.hKHyRs/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7f3473ac24d0>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7f348bde5620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n \'AUTOCOMMIT\': True,\n \'CONN_HEALTH_CHECKS\': False,\n \'CONN_MAX_AGE\': 0,\n \'ENGINE\': \'django.db.backends.sqlite3\',\n \'HOST\': \'\',\n \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n \'OPTIONS\': {},\n \'PASSWORD\': \'********************\',\n \'PORT\': \'\',\n \'TEST\': {\'CHARSET\': None,\n \'COLLATION\': None,\n \'MIGRATE\': True,\n \'MIRROR\': None,\n \'NAME\': None},\n \'TIME_ZONE\': None,\n \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n \'formatter\': \'simple\',\n \'level\': \'DEBUG\',\n \'stream\': \'ext://sys.stdout\'},\n \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'django.server\': {\'handlers\': [\'console\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'website\': {\'handlers\': [\'console\'],\n \'level\': \'DEBUG\',\n \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n \'toolbar\': [\'undo\',\n \'redo\',\n \'|\',\n \'bold\',\n \'del\',\n \'italic\',\n \'quote\',\n \'ucwords\',\n \'uppercase\',\n \'lowercase\',\n \'|\',\n \'h1\',\n \'h2\',\n \'h3\',\n \'h5\',\n \'h6\',\n \'|\',\n \'list-ul\',\n \'list-ol\',\n \'hr\',\n \'|\',\n \'link\',\n \'reference-link\',\n \'code\',\n \'code-block\',\n \'table\',\n \'datetime\',\n \'||\',\n \'preview\',\n \'fullscreen\'],\n \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n \'FIELDS\': [\'id\',\n \'email\',\n \'name\',\n \'first_name\',\n \'last_name\',\n \'verified\',\n \'locale\',\n \'timezone\',\n \'link\'],\n \'LOCALE_FUNC\': <function <lambda> at 0x7f348a1ff380>,\n \'METHOD\': \'oauth2\',\n \'SCOPE\': [\'email\'],\n \'VERIFIED_EMAIL\': False,\n \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n \'django.template.context_processors.request\',\n \'django.template.context_processors.media\',\n \'django.contrib.auth.context_processors.auth\',\n \'django.contrib.messages.context_processors.messages\',\n \'django.template.context_processors.i18n\'],\n \'debug\': False,\n \'loaders\': [(\'django.template.loaders.cached.Loader\',\n [\'django.template.loaders.filesystem.Loader\',\n \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'
----------------------------------------------------------------------
Ran 227 tests in 136.351s
FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
For more information, see the Django testing documentation.
❌ Tests failed
The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.
How to run tests locally
# Install dependencies
poetry install --with dev
# Run all tests
poetry run python manage.py test
# Run tests with verbose output
poetry run python manage.py test -v 3
# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
cursor.execute(sql, params)
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
DEBUG http://localhost:56473 "POST /session/7bf3f93db991d91aa975a1a1e677f303/url HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:56473/session/7bf3f93db991d91aa975a1a1e677f303/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:56473 "POST /session/7bf3f93db991d91aa975a1a1e677f303/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.904853593DEC9CD28016093529B83A43.d.38833DA86A85B1EA518E8234E448A2B0.e.278"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:56473/session/7bf3f93db991d91aa975a1a1e677f303/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:56473 "POST /session/7bf3f93db991d91aa975a1a1e677f303/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.904853593DEC9CD28016093529B83A43.d.38833DA86A85B1EA518E8234E448A2B0.e.278"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG GET http://localhost:56473/session/7bf3f93db991d91aa975a1a1e677f303/element/f.904853593DEC9CD28016093529B83A43.d.38833DA86A85B1EA518E8234E448A2B0.e.278/text {}
DEBUG http://localhost:56473 "GET /session/7bf3f93db991d91aa975a1a1e677f303/element/f.904853593DEC9CD28016093529B83A43.d.38833DA86A85B1EA518E8234E448A2B0.e.278/text HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":"TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nRequest Method: GET\nRequest URL: http://localhost:39287/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n['/home/runner/work/BLT/BLT',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload',\n '/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages',\n '/home/runner/work/BLT/BLT']\nServer time: Tue, 02 Dec 2025 16:16:16 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 171, in __call__\n return self.process_request_sync(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 223, in process_request_sync\n blocked_agents = self.blocked_agents()\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 64, in blocked_agents\n blocked_user_agents = [agent for agent in blocked_user_agents if agent is not None]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 400, in __iter__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 287, in __iter__\n for row in compiler.results_iter(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1525, in results_iter\n results = self.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\nAnonymousUser\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n'GA1.1.831322588.1764692170'\n_gid\n'GA1.1.1371189930.1764692170'\n_gat\n'1'\ncsrftoken\n'********************'\n_ga_TJDHVT49Y0\n'GS2.1.s1764692170$o1$g1$t1764692175$j55$l0$h0'\nMETA\nVariable Value\nACCEPT_EULA\n'Y'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n'/opt/actionarchivecache'\nAGENT_TOOLSDIRECTORY\n'/opt/hostedtoolcache'\nANDROID_HOME\n'/usr/local/lib/android/sdk'\nANDROID_NDK\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_HOME\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_LATEST_HOME\n'/usr/local/lib/android/sdk/ndk/29.0.14206865'\nANDROID_NDK_ROOT\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_SDK_ROOT\n'/usr/local/lib/android/sdk'\nANT_HOME\n'/usr/share/ant'\nAZURE_EXTENSION_DIR\n'/opt/az/azcliextensions'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n'1'\nCHROMEWEBDRIVER\n'/usr/local/share/chromedriver-linux64'\nCHROME_BIN\n'/usr/bin/google-chrome'\nCI\n'true'\nCONDA\n'/usr/share/miniconda'\nCONTENT_LENGTH\n''\nCONTENT_TYPE\n'text/plain'\nCSRF_COOKIE\n'YEfa3ahT76UdYfyo9F35ixqTWfyJ90K6'\nDEBIAN_FRONTEND\n'noninteractive'\nDISPLAY\n':99'\nDJANGO_SETTINGS_MODULE\n'blt.settings'\nDOTNET_MULTILEVEL_LOOKUP\n'0'\nDOTNET_NOLOGO\n'1'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n'1'\nEDGEWEBDRIVER\n'/usr/local/share/edge_driver'\nENABLE_RUNNER_TRACING\n'true'\nFORCE_COLOR\n'1'\nGATEWAY_INTERFACE\n'CGI/1.1'\nGECKOWEBDRIVER\n'/usr/local/share/gecko_driver'\nGHCUP_INSTALL_BASE_PREFIX\n'/usr/local'\nGITHUB_ACTION\n'run-tests'\nGITHUB_ACTIONS\n'true'\nGITHUB_ACTION_REF\n''\nGITHUB_ACTION_REPOSITORY\n''\nGITHUB_ACTOR\n'swaparup36'\nGITHUB_ACTOR_ID\n'82692857'\nGITHUB_API_URL\n'********************'\nGITHUB_BASE_REF\n'main'\nGITHUB_ENV\n'/home/runner/work/_temp/_runner_file_commands/set_env_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_EVENT_NAME\n'pull_request_target'\nGITHUB_EVENT_PATH\n'/home/runner/work/_temp/_github_workflow/event.json'\nGITHUB_GRAPHQL_URL\n'https://api.github.com/graphql'\nGITHUB_HEAD_REF\n'error-msg-login-email-verification-ui'\nGITHUB_JOB\n'test'\nGITHUB_OUTPUT\n'/home/runner/work/_temp/_runner_file_commands/set_output_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_PATH\n'/home/runner/work/_temp/_runner_file_commands/add_path_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_REF\n'refs/heads/main'\nGITHUB_REF_NAME\n'main'\nGITHUB_REF_PROTECTED\n'true'\nGITHUB_REF_TYPE\n'branch'\nGITHUB_REPOSITORY\n'OWASP-BLT/BLT'\nGITHUB_REPOSITORY_ID\n'62963654'\nGITHUB_REPOSITORY_OWNER\n'OWASP-BLT'\nGITHUB_REPOSITORY_OWNER_ID\n'160347863'\nGITHUB_RETENTION_DAYS\n'90'\nGITHUB_RUN_ATTEMPT\n'1'\nGITHUB_RUN_ID\n'19865333825'\nGITHUB_RUN_NUMBER\n'14504'\nGITHUB_SERVER_URL\n'https://github.com'\nGITHUB_SHA\n'a613bf46630a482e29bc72b282a54840d512b992'\nGITHUB_STATE\n'/home/runner/work/_temp/_runner_file_commands/save_state_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_STEP_SUMMARY\n'/home/runner/work/_temp/_runner_file_commands/step_summary_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_TRIGGERING_ACTOR\n'swaparup36'\nGITHUB_WORKFLOW\n'CI/CD Optimized'\nGITHUB_WORKFLOW_REF\n'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main'\nGITHUB_WORKFLOW_SHA\n'a613bf46630a482e29bc72b282a54840d512b992'\nGITHUB_WORKSPACE\n'/home/runner/work/BLT/BLT'\nGOROOT_1_22_X64\n'/opt/hostedtoolcache/go/1.22.12/x64'\nGOROOT_1_23_X64\n'/opt/hostedtoolcache/go/1.23.12/x64'\nGOROOT_1_24_X64\n'/opt/hostedtoolcache/go/1.24.10/x64'\nGOROOT_1_25_X64\n'/opt/hostedtoolcache/go/1.25.4/x64'\nGRADLE_HOME\n'/usr/share/gradle-9.2.0'\nHOME\n'/home/runner'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n'3650'\nHOMEBREW_NO_AUTO_UPDATE\n'1'\nHTTP_ACCEPT\n'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'\nHTTP_ACCEPT_ENCODING\n'gzip, deflate, br, zstd'\nHTTP_ACCEPT_LANGUAGE\n'en-US,en;q=0.9'\nHTTP_CONNECTION\n'keep-alive'\nHTTP_COOKIE\n'********************'\nHTTP_HOST\n'localhost:39287'\nHTTP_SEC_CH_UA\n'\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"'\nHTTP_SEC_CH_UA_MOBILE\n'?0'\nHTTP_SEC_CH_UA_PLATFORM\n'\"Linux\"'\nHTTP_SEC_FETCH_DEST\n'document'\nHTTP_SEC_FETCH_MODE\n'navigate'\nHTTP_SEC_FETCH_SITE\n'none'\nHTTP_SEC_FETCH_USER\n'?1'\nHTTP_UPGRADE_INSECURE_REQUESTS\n'1'\nHTTP_USER_AGENT\n('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '\n 'HeadlessChrome/142.0.0.0 Safari/537.36')\nINVOCATION_ID\n'dbe2edc611bd4241bf1a646ffc6a27ea'\nImageOS\n'ubuntu24'\nImageVersion\n'20251112.124.1'\nJAVA_HOME\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_11_X64\n'/usr/lib/jvm/temurin-11-jdk-amd64'\nJAVA_HOME_17_X64\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_21_X64\n'/usr/lib/jvm/temurin-21-jdk-amd64'\nJAVA_HOME_25_X64\n'/usr/lib/jvm/temurin-25-jdk-amd64'\nJAVA_HOME_8_X64\n'/usr/lib/jvm/temurin-8-jdk-amd64'\nJOURNAL_STREAM\n'9:11042'\nLANG\n'C.UTF-8'\nLD_LIBRARY_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib'\nLOGNAME\n'runner'\nMEMORY_PRESSURE_WATCH\n'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure'\nMEMORY_PRESSURE_WRITE\n'c29tZSAyMDAwMDAgMjAwMDAwMAA='\nNVM_DIR\n'/home/runner/.nvm'\nPATH\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'\nPATH_INFO\n'/all_activity/'\nPIPX_BIN_DIR\n'/opt/pipx_bin'\nPIPX_HOME\n'/opt/pipx'\nPKG_CONFIG_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig'\nPOETRY_CACHE_DIR\n'~/.cache/pypoetry'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n'GitHub-Actions-ubuntu24'\nPWD\n'/home/runner/work/BLT/BLT'\nPython2_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython3_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nQUERY_STRING\n''\nREMOTE_ADDR\n'127.0.0.1'\nREMOTE_HOST\n''\nREQUEST_METHOD\n'GET'\nRUNNER_ARCH\n'X64'\nRUNNER_DEBUG\n'1'\nRUNNER_ENVIRONMENT\n'github-hosted'\nRUNNER_NAME\n'GitHub Actions 1000589129'\nRUNNER_OS\n'Linux'\nRUNNER_TEMP\n'/home/runner/work/_temp'\nRUNNER_TOOL_CACHE\n'/opt/hostedtoolcache'\nRUNNER_TRACKING_ID\n'github_94d400a1-be76-4e4d-953a-d6a9298123d9'\nRUNNER_WORKSPACE\n'/home/runner/work/BLT'\nSCRIPT_NAME\n''\nSELENIUM_JAR_PATH\n'/usr/share/java/selenium-server.jar'\nSERVER_NAME\n'localhost'\nSERVER_PORT\n'39287'\nSERVER_PROTOCOL\n'HTTP/1.1'\nSERVER_SOFTWARE\n'WSGIServer/0.2'\nSGX_AESM_ADDR\n'1'\nSHELL\n'/bin/bash'\nSHLVL\n'1'\nSWIFT_PATH\n'/usr/share/swift/usr/bin'\nSYSTEMD_EXEC_PID\n'1916'\nTZ\n'UTC'\nUSER\n'runner'\nVCPKG_INSTALLATION_ROOT\n'/usr/local/share/vcpkg'\nVIRTUAL_ENV\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11'\nXAUTHORITY\n'/tmp/xvfb-run.asEfFs/Xauthority'\nXDG_CONFIG_HOME\n'/home/runner/.config'\nXDG_RUNTIME_DIR\n'/run/user/1001'\n_\n'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry'\npythonLocation\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nwsgi.errors\n\u003C_io.TextIOWrapper name='\u003Cstderr>' mode='w' encoding='utf-8'>\nwsgi.file_wrapper\n\u003Cclass 'wsgiref.util.FileWrapper'>\nwsgi.input\n\u003Cdjango.core.handlers.wsgi.LimitedStream object at 0x7fde6ea96a10>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n'http'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{'auth.user': \u003Cfunction \u003Clambda> at 0x7fde87ce1620>}\nACCESS_TOKEN\n'********************'\nACCESS_TOKEN_SECRET\n'********************'\nACCOUNT_ADAPTER\n'allauth.account.adapter.DefaultAccountAdapter'\nACCOUNT_AUTHENTICATION_METHOD\n'email'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n'mandatory'\nACCOUNT_FORMS\n{'signup': 'website.forms.SignupFormWithCaptcha'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nADMINS\n(('Admin', '[email protected]'),)\nADMIN_URL\n'admin'\nALLOWED_HOSTS\n['127.0.0.1', 'localhost', '0.0.0.0', '', 'testserver']\nAPPEND_SLASH\nTrue\nAPP_KEY\n'********************'\nAPP_KEY_SECRET\n'********************'\nASGI_APPLICATION\n'blt.asgi.application'\nAUTHENTICATION_BACKENDS\n('django.contrib.auth.backends.ModelBackend',\n 'allauth.account.auth_backends.AuthenticationBackend')\nAUTH_PASSWORD_VALIDATORS\n'********************'\nAUTH_USER_MODEL\n'auth.User'\nAVATAR_PATH\n'media/avatars'\nBASE_DIR\n'/home/runner/work/BLT/BLT'\nBEARER_TOKEN\n'********************'\nBITCOIN_RPC_HOST\n'localhost'\nBITCOIN_RPC_PASSWORD\n'********************'\nBITCOIN_RPC_PORT\n'8332'\nBITCOIN_RPC_USER\n'yourusername'\nBLOG_URL\n'blt.owasp.org/blog/'\nBLUESKY_PASSWORD\n'********************'\nBLUESKY_USERNAME\n'default_username'\nCACHES\n{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n 'LOCATION': 'unique-snowflake'}}\nCACHE_MIDDLEWARE_ALIAS\n'default'\nCACHE_MIDDLEWARE_KEY_PREFIX\n'********************'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer',\n 'CONFIG': {'hosts': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n'csrftoken'\nCSRF_COOKIE_PATH\n'/'\nCSRF_COOKIE_SAMESITE\n'Lax'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n'django.views.csrf.csrf_failure'\nCSRF_HEADER_NAME\n'HTTP_X_CSRFTOKEN'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{'default': {'ATOMIC_REQUESTS': False,\n 'AUTOCOMMIT': True,\n 'CONN_HEALTH_CHECKS': False,\n 'CONN_MAX_AGE': 0,\n 'ENGINE': 'django.db.backends.sqlite3',\n 'HOST': '',\n 'NAME': 'file:memorydb_default?mode=memory&cache=shared',\n 'OPTIONS': {},\n 'PASSWORD': '********************',\n 'PORT': '',\n 'TEST': {'CHARSET': None,\n 'COLLATION': None,\n 'MIGRATE': True,\n 'MIRROR': None,\n 'NAME': None},\n 'TIME_ZONE': None,\n 'USER': ''}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n'N j, Y, P'\nDATETIME_INPUT_FORMATS\n['%Y-%m-%d %H:%M:%S',\n '%Y-%m-%d %H:%M:%S.%f',\n '%Y-%m-%d %H:%M',\n '%m/%d/%Y %H:%M:%S',\n '%m/%d/%Y %H:%M:%S.%f',\n '%m/%d/%Y %H:%M',\n '%m/%d/%y %H:%M:%S',\n '%m/%d/%y %H:%M:%S.%f',\n '%m/%d/%y %H:%M']\nDATE_FORMAT\n'N j, Y'\nDATE_INPUT_FORMATS\n['%Y-%m-%d',\n '%m/%d/%Y',\n '%m/%d/%y',\n '%b %d %Y',\n '%b %d, %Y',\n '%d %b %Y',\n '%d %b, %Y',\n '%B %d %Y',\n '%B %d, %Y',\n '%d %B %Y',\n '%d %B, %Y']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n'.'\nDEFAULT_AUTO_FIELD\n'django.db.models.AutoField'\nDEFAULT_CHARSET\n'utf-8'\nDEFAULT_EXCEPTION_REPORTER\n'django.views.debug.ExceptionReporter'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n'django.views.debug.SafeExceptionReporterFilter'\nDEFAULT_FROM_EMAIL\n'[email protected]'\nDEFAULT_INDEX_TABLESPACE\n''\nDEFAULT_TABLESPACE\n''\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n'********************'\nDOMAIN_NAME\n'blt.owasp.org'\nDOMAIN_NAME_PREVIOUS\n'BLT'\nEMAIL_BACKEND\n'django.core.mail.backends.locmem.EmailBackend'\nEMAIL_HOST\n'localhost'\nEMAIL_HOST_PASSWORD\n'********************'\nEMAIL_HOST_USER\n''\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n'********************'\nEMAIL_SUBJECT_PREFIX\n'[Django] '\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n'BLT \[email protected]>'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n'https://github.com/OWASP/BLT-Extension'\nFACEBOOK_URL\n'https://www.facebook.com/groups/owaspfoundation/'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n['django.core.files.uploadhandler.MemoryFileUploadHandler',\n 'django.core.files.uploadhandler.TemporaryFileUploadHandler']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n'django.forms.renderers.DjangoTemplates'\nFQDN\n'blt.owasp.org'\nGITHUB_TOKEN\n'********************'\nGITHUB_URL\n'https://github.com/OWASP/BLT'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n('django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'django.contrib.sites',\n 'django.contrib.humanize',\n 'website',\n 'allauth',\n 'allauth.account',\n 'allauth.socialaccount',\n 'allauth.socialaccount.providers.github',\n 'allauth.socialaccount.providers.facebook',\n 'allauth.socialaccount.providers.google',\n 'django_gravatar',\n 'email_obfuscator',\n 'import_export',\n 'comments',\n 'annoying',\n 'rest_framework',\n 'django_filters',\n 'rest_framework.authtoken',\n 'mdeditor',\n 'tz_detect',\n 'star_ratings',\n 'drf_yasg',\n 'captcha',\n 'dj_rest_auth',\n 'dj_rest_auth.registration',\n 'storages',\n 'channels')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n(('en', 'English'),\n ('fr', 'French'),\n ('zh-cn', 'Chinese'),\n ('de', 'German'),\n ('ja', 'Japanese'),\n ('ru', 'Russian'),\n ('hi', 'Hindi'))\nLANGUAGES_BIDI\n['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']\nLANGUAGE_CODE\n'en-us'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n'django_language'\nLANGUAGE_COOKIE_PATH\n'/'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n('/home/runner/work/BLT/BLT/locale',)\nLOGGING\n{'disable_existing_loggers': False,\n 'formatters': {'simple': {'format': '%(levelname)s %(message)s'},\n 'verbose': {'format': '%(levelname)s %(asctime)s %(module)s '\n '%(process)d %(thread)d %(message)s'}},\n 'handlers': {'console': {'class': 'logging.StreamHandler',\n 'formatter': 'simple',\n 'level': 'DEBUG',\n 'stream': 'ext://sys.stdout'},\n 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',\n 'level': 'ERROR'}},\n 'loggers': {'django': {'handlers': ['console', 'mail_admins'],\n 'level': 'INFO',\n 'propagate': True},\n 'django.server': {'handlers': ['console'],\n 'level': 'INFO',\n 'propagate': True},\n 'website': {'handlers': ['console'],\n 'level': 'DEBUG',\n 'propagate': True}},\n 'root': {'handlers': ['console'], 'level': 'DEBUG'},\n 'version': 1}\nLOGGING_CONFIG\n'logging.config.dictConfig'\nLOGIN_REDIRECT_URL\n'/'\nLOGIN_URL\n'/accounts/login/'\nLOGOUT_REDIRECT_URL\n'/'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{'default': {'language': 'en',\n 'toolbar': ['undo',\n 'redo',\n '|',\n 'bold',\n 'del',\n 'italic',\n 'quote',\n 'ucwords',\n 'uppercase',\n 'lowercase',\n '|',\n 'h1',\n 'h2',\n 'h3',\n 'h5',\n 'h6',\n '|',\n 'list-ul',\n 'list-ol',\n 'hr',\n '|',\n 'link',\n 'reference-link',\n 'code',\n 'code-block',\n 'table',\n 'datetime',\n '||',\n 'preview',\n 'fullscreen'],\n 'watch': False}}\nMEDIA_ROOT\n'media'\nMEDIA_URL\n'/media/'\nMESSAGE_STORAGE\n'django.contrib.messages.storage.fallback.FallbackStorage'\nMIDDLEWARE\n['django.contrib.sessions.middleware.SessionMiddleware',\n 'blt.middleware.domain.DomainMiddleware',\n 'django.middleware.locale.LocaleMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'allauth.account.middleware.AccountMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n 'django.middleware.security.SecurityMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware',\n 'blt.middleware.throttling.ThrottlingMiddleware',\n 'tz_detect.middleware.TimezoneMiddleware',\n 'blt.middleware.ip_restrict.IPRestrictMiddleware',\n 'blt.middleware.user_visit_tracking.VisitTrackingMiddleware']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n'F j'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n'********************'\nORD_SERVER_URL\n'http://localhost:9001'\nPASSWORD_HASHERS\n'********************'\nPASSWORD_RESET_TIMEOUT\n'********************'\nPORT\n'8000'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n'blt.owasp.org'\nPROJECT_NAME\n'BLT'\nPROJECT_NAME_LOWER\n'blt'\nPROJECT_NAME_UPPER\n'BLT'\nPROJECT_ROOT\n'/home/runner/work/BLT/BLT/blt'\nREPORT_EMAIL\n'blank'\nREPORT_EMAIL_PASSWORD\n'********************'\nREST_AUTH\n{'SESSION_LOGIN': False}\nREST_FRAMEWORK\n{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',),\n 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),\n 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',\n 'DEFAULT_THROTTLE_RATES': {'anon': '100000/day', 'user': '100000/day'},\n 'PAGE_SIZE': 10}\nROOT_URLCONF\n'blt.urls'\nSCOUT_KEY\n'********************'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n'BLT'\nSECRET_KEY\n'********************'\nSECRET_KEY_FALLBACKS\n'********************'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n'same-origin'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n('HTTP_X_FORWARDED_PROTO', 'https')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n'same-origin'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n'[email protected]'\nSESSION_CACHE_ALIAS\n'default'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n'sessionid'\nSESSION_COOKIE_PATH\n'/'\nSESSION_COOKIE_SAMESITE\n'Lax'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n'django.contrib.sessions.backends.db'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n'django.contrib.sessions.serializers.JSONSerializer'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n'm/d/Y P'\nSHORT_DATE_FORMAT\n'm/d/Y'\nSIGNING_BACKEND\n'django.core.signing.TimestampSigner'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n'allauth.socialaccount.adapter.DefaultSocialAccountAdapter'\nSOCIALACCOUNT_PROVIDERS\n{'facebook': {'EXCHANGE_TOKEN': '********************',\n 'FIELDS': ['id',\n 'email',\n 'name',\n 'first_name',\n 'last_name',\n 'verified',\n 'locale',\n 'timezone',\n 'link'],\n 'LOCALE_FUNC': \u003Cfunction \u003Clambda> at 0x7fde860f3380>,\n 'METHOD': 'oauth2',\n 'SCOPE': ['email'],\n 'VERIFIED_EMAIL': False,\n 'VERSION': 'v7.0'},\n 'github': {'AUTH_PARAMS': {'access_type': 'online'},\n 'SCOPE': ['user', 'repo']},\n 'google': {'AUTH_PARAMS': {'access_type': 'online'},\n 'SCOPE': ['profile', 'email']}}\nSOCIALACCOUNT_STORE_TOKENS\n'********************'\nSOCIAL_AUTH_GITHUB_KEY\n'********************'\nSOCIAL_AUTH_GITHUB_SECRET\n'********************'\nSTAGING_DOMAIN\n'blt-staging.herokuapp.com'\nSTAR_RATINGS_RATING_MODEL\n'star_ratings.Rating'\nSTATICFILES_DIRS\n('/home/runner/work/BLT/BLT/website/static',)\nSTATICFILES_FINDERS\n['django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder']\nSTATIC_ROOT\n'/home/runner/work/BLT/BLT/blt/staticfiles'\nSTATIC_URL\n'/static/'\nSTORAGES\n{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},\n 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'}}\nSUPERUSERS\n(('admin123', '[email protected]', 'admin@123'),)\nSUPERUSER_EMAIL\n'[email protected]'\nSUPERUSER_PASSWORD\n'********************'\nSUPERUSER_USERNAME\n'admin123'\nTEMPLATES\n[{'APP_DIRS': False,\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': ['/home/runner/work/BLT/BLT/website/templates'],\n 'OPTIONS': {'context_processors': ['django.template.context_processors.debug',\n 'django.template.context_processors.request',\n 'django.template.context_processors.media',\n 'django.contrib.auth.context_processors.auth',\n 'django.contrib.messages.context_processors.messages',\n 'django.template.context_processors.i18n'],\n 'debug': False,\n 'loaders': [('django.template.loaders.cached.Loader',\n ['django.template.loaders.filesystem.Loader',\n 'django.template.loaders.app_directories.Loader'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n'django.test.runner.DiscoverRunner'\nTHOUSAND_SEPARATOR\n','\nTHROTTLE_EXEMPT_PATHS\n['/admin/', '/static/', '/media/']\nTHROTTLE_LIMITS\n{'GET': 100, 'OTHER': 30, 'POST': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n'P'\nTIME_INPUT_FORMATS\n['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']\nTIME_ZONE\n'UTC'\nTWITTER_URL\n'https://twitter.com/owasp_blt'\nUSERS_AVATAR_PATH\n'avatars'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n'********************'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n'SAMEORIGIN'\nYEAR_MONTH_FORMAT\n'F Y'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code."} | headers=HTTPHeaderDict({'Content-Length': '27804', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
FAIL
test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url) ... ERROR
DEBUG DELETE http://localhost:56473/session/7bf3f93db991d91aa975a1a1e677f303 {}
DEBUG http://localhost:56473 "DELETE /session/7bf3f93db991d91aa975a1a1e677f303 HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
======================================================================
ERROR: test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
self._post_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
self._fixture_teardown()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
call_command(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
sql_list = sql_flush(
^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
tables = connection.introspection.django_table_names(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
existing_tables = set(self.table_names(include_views=include_views))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
return get_names(cursor)
^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
for ti in self.get_table_list(cursor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
cursor.execute(
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
self.db.validate_no_broken_transaction()
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
======================================================================
FAIL: test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 226, in test_post_bug_domain_url
self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:39287/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Tue, 02 Dec 2025 16:16:16 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n response = get_response(request)\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 171, in __call__\n return self.process_request_sync(request)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 223, in process_request_sync\n blocked_agents = self.blocked_agents()\n ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 64, in blocked_agents\n blocked_user_agents = [agent for agent in blocked_user_agents if agent is not None]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 400, in __iter__\n self._fetch_all()\n ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 287, in __iter__\n for row in compiler.results_iter(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1525, in results_iter\n results = self.execute_sql(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n cursor.execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n return super().execute(sql, params)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n return self._execute_with_wrappers(\n \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n return executor(sql, params, many, context)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n self.db.validate_no_broken_transaction()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n raise TransactionManagementError(\n ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\nAnonymousUser\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.831322588.1764692170\'\n_gid\n\'GA1.1.1371189930.1764692170\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764692170$o1$g1$t1764692175$j55$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'YEfa3ahT76UdYfyo9F35ixqTWfyJ90K6\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'true\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19865333825\'\nGITHUB_RUN_NUMBER\n\'14504\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'a613bf46630a482e29bc72b282a54840d512b992\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'a613bf46630a482e29bc72b282a54840d512b992\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:39287\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'dbe2edc611bd4241bf1a646ffc6a27ea\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:11042\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000589129\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_94d400a1-be76-4e4d-953a-d6a9298123d9\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'39287\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1916\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.asEfFs/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7fde6ea96a10>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7fde87ce1620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n \'AUTOCOMMIT\': True,\n \'CONN_HEALTH_CHECKS\': False,\n \'CONN_MAX_AGE\': 0,\n \'ENGINE\': \'django.db.backends.sqlite3\',\n \'HOST\': \'\',\n \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n \'OPTIONS\': {},\n \'PASSWORD\': \'********************\',\n \'PORT\': \'\',\n \'TEST\': {\'CHARSET\': None,\n \'COLLATION\': None,\n \'MIGRATE\': True,\n \'MIRROR\': None,\n \'NAME\': None},\n \'TIME_ZONE\': None,\n \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n \'formatter\': \'simple\',\n \'level\': \'DEBUG\',\n \'stream\': \'ext://sys.stdout\'},\n \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'django.server\': {\'handlers\': [\'console\'],\n \'level\': \'INFO\',\n \'propagate\': True},\n \'website\': {\'handlers\': [\'console\'],\n \'level\': \'DEBUG\',\n \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n \'toolbar\': [\'undo\',\n \'redo\',\n \'|\',\n \'bold\',\n \'del\',\n \'italic\',\n \'quote\',\n \'ucwords\',\n \'uppercase\',\n \'lowercase\',\n \'|\',\n \'h1\',\n \'h2\',\n \'h3\',\n \'h5\',\n \'h6\',\n \'|\',\n \'list-ul\',\n \'list-ol\',\n \'hr\',\n \'|\',\n \'link\',\n \'reference-link\',\n \'code\',\n \'code-block\',\n \'table\',\n \'datetime\',\n \'||\',\n \'preview\',\n \'fullscreen\'],\n \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n \'FIELDS\': [\'id\',\n \'email\',\n \'name\',\n \'first_name\',\n \'last_name\',\n \'verified\',\n \'locale\',\n \'timezone\',\n \'link\'],\n \'LOCALE_FUNC\': <function <lambda> at 0x7fde860f3380>,\n \'METHOD\': \'oauth2\',\n \'SCOPE\': [\'email\'],\n \'VERIFIED_EMAIL\': False,\n \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n \'django.template.context_processors.request\',\n \'django.template.context_processors.media\',\n \'django.contrib.auth.context_processors.auth\',\n \'django.contrib.messages.context_processors.messages\',\n \'django.template.context_processors.i18n\'],\n \'debug\': False,\n \'loaders\': [(\'django.template.loaders.cached.Loader\',\n [\'django.template.loaders.filesystem.Loader\',\n \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'
----------------------------------------------------------------------
Ran 225 tests in 134.170s
FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
For more information, see the Django testing documentation.