Completed
Push — master ( 495df6...d5a5d9 )
by
unknown
52s
created

UserManager.create_superuser()   A

Complexity

Conditions 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 9
rs 9.6667
1
from django.db import models
2
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
3
4
5
class UserManager(BaseUserManager):
6
    def create_user(self, email, lastname, firstname, password=None):
7
        """
8
        Creates and saves a User with the given email, lastname, firstname and password
9
        TODO - Generate a unique username.
10
        """
11
        if not email:
12
            raise ValueError('Users must have an email address')
13
14
        # username = email # TODO - Generate unique username
15
16
        user = self.model(
17
            email=self.normalize_email(email),
18
            lastname=lastname,
19
            firstname=firstname
20
        )
21
22
        user.set_password(password)
23
        user.save()
24
        return user
25
26
    def create_superuser(self, email, lastname, firstname, password):
27
        """
28
        Creates and saves a superuser with the given email, lastname, firstname and password.
29
        """
30
        user = self.create_user(email, lastname, firstname, password)
31
        user.is_superuser = True
32
        user.is_staff = True
33
        user.save()
34
        return user
35
36
37
class User(AbstractBaseUser):
38
    """
39
    User are identified by their email. Lastname and firstname are required.
40
    """
41
    email = models.EmailField(max_length=254, unique=True)
42
    lastname = models.CharField(max_length=255)
43
    firstname = models.CharField(max_length=128)
44
    # username = models.CharField(max_length=128, unique=True) # TODO - Add unique username for frontend URLs
45
46
    is_active = models.BooleanField(default=True)
47
    last_modified = models.DateTimeField(auto_now=True)
48
    join_date = models.DateTimeField(auto_now_add=True)
49
50
    is_superuser = models.BooleanField(default=False)
51
    is_staff = models.BooleanField(default=False)
52
53
    objects = UserManager()
54
55
    USERNAME_FIELD = 'email'
56
    REQUIRED_FIELDS = ['lastname', 'firstname']
57
58
    def __str__(self):
59
        return self.email
60
61
    def get_full_name(self):
62
        return "{} {}".format(self.lastname, self.firstname)
63
64
    def get_short_name(self):
65
        return self.email
66
67
    def has_perm(self, perm, obj=None):
68
        """
69
        TODO - Implement permissions
70
        """
71
        return True
72
73
    def has_module_perms(self, app_label):
74
        """
75
        TODO - Implement permissions
76
        """
77
        return True
78