Skip to content

Instantly share code, notes, and snippets.

@Ingco
Created March 26, 2020 07:23
Show Gist options
  • Save Ingco/7d5329f2156375465938364153c03a4e to your computer and use it in GitHub Desktop.
Save Ingco/7d5329f2156375465938364153c03a4e to your computer and use it in GitHub Desktop.
# forms.py
class UserForm(forms.ModelForm):
"""A form for users. Includes password field."""
password = forms.CharField(
label="Password", widget=forms.PasswordInput(), required=False
)
email = MultiEmailField(
widget=MultiEmailWidget(), required=False, help_text=help_text_for_email
)
...
# models.py
class UserManager(BaseUserManager):
def _create_user(self, username, email=None, password=None, **extra_fields):
"""Create and save a User with the given email and password."""
if not username:
raise ValueError("The username must be set")
if not password:
raise ValueError("The password must be set")
if email:
email = self.normalize_email(email)
user = self.model(email=email, username=username, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, username, email, password, **extra_fields):
"""Create and save a SuperUser with the given email and password."""
extra_fields.setdefault("is_staff", True)
extra_fields.setdefault("is_superuser", True)
extra_fields.setdefault("role", Role.objects.get(pk=1))
extra_fields.setdefault("company", Company.objects.get(pk=1))
extra_fields.setdefault("first_name", "Administrator")
extra_fields.setdefault("classification", "1")
if extra_fields.get("is_staff") is not True:
raise ValueError("Superuser must have is_staff=True.")
if extra_fields.get("is_superuser") is not True:
raise ValueError("Superuser must have is_superuser=True.")
super_user = self._create_user(username, email, password, **extra_fields)
super_user.created_by = super_user
super_user.save(using=self._db)
return super_user
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment