src/ldt/ldt/user/models.py
author verrierj
Wed, 25 Jan 2012 17:57:01 +0100
changeset 452 8e9494006e7b
parent 406 c0c4cd87daf2
child 545 96ca8ff7d7cc
permissions -rw-r--r--
segment abstracts + content images can be retrieved directly from search results page
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
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
     2
from django.contrib import admin
228
94fdb72b7d56 Users can add their own groups
verrierj
parents: 188
diff changeset
     3
from django.contrib.auth.models import User, UserManager, Group
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
314
1a8620e5ebb0 Add memcached and sorl thumbnail pour thumbnail management. Set default pict on content, project and user.
cavaliet
parents: 276
diff changeset
     6
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
     7
import datetime
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
     8
276
ee792e43b36a Replace is_regular field in userprofile by django permission
verrierj
parents: 259
diff changeset
     9
        
155
73ce005c4727 Changed name of class user.models.ldt to user.Ldt
verrierj
parents: 130
diff changeset
    10
class Ldt(User):
129
e9f11d142db5 the code works, but is not totally clean. all the parts meant to be removed are commented.
cavaliet
parents: 111
diff changeset
    11
#    irigroups = models.ManyToManyField(IriGroup, blank=True)
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    12
    
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    13
    class Meta:
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    14
        verbose_name = 'iri user'
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    15
        verbose_name_plural = 'iri users'
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    16
    
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    17
    def __unicode__(self):
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    18
        return self.username
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    19
        
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    20
155
73ce005c4727 Changed name of class user.models.ldt to user.Ldt
verrierj
parents: 130
diff changeset
    21
class LdtManager(UserManager):
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    22
    def create_user(self, username, email, password=None):
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    23
        "Creates and saves a User with the given username, e-mail and password."
187
a59dd2aed213 change utc to utcnow
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
    24
        now = datetime.datetime.utcnow()
169
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
    25
        new_user = Ldt(None, username, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now)
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    26
        if password:
169
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
    27
            new_user.set_password(password)
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    28
        else:
169
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
    29
            new_user.set_unusable_password()
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
    30
        new_user.save()
247
f98f1a6e15f1 Add a group to contain published projects
verrierj
parents: 245
diff changeset
    31
        new_user.groups.add(Group.objects.get(name=settings.PUBLIC_GROUP_NAME))
f98f1a6e15f1 Add a group to contain published projects
verrierj
parents: 245
diff changeset
    32
        return new_user   
169
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
    33
    
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
    34
    
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
    35
class UserProfile (models.Model): 
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
    36
    user = models.OneToOneField(User)
342
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    37
    language = models.CharField(max_length=2, default=settings.LANGUAGE_CODE[:2])    
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    38
    image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/users/", default=settings.DEFAULT_USER_ICON, max_length=200)
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    39
174
43748b6b0678 Add a default profile instead of get_or_create_profile
verrierj
parents: 172
diff changeset
    40
    @staticmethod
43748b6b0678 Add a default profile instead of get_or_create_profile
verrierj
parents: 172
diff changeset
    41
    def create_user_profile(sender, instance, created, **kwargs):
43748b6b0678 Add a default profile instead of get_or_create_profile
verrierj
parents: 172
diff changeset
    42
        if created:
43748b6b0678 Add a default profile instead of get_or_create_profile
verrierj
parents: 172
diff changeset
    43
            UserProfile.objects.create(user=instance)
276
ee792e43b36a Replace is_regular field in userprofile by django permission
verrierj
parents: 259
diff changeset
    44
325
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    45
class GroupProfile(models.Model):
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    46
    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
    47
    description = models.TextField()
342
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    48
    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
    49
    
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    50
    @staticmethod
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    51
    def create_group_profile(sender, instance, created, **kwargs):
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    52
        if created:
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    53
            profile = GroupProfile()
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    54
            profile.group_id = instance.id
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    55
            profile.save()
452
8e9494006e7b segment abstracts + content images can be retrieved directly from search results page
verrierj
parents: 406
diff changeset
    56
            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
    57
            if admins:
8e9494006e7b segment abstracts + content images can be retrieved directly from search results page
verrierj
parents: 406
diff changeset
    58
                instance.user_set.add(admins[0])            
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
17d615b49a91 Extend image fields size to 200 characters + minor bugs
verrierj
parents: 330
diff changeset
    64
Group.add_to_class("get_profile", get_profile)
174
43748b6b0678 Add a default profile instead of get_or_create_profile
verrierj
parents: 172
diff changeset
    65
325
f4cb93c06b42 Images can be added to a group or a content.
verrierj
parents: 314
diff changeset
    66
post_save.connect(GroupProfile.create_group_profile, sender=Group)
174
43748b6b0678 Add a default profile instead of get_or_create_profile
verrierj
parents: 172
diff changeset
    67
post_save.connect(UserProfile.create_user_profile, sender=User)
169
64f24f8841ec Add profile to user
verrierj
parents: 155
diff changeset
    68
   
155
73ce005c4727 Changed name of class user.models.ldt to user.Ldt
verrierj
parents: 130
diff changeset
    69
User.objects = LdtManager()
111
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    70
User.objects.contribute_to_class(User, "objects")
4535dafa6007 improve releasing of resources when indexing + convert line endings to unix
ymh <ymh.work@gmail.com>
parents: 63
diff changeset
    71
155
73ce005c4727 Changed name of class user.models.ldt to user.Ldt
verrierj
parents: 130
diff changeset
    72
admin.site.register(Ldt)