src/notes/models/auth.py
changeset 131 adad5563603c
parent 117 9864fe2067cd
child 133 6f3078f7fd47
equal deleted inserted replaced
130:78246db1cbac 131:adad5563603c
     5 from django.db import models
     5 from django.db import models
     6 from django.utils.translation import ugettext_lazy as _
     6 from django.utils.translation import ugettext_lazy as _
     7 
     7 
     8 
     8 
     9 class User(AbstractUser):
     9 class User(AbstractUser):
       
    10 
    10     class Meta:
    11     class Meta:
    11         verbose_name = _('User')
    12         verbose_name = _('User')
    12         verbose_name_plural = _('Users')
    13         verbose_name_plural = _('Users')
    13 
    14 
    14 
    15 
    15 class UserProfile(models.Model):
    16 class UserProfile(models.Model):
    16     user = models.OneToOneField(User, on_delete=models.CASCADE)
    17     user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
       
    18 
       
    19     # TODO:
       
    20     default_group = models.ForeignKey(
       
    21         Group,
       
    22         null=False,
       
    23         verbose_name=_("UserProfile|default_group"))
    17 
    24 
    18     class Meta:
    25     class Meta:
    19         verbose_name = _('UserProfile')
    26         verbose_name = _('UserProfile')
    20         verbose_name_plural = _('UserProfiles')
    27         verbose_name_plural = _('UserProfiles')
    21 
    28 
    24     group = models.OneToOneField(
    31     group = models.OneToOneField(
    25         Group, unique=True, on_delete=models.CASCADE, related_name='profile')
    32         Group, unique=True, on_delete=models.CASCADE, related_name='profile')
    26     description = models.TextField(null=True, blank=True)
    33     description = models.TextField(null=True, blank=True)
    27     # TODO: manage when user is deleted: put first user as owner. delete group if empty
    34     # TODO: manage when user is deleted: put first user as owner. delete group if empty
    28     owner = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    35     owner = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
       
    36     # TODO: can not delete group when user is not deleted.
       
    37     # TODO: other users cannot set as owner
       
    38     # TODO: delete personal group when user is deleted
       
    39     # TODO: change group name when user change name
       
    40     # indicate that this group is a personal group.
       
    41     # used this instead of a boolean because it allows to easily enforce that a user has only one personal group
       
    42     owner_personal = models.OneToOneField(User, on_delete=models.CASCADE, null=True, related_name='personal_group')
       
    43 
       
    44     @property
       
    45     def is_personal(self):
       
    46         return self.owner == self.owner_personal
    29 
    47 
    30     class Meta:
    48     class Meta:
    31         verbose_name = _('GroupProfile')
    49         verbose_name = _('GroupProfile')
    32         verbose_name_plural = _('GroupProfiles')
    50         verbose_name_plural = _('GroupProfiles')