src/notes/models/auth.py
changeset 131 adad5563603c
parent 117 9864fe2067cd
child 133 6f3078f7fd47
--- a/src/notes/models/auth.py	Sun Jul 30 01:02:09 2017 +0200
+++ b/src/notes/models/auth.py	Mon Jul 31 23:18:38 2017 +0200
@@ -7,13 +7,20 @@
 
 
 class User(AbstractUser):
+
     class Meta:
         verbose_name = _('User')
         verbose_name_plural = _('Users')
 
 
 class UserProfile(models.Model):
-    user = models.OneToOneField(User, on_delete=models.CASCADE)
+    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
+
+    # TODO:
+    default_group = models.ForeignKey(
+        Group,
+        null=False,
+        verbose_name=_("UserProfile|default_group"))
 
     class Meta:
         verbose_name = _('UserProfile')
@@ -26,6 +33,17 @@
     description = models.TextField(null=True, blank=True)
     # TODO: manage when user is deleted: put first user as owner. delete group if empty
     owner = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
+    # TODO: can not delete group when user is not deleted.
+    # TODO: other users cannot set as owner
+    # TODO: delete personal group when user is deleted
+    # TODO: change group name when user change name
+    # indicate that this group is a personal group.
+    # used this instead of a boolean because it allows to easily enforce that a user has only one personal group
+    owner_personal = models.OneToOneField(User, on_delete=models.CASCADE, null=True, related_name='personal_group')
+
+    @property
+    def is_personal(self):
+        return self.owner == self.owner_personal
 
     class Meta:
         verbose_name = _('GroupProfile')