AssertionError in django-allauth settings.py during Django application startup

113 Views Asked by At

I'm encountering an AssertionError in my Django application when trying to start the development server. The error occurs in the django-allauth package, specifically in the settings.py file. I've already tried reinstalling django-allauth, checking dependencies, and reviewing my configuration without success.

The error occurs with the following change to the configuration options ACCOUNT_EMAIL_VERIFICATION = 'mandatory' instead of 'none'

Here is the traceback:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\core\management\commands\runserver.py", line 125, in inner_run
    autoreload.raise_last_exception()
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\utils\autoreload.py", line 87, in raise_last_exception
    raise _exception[1]
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\core\management\__init__.py", line 398, in execute
    autoreload.check_errors(django.setup)()
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\apps\registry.py", line 116, in populate
    app_config.import_models()
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\apps\config.py", line 269, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_m
odule
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\allauth\account\models.py", line 9, in <module>
    from . import app_settings, signals
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\allauth\account\app_settings.py", line 373, in <modu
le>
    app_settings = AppSettings("ACCOUNT_")
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\allauth\account\app_settings.py", line 27, in __init
__
    assert (
AssertionError

My Question: How do I fix this error? It shows only when ACCOUNT_EMAIL_VERIFICATION is set to mandatory. If it is none the project runs smoothly.

2

There are 2 best solutions below

0
Amirali Sheibani On

The error you're encountering is an AssertionError in the django-allauth package when you set ACCOUNT_EMAIL_VERIFICATION to 'mandatory'. This error occurs because the django-allauth package expects certain settings to be configured correctly.

To resolve this issue, you can follow these steps:

  1. Ensure you have installed the latest version of django-allauth. You can use the following command to upgrade to the latest version:

    pip install --upgrade django-allauth
    
  2. Verify that you have included 'allauth' and 'allauth.account' in the INSTALLED_APPS list in your project's settings.py file:

    INSTALLED_APPS = [
        # other apps...
        'allauth',
        'allauth.account',
        # other apps...
    ]
    
  3. Double-check your project's urls.py file to ensure that you have included the necessary URLs for django-allauth:

    urlpatterns = [
        # other URL patterns...
        path('accounts/', include('allauth.urls')),
        # other URL patterns...
    ]
    
  4. If you have a custom user model, make sure it is correctly configured in your project's settings.py file. You can specify your custom user model using the AUTH_USER_MODEL setting:

    AUTH_USER_MODEL = 'yourapp.YourCustomUserModel'
    
  5. Review the other settings related to email verification in your settings.py file. Ensure that you have properly configured settings like EMAIL_BACKEND, ACCOUNT_EMAIL_REQUIRED, and ACCOUNT_EMAIL_VERIFICATION.

    Here's an example configuration for email verification:

    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    ACCOUNT_EMAIL_REQUIRED = True
    ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
    

    Make sure you have a valid email backend configured that matches your email service provider.

  6. If the issue persists, try removing any compiled Python files (.pyc or pycache) from your project directory to eliminate any potential caching issues.

I hop it's work

0
Soenderby On

It appears you are getting an assertion error, caused by the fact that some settings have requirements for other settings which are not fulfilled.

ACCOUNT_EMAIL_VERIFICATION = 'mandatory' also requires ACCOUNT_EMAIL_REQUIRED = True.

You can see the documentation for the configuration options and their requirements.

Looking at your error and the source code for django-allauth it seems to be the following requirement that is not fulfilled:

# If login is by email, email must be required
        assert (
            not self.AUTHENTICATION_METHOD == self.AuthenticationMethod.EMAIL
        ) or self.EMAIL_REQUIRED

This further points to the problem being ACCOUNT_EMAIL_REQUIRED not being set to True.
You can see this post for an example of a valid configuration for email verification.