from allauth.account.adapter import DefaultAccountAdapter from allauth.account.utils import user_email, user_field, user_username class AccountAdapter(DefaultAccountAdapter): def save_user(self, request, user, form, commit=True): data = form.cleaned_data first_name = data.get("first_name") last_name = data.get("last_name") email = data.get("email") username = data.get("email") user_email(user, email) user_username(user, username) if first_name: user_field(user, "first_name", first_name) if last_name: user_field(user, "last_name", last_name) if "password1" in data: user.set_password(data["password1"]) else: user.set_unusable_password() self.populate_username(request, user) if commit: # Ability not to commit makes it easier to derive from # this adapter by adding user.save() return user