Created
March 26, 2020 07:23
-
-
Save Ingco/7d5329f2156375465938364153c03a4e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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