src/ldt/ldt/user/models.py
author ymh <ymh.work@gmail.com>
Wed, 16 Sep 2015 22:18:24 +0200
changeset 1434 e0ba7a35e9df
parent 1431 bdefbdf222e7
permissions -rw-r--r--
ensure that created users are put in everyone group + new version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
188
74bad93d3cb7 Merge with 50dd5c3e8ab8365982cffc4f411f9f5ba7686176
ymh <ymh.work@gmail.com>
parents: 187 175
diff changeset
     1
from django.conf import settings
1369
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
     2
from django.contrib.auth import models as auth_models
1431
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
     3
from django.contrib.auth.models import (UserManager, Group,
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
     4
    BaseUserManager, Permission, AbstractBaseUser, PermissionsMixin)
1369
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
     5
from django.contrib.contenttypes.models import ContentType
1431
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
     6
from django.core import validators
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
     7
from django.core.mail import send_mail
169
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
     8
from django.db import models
1431
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
     9
from django.db.models.signals import post_migrate
174
43748b6b0678 Add a default profile instead of get_or_create_profile
verrierj
parents: 172
diff changeset
    10
from django.db.models.signals import post_save
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    11
from django.utils import timezone
1431
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    12
from django.utils.translation import ugettext_lazy as _
314
1a8620e5ebb0 Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents: 276
diff changeset
    13
from sorl.thumbnail import ImageField
1369
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    14
1431
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    15
from ldt.user import MAX_USERNAME_LENGTH, MAX_FIRST_NAME_LENGTH, MAX_LAST_NAME_LENGTH
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    16
1383
eb55bae28748 remove ref to ldtplatform in platform
ymh <ymh.work@gmail.com>
parents: 1369
diff changeset
    17
class LdtUserManager(BaseUserManager):
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    18
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    19
    def create_user(self, username, email=None, password=None, **extra_fields):
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    20
        """
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    21
        Creates and saves a User with the given username, email and password.
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    22
        """
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    23
        now = timezone.now()
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    24
        if not username:
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    25
            raise ValueError('The given username must be set')
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    26
        email = UserManager.normalize_email(email)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    27
        user = self.model(username=username, email=email,
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    28
                          is_staff=False, is_active=True, is_superuser=False,
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    29
                          last_login=now, date_joined=now, **extra_fields)
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    30
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    31
        user.set_password(password)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    32
        user.save(using=self._db)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    33
        everyone, _ = Group.objects.get_or_create(name=settings.PUBLIC_GROUP_NAME)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    34
        user.groups.add(everyone)
1434
e0ba7a35e9df ensure that created users are put in everyone group + new version
ymh <ymh.work@gmail.com>
parents: 1431
diff changeset
    35
        user.save(using=self._db)
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    36
        return user
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    37
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    38
    def create_superuser(self, username, email, password, **extra_fields):
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    39
        u = self.create_user(username, email, password, **extra_fields)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    40
        u.is_staff = True
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    41
        u.is_active = True
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    42
        u.is_superuser = True
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    43
        u.save(using=self._db)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    44
        return u
276
ee792e43b36a Replace is_regular field in userprofile by django permission
verrierj
parents: 259
diff changeset
    45
1369
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    46
# This method was added to stabilize migrations
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    47
def get_group_image_upload_to(instance, filename):
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    48
    return settings.MEDIA_ROOT+"thumbnails/groups/"
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    49
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    50
def get_group_image_default():
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    51
    return settings.DEFAULT_GROUP_ICON
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    52
325
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    53
class GroupProfile(models.Model):
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    54
    group = models.OneToOneField(Group, primary_key=False, related_name='profile')
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    55
    description = models.TextField()
1369
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    56
    image = ImageField(upload_to=get_group_image_upload_to, default=get_group_image_default, max_length=200)
325
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    57
    
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    58
    @staticmethod
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    59
    def create_group_profile(sender, instance, created, **kwargs):
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    60
        if created:
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    61
            profile = GroupProfile()
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    62
            profile.group_id = instance.id
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    63
            profile.save()
1193
cd67b17d257d - correct url in template
ymh <ymh.work@gmail.com>
parents: 1191
diff changeset
    64
            admins = LdtUser.objects.filter(is_superuser=True)
452
8e9494006e7b segment abstracts + content images can be retrieved directly from search results page
verrierj
parents: 406
diff changeset
    65
            if admins:
1193
cd67b17d257d - correct url in template
ymh <ymh.work@gmail.com>
parents: 1191
diff changeset
    66
                admin_user = admins[0] 
