+from django.contrib.auth.models import User
+from django.contrib.auth.models import AbstractUser
+from django.contrib.auth.models import AbstractUser, BaseUserManager ## A new class is imported. ##
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+
+
+class UserManager(BaseUserManager):
+ """Define a model manager for User model with no username field."""
+
+ use_in_migrations = True
+
+ def _create_user(self, email, password, **extra_fields):
+ """Create and save a User with the given email and password."""
+ if not email:
+ raise ValueError('The given email must be set')
+ email = self.normalize_email(email)
+ user = self.model(email=email, **extra_fields)
+ user.set_password(password)
+ user.save(using=self._db)
+ return user
+
+ def create_user(self, email, password=None, **extra_fields):
+ """Create and save a regular User with the given email and password."""
+ extra_fields.setdefault('is_staff', False)
+ extra_fields.setdefault('is_superuser', False)
+ return self._create_user(email, password, **extra_fields)
+
+ def create_superuser(self, 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)
+
+ 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.')
+
+ return self._create_user(email, password, **extra_fields)
+
+
+class User(AbstractUser):
+ username = None
+ fortnox_external_id = models.IntegerField()
+ gpg_public_key = models.CharField(null=True, max_length=4096)
+ ssh_public_key = models.CharField(null=True, max_length=4096)
+ last_login = models.DateField(null=True)
+ cos_id = models.CharField(null=True, max_length=4096)
+ cos_contractid = models.CharField(null=True, max_length=4096)
+ cos_anlaggningsid = models.CharField(null=True, max_length=4096)
+ USERNAME_FIELD = 'email'
+ REQUIRED_FIELDS = ['fortnox_external_id']
+ objects = UserManager() ## This is the new line in the User model. ##
+
+class vps(models.Model):
+ user = models.ForeignKey(to=User, on_delete=models.CASCADE)
+ uuid = models.CharField(max_length=4096)
+
+class physical_server(models.Model):
+ user = models.ForeignKey(to=User, on_delete=models.CASCADE)
+ rack = models.CharField(max_length=4096)
+ unit = models.IntegerField()
+
+class IP(models.Model):
+ user = models.ForeignKey(to=User, on_delete=models.CASCADE)
+ cidr = models.CharField(max_length=4096)
+