-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathmodels.py
63 lines (52 loc) · 2.54 KB
/
models.py
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
60
61
62
63
from django.conf import settings
from django.contrib.auth.models import User, Group
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.utils.translation import ugettext as _
from django.db.models.signals import post_save
from django.dispatch import receiver
from guardian.shortcuts import assign_perm
from userena.models import UserenaBaseProfile
from userena.utils import get_profile_model
class Profile(UserenaBaseProfile):
user = models.OneToOneField(User,
unique=True,
verbose_name=_('user'),
related_name='profile')
@property
def username(self):
return self.user.username
class ObjectProfileLink(models.Model):
"""
Generic class to record a link between a user profile and an object (Project e.g.)
with different levels of implication (Project Team Member, Project follower, Project Resource member e.g)
and a free field for detail (as role e.g). Validation process is covered by an aditional boolean field.
"""
content_type = models.ForeignKey(ContentType)
object_id = models.TextField(_('object_id'))
content_object = generic.GenericForeignKey('content_type', 'object_id', _("Linked object"))
profile = models.ForeignKey(Profile, verbose_name = _("Linked user profile"))
level = models.IntegerField(_("Implication level of the link"))
detail = models.CharField(max_length=200, blank=True)
isValidated = models.BooleanField(default=False)
@receiver(post_save, sender=User)
def create_profile_on_user_signup(sender, created, instance, **kwargs):
if created and not instance.is_superuser:
profile_model = get_profile_model()
profile_model.objects.create(user=instance)
@receiver(post_save, sender=User)
def assign_to_authenticated_users_group(sender, instance, created, *args, **kwargs):
"""
Here we assign all newly created users to the group 'authenticated_users'
If this group does not exists we create it and give permissions from settings
variable AUTHENTICATED_USERS_PERMISSIONS
"""
# Check if authenticated_user group exists, if not create it and add following perms
group, created = Group.objects.get_or_create(name='authenticated_users')
# assign perms to group
permissions = getattr(settings, 'AUTHENTICATED_USERS_PERMISSIONS')
for permission in permissions:
assign_perm(permission, group)
# assign user to group
instance.groups.add(group)