cd67b17d257d - correct url in template
ymh <ymh.work@gmail.com>
parents: 1191
diff changeset
    67
                admin_user.groups.add(instance)
1369
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    68
                admin_user.save()
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    69
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    70
def get_ldtuser_image_default():
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    71
    return settings.DEFAULT_USER_ICON
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    72
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    73
def get_ldtuser_language_default():
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    74
    if hasattr(settings, 'LANGUAGE_CODE'):
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    75
        return settings.LANGUAGE_CODE[:2]
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    76
    else :
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
    77
        return 'en'
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    78
1431
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    79
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    80
class LdtUser(AbstractBaseUser, PermissionsMixin):
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    81
    """
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    82
    An abstract base class implementing a fully featured User model with
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    83
    admin-compliant permissions.
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    84
    Username and password are required. Other fields are optional.
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    85
    """
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    86
    username = models.CharField(
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    87
        _('username'),
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    88
        max_length=MAX_USERNAME_LENGTH,
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    89
        unique=True,
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    90
        help_text=_('Required. %d characters or fewer. Letters, digits and @/./+/-/_ only.' % MAX_USERNAME_LENGTH),
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    91
        validators=[
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    92
            validators.RegexValidator(
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    93
                r'^[\w.@+-]+$',
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    94
                _('Enter a valid username. This value may contain only '
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    95
                  'letters, numbers ' 'and @/./+/-/_ characters.')
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    96
            ),
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    97
        ],
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    98
        error_messages={
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
    99
            'unique': _("A user with that username already exists."),
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   100
        },
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   101
    )
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   102
    first_name = models.CharField(_('first name'), max_length=MAX_FIRST_NAME_LENGTH, blank=True)
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   103
    last_name = models.CharField(_('last name'), max_length=MAX_LAST_NAME_LENGTH, blank=True)
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   104
    external_id = models.CharField(_('external id'), max_length=MAX_USERNAME_LENGTH, blank=True)
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   105
    email = models.EmailField(_('email address'), blank=True)
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   106
    is_staff = models.BooleanField(
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   107
        _('staff status'),
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   108
        default=False,
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   109
        help_text=_('Designates whether the user can log into this admin site.'),
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   110
    )
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   111
    is_active = models.BooleanField(
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   112
        _('active'),
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   113
        default=True,
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   114
        help_text=_(
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   115
            'Designates whether this user should be treated as active. '
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   116
            'Unselect this instead of deleting accounts.'
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   117
        ),
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   118
    )
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   119
    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   120
     
1369
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   121
    language = models.CharField(max_length=2, default=get_ldtuser_language_default)
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   122
    image = ImageField(upload_to="thumbnails/users/", default=get_ldtuser_image_default, max_length=200)
1431
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   123
     
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
   124
    objects = LdtUserManager()
1431
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   125
 
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   126
    USERNAME_FIELD = 'username'
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   127
    REQUIRED_FIELDS = ['email']
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   128
 
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   129
    class Meta:
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   130
        verbose_name = _('user')
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   131
        verbose_name_plural = _('users')
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   132
 
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   133
    def get_full_name(self):
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   134
        """
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   135
        Returns the first_name plus the last_name, with a space in between.
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   136
        """
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   137
        full_name = '%s %s' % (self.first_name, self.last_name)
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   138
        return full_name.strip()
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   139
 
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   140
    def get_short_name(self):
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   141
        "Returns the short name for the user."
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   142
        return self.first_name
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   143
 
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   144
    def email_user(self, subject, message, from_email=None, **kwargs):
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   145
        """
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   146
        Sends an email to this User.
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   147
        """
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   148
        send_mail(subject, message, from_email, [self.email], **kwargs)
bdefbdf222e7 internalize user model + resize fields (username, firstname, lastname) and add externalid
ymh <ymh.work@gmail.com>
parents: 1385
diff changeset
   149
     
1369
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   150
342
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
   151
def get_profile(self):
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
   152
    return self.profile
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
   153
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
   154
Group.add_to_class("get_profile", get_profile)  # @UndefinedVariable
325
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
   155
post_save.connect(GroupProfile.create_group_profile, sender=Group)
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
   156
1369
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   157
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   158
def add_group_permissions(sender, **kwargs):
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   159
    ct = ContentType.objects.get(app_label='auth', model='group')
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   160
    Permission.objects.get_or_create(codename='is_owner_group', name='Can add/delete admins to the group',content_type=ct)
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   161
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   162
post_migrate.connect(add_group_permissions, sender=auth_models)
e7cd1595f512 correct migrations + new version
ymh <ymh.work@gmail.com>
parents: 1219
diff changeset
   163