src/notes/signals.py
changeset 131 adad5563603c
parent 117 9864fe2067cd
child 142 56850f5c73f6
equal deleted inserted replaced
130:78246db1cbac 131:adad5563603c
     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