src/ldt/ldt/user/models.py
author ymh <ymh.work@gmail.com>
Mon, 20 May 2013 18:02:37 +0200
changeset 1191 b6e0b1811723
parent 854 e4be64dd42af
child 1193 cd67b17d257d
permissions -rw-r--r--
Migrate to django 1.5 : - migrate the user profile - do sme cleaning
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
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
     2
from django.contrib.auth.models import (AbstractUser, User, UserManager, Group, 
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
     3
    BaseUserManager)
169
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
     4
from django.db import models
174
43748b6b0678 Add a default profile instead of get_or_create_profile
verrierj
parents: 172
diff changeset
     5
from django.db.models.signals import post_save
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
     6
from django.utils import timezone
314
1a8620e5ebb0 Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents: 276
diff changeset
     7
from sorl.thumbnail import ImageField
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
     8
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
     9
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    10
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
    11
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    12
    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
    13
        """
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    14
        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
    15
        """
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    16
        now = timezone.now()
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    17
        if not username:
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    18
            raise ValueError('The given username must be set')
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    19
        email = UserManager.normalize_email(email)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    20
        user = self.model(username=username, email=email,
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    21
                          is_staff=False, is_active=True, is_superuser=False,
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    22
                          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
    23
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    24
        user.set_password(password)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    25
        user.save(using=self._db)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    26
        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
    27
        user.groups.add(everyone)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    28
        return user
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    29
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    30
    def create_superuser(self, username, email, password, **extra_fields):
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    31
        u = self.create_user(username, email, password, **extra_fields)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    32
        u.is_staff = True
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    33
        u.is_active = True
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    34
        u.is_superuser = True
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    35
        u.save(using=self._db)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    36
        return u
276
ee792e43b36a Replace is_regular field in userprofile by django permission
verrierj
parents: 259
diff changeset
    37
325
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    38
class GroupProfile(models.Model):
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    39
    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
    40
    description = models.TextField()
342
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    41
    image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/groups/", default=settings.DEFAULT_GROUP_ICON, max_length=200)
325
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    42
    
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    43
    @staticmethod
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    44
    def create_group_profile(sender, instance, created, **kwargs):
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    45
        if created:
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    46
            profile = GroupProfile()
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    47
            profile.group_id = instance.id
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    48
            profile.save()
452
8e9494006e7b segment abstracts + content images can be retrieved directly from search results page
verrierj
parents: 406
diff changeset
    49
            admins = User.objects.filter(is_superuser=True)
8e9494006e7b segment abstracts + content images can be retrieved directly from search results page
verrierj
parents: 406
diff changeset
    50
            if admins:
8e9494006e7b segment abstracts + content images can be retrieved directly from search results page
verrierj
parents: 406
diff changeset
    51
                instance.user_set.add(admins[0])            
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    52
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    53
class LdtUser(AbstractUser):
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    54
    language = models.CharField(max_length=2, default=settings.LANGUAGE_CODE[:2])    
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    55
    image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/users/", default=settings.DEFAULT_USER_ICON, max_length=200)
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    56
    
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    57
    objects = LdtUserManager()
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    58
342
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    59
            
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    60
# To keep consistency with User.get_profile() method
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    61
def get_profile(self):
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    62
    return self.profile
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    63
1191
b6e0b1811723 Migrate to django 1.5 :
ymh <ymh.work@gmail.com>
parents: 854
diff changeset
    64
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
    65
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
    66