| author | ymh <ymh.work@gmail.com> |
| Mon, 31 Jul 2017 23:18:38 +0200 | |
| changeset 131 | adad5563603c |
| parent 117 | 9864fe2067cd |
| child 142 | 56850f5c73f6 |
| permissions | -rw-r--r-- |
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
1 |
""" |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
2 |
Signals for notes app |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
3 |
""" |
|
131
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
4 |
import logging |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
5 |
|
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
6 |
from django.contrib.auth import get_user_model |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
7 |
from django.contrib.auth.models import Group |
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
8 |
from django.db.models.signals import post_save |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
9 |
from django.dispatch import receiver |
|
131
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
10 |
|
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
11 |
from notes.models import GroupProfile, UserProfile |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
12 |
|
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
13 |
User = get_user_model() |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
14 |
logger = logging.getLogger(__name__) |
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
15 |
|
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
16 |
@receiver(post_save, sender=Group, dispatch_uid="group_created_signal") |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
17 |
def group_saved_callback(sender, instance, **kwargs): |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
18 |
created = kwargs.pop('created') |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
19 |
if instance and created: |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
20 |
profile = GroupProfile(group=instance) |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
21 |
profile.save() |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
22 |
|
|
131
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
23 |
@receiver(post_save, sender=User, dispatch_uid="user_created_signal") |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
24 |
def user_saved_callback(sender, instance, **kwargs): |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
25 |
created = kwargs.pop('created') |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
26 |
if not instance: |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
27 |
return |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
28 |
base_group_name = instance.username + " group" |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
29 |
group_name = base_group_name |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
30 |
if created: |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
31 |
# create personal group |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
32 |
personal_group = None |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
33 |
personal_group_profile = GroupProfile.objects.filter(owner=instance, owner_personal=instance).first() |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
34 |
if personal_group_profile is None: |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
35 |
# find a new name |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
36 |
i = 1 |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
37 |
while Group.objects.filter(name=group_name).exists(): # should always ends... |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
38 |
group_name = "%s %s" % (base_group_name, i) |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
39 |
i += 1 |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
40 |
personal_group = Group.objects.create(name=group_name) |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
41 |
personal_group.user_set.add(instance) |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
42 |
personal_group_profile = personal_group.profile |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
43 |
personal_group_profile.description = "%s personal group" % instance.username |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
44 |
personal_group_profile.owner = instance |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
45 |
personal_group_profile.owner_personal = instance |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
46 |
personal_group_profile.save() |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
47 |
else: |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
48 |
personal_group = personal_group_profile.group |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
49 |
|
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
50 |
UserProfile.objects.create(user=instance, default_group=personal_group) |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
51 |
# else we do nothing, because we do not know if the group's name was changed or not |
|
adad5563603c
add personal group, default_group to users and add group info to session on backend
ymh <ymh.work@gmail.com>
parents:
117
diff
changeset
|
52 |
# and we do not know the user older name |