models.py
2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import re
from django.db import models
from django.core import validators
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import AbstractBaseUser, UserManager, PermissionsMixin
from django.contrib.staticfiles.templatetags.staticfiles import static
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(_('Login'), max_length = 35, unique = True, validators = [
validators.RegexValidator(
re.compile('^[\w.@+-]+$'),
_('Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .')
, 'invalid'
)
], help_text = _('A short name that will be used to identify you in the platform and to access it'))
email = models.EmailField(_('Mail'), unique = True)
name = models.CharField(_('Name'), max_length = 100)
city = models.CharField(_('City'), max_length = 90, blank = True)
state = models.CharField(_('State'), max_length = 30, blank = True)
gender = models.CharField(_('Gender'), max_length = 1, choices = (('M', _('Male')), ('F', _('Female'))))
image = models.ImageField(verbose_name = _('Photo'), null=True, blank = True, upload_to = 'users/')
birth_date = models.DateField(_('Birth Date'), null=True)
phone = models.CharField(_('Phone'), max_length = 30, blank = True)
cpf = models.CharField(_('CPF'), max_length = 15, blank=True, null=True)
type_profile = models.IntegerField(_('Type'), null = True, blank = True, choices = ((1, _('Professor')), (2, _('Student'))), default=2)
titration = models.CharField(_('Titration'), max_length = 50, blank = True, null = True)
year_titration = models.CharField(_('Year of titration'), max_length = 4, blank = True, null = True)
institution = models.CharField(_('Institution'), max_length = 50, blank=True, null=True)
curriculum = models.FileField(verbose_name = _('Curriculum'), upload_to='users/curriculum/', null=True, blank=True)
date_created = models.DateTimeField(_('Create Date'), auto_now_add = True)
is_staff = models.BooleanField(_('Administrator'), default = False)
is_active = models.BooleanField(_('Active'), default = True)
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email', 'cpf']
objects = UserManager()
class Meta:
verbose_name = _('User')
verbose_name_plural = _('Users')
def __str__(self):
return self.name or self.username
def get_full_name(self):
return str(self)
def get_short_name(self):
return str(self).split(" ")[0]
@property
def image_url(self):
if self.image and hasattr(self.image, 'url'):
return self.image.url
else:
return static('img/no_image.jpg')