django-allauth icon indicating copy to clipboard operation
django-allauth copied to clipboard

User.save called twice, once with null value

Open jbc22 opened this issue 5 years ago • 1 comments
trafficstars

Using Django-allauth for our sign ups, I have some sort of condition that is causing the user to be saved twice. Once with the correct information, once with the username field a null value. This is causing a sqlite3.IntegrityError: UNIQUE constraint failed: error.

Traceback:

Traceback (most recent call last):
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 383, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: UNIQUE constraint failed: users_customuser.username

The above exception was the direct cause of the following exception:

  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/utils/decorators.py", line 45, in _wrapper
    return bound_method(*args, **kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/views/decorators/debug.py", line 76, in sensitive_post_parameters_wrapper
    return view(request, *args, **kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/allauth/account/views.py", line 214, in dispatch
    return super(SignupView, self).dispatch(request, *args, **kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/allauth/account/views.py", line 80, in dispatch
    **kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/allauth/account/views.py", line 192, in dispatch
    **kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/views/generic/base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/allauth/account/views.py", line 103, in post
    response = self.form_valid(form)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/allauth/account/views.py", line 230, in form_valid
    self.user = form.save(self.request)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/allauth/account/forms.py", line 407, in save
    self.custom_signup(request, user)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/allauth/account/forms.py", line 360, in custom_signup
    custom_form.save(user)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/contrib/auth/forms.py", line 132, in save
    user.save()
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/contrib/auth/base_user.py", line 67, in save
    super().save(*args, **kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/models/base.py", line 742, in save
    force_update=force_update, update_fields=update_fields)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/models/base.py", line 780, in save_base
    force_update, using, update_fields,
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/models/base.py", line 871, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/models/base.py", line 909, in _do_insert
    using=using, raw=raw)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/models/query.py", line 1186, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1368, in execute_sql
    cursor.execute(sql, params)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/backends/utils.py", line 99, in execute
    return super().execute(sql, params)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/backends/utils.py", line 67, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/mnt/c/Users/brett/code/secodify-ui/secenv/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 383, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: UNIQUE constraint failed: users_customuser.username

For each point in the traceback, I put in debug print statements. Here were the values:

jbc22 avatar Feb 03 '20 17:02 jbc22

also having this issue on latest version, with Django 4.0.4

kachmul2004 avatar May 16 '22 14:05 kachmul2004

Closing -- likely there are issues in your custom adapters or custom signup forms.

pennersr avatar Aug 10 '23 08:08 pennersr