1 """ |
1 """ |
2 Signals for notes app |
2 Signals for notes app |
3 """ |
3 """ |
|
4 import logging |
|
5 |
|
6 from django.contrib.auth import get_user_model |
|
7 from django.contrib.auth.models import Group |
4 from django.db.models.signals import post_save |
8 from django.db.models.signals import post_save |
5 from django.dispatch import receiver |
9 from django.dispatch import receiver |
6 from django.contrib.auth.models import Group |
10 |
7 from notes.models import GroupProfile |
11 from notes.models import GroupProfile, UserProfile |
|
12 |
|
13 User = get_user_model() |
|
14 logger = logging.getLogger(__name__) |
8 |
15 |
9 @receiver(post_save, sender=Group, dispatch_uid="group_created_signal") |
16 @receiver(post_save, sender=Group, dispatch_uid="group_created_signal") |
10 def group_saved_callback(sender, instance, **kwargs): |
17 def group_saved_callback(sender, instance, **kwargs): |
11 created = kwargs.pop('created') |
18 created = kwargs.pop('created') |
12 if instance and created: |
19 if instance and created: |
13 profile = GroupProfile(group=instance) |
20 profile = GroupProfile(group=instance) |
14 profile.save() |
21 profile.save() |
15 |
22 |
|
23 @receiver(post_save, sender=User, dispatch_uid="user_created_signal") |
|
24 def user_saved_callback(sender, instance, **kwargs): |
|
25 created = kwargs.pop('created') |
|
26 if not instance: |
|
27 return |
|
28 base_group_name = instance.username + " group" |
|
29 group_name = base_group_name |
|
30 if created: |
|
31 # create personal group |
|
32 personal_group = None |
|
33 personal_group_profile = GroupProfile.objects.filter(owner=instance, owner_personal=instance).first() |
|
34 if personal_group_profile is None: |
|
35 # find a new name |
|
36 i = 1 |
|
37 while Group.objects.filter(name=group_name).exists(): # should always ends... |
|
38 group_name = "%s %s" % (base_group_name, i) |
|
39 i += 1 |
|
40 personal_group = Group.objects.create(name=group_name) |
|
41 personal_group.user_set.add(instance) |
|
42 personal_group_profile = personal_group.profile |
|
43 personal_group_profile.description = "%s personal group" % instance.username |
|
44 personal_group_profile.owner = instance |
|
45 personal_group_profile.owner_personal = instance |
|
46 personal_group_profile.save() |
|
47 else: |
|
48 personal_group = personal_group_profile.group |
|
49 |
|
50 UserProfile.objects.create(user=instance, default_group=personal_group) |
|
51 # else we do nothing, because we do not know if the group's name was changed or not |
|
52 # and we do not know the user older name |