profiles_api.models   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
eloc 39
dl 0
loc 76
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A UserProfile.__str__() 0 4 1
A UserProfileManager.create_superuser() 0 11 1
A ProfileFeedItem.__str__() 0 4 1
A UserProfile.get_short_name() 0 4 1
A UserProfileManager.create_user() 0 13 2
A UserProfile.get_full_name() 0 4 1
1
from django.contrib.auth.models import (
2
    AbstractBaseUser, BaseUserManager, PermissionsMixin)
3
from django.db import models
4
5
6
class UserProfileManager(BaseUserManager):
7
    """Helps django to work with users."""
8
9
    def create_user(self, email, name, password=None):
10
        """Creating user."""
11
12
        if not email:
13
            raise ValueError('An email required.')
14
15
        email = self.normalize_email(email)
16
        user = self.model(email=email, name=name)
17
18
        user.set_password(password)
19
        user.save(using=self._db)
20
21
        return user
22
23
    def create_superuser(self, email, name, password):
24
        """Creating superuser."""
25
26
        user = self.create_user(email, name, password)
27
28
        user.is_superuser = True
29
        user.is_staff = True
30
31
        user.save(using=self._db)
32
33
        return user
34
35
36
class UserProfile(AbstractBaseUser, PermissionsMixin):
37
    """This models is showing our user profiles."""
38
39
    email = models.EmailField(max_length=255, unique=True)
40
    name = models.CharField(max_length=255)
41
    is_active = models.BooleanField(default=True)
42
    is_staff = models.BooleanField(default=False)
43
44
    objects = UserProfileManager()
45
46
    USERNAME_FIELD = 'email' 
47
    REQUIRED_FIELDS = ['name']
48
49
    def get_full_name(self):
50
        """Used to get a user full name."""
51
52
        return self.name
53
54
    def get_short_name(self):
55
        """Used to get a user short name."""
56
57
        return self.name
58
59
    def __str__(self):
60
        """Representation of the objects in string form."""
61
62
        return self.email
63
64
65
class ProfileFeedItem(models.Model):
66
    """Profile status update."""
67
68
    user_profile = models.ForeignKey('UserProfile', on_delete=models.CASCADE)
69
    status_text = models.CharField(max_length=255)
70
    created_on = models.DateTimeField(auto_now_add=True)
71
72
    def __str__(self):
73
        """Represent of ProfileFeedItem objects."""
74
75
        return self.status_text
76