| author | ymh <ymh.work@gmail.com> |
| Wed, 18 Jul 2018 17:32:09 +0200 | |
| changeset 142 | 56850f5c73f6 |
| parent 133 | 6f3078f7fd47 |
| permissions | -rw-r--r-- |
| 24 | 1 |
""" |
2 |
auth module that defines irinotes' users and group |
|
3 |
""" |
|
4 |
from django.contrib.auth.models import AbstractUser, Group |
|
5 |
from django.db import models |
|
6 |
from django.utils.translation import ugettext_lazy as _ |
|
7 |
||
8 |
||
9 |
class User(AbstractUser): |
|
|
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 |
|
| 24 | 11 |
class Meta: |
12 |
verbose_name = _('User') |
|
13 |
verbose_name_plural = _('Users') |
|
14 |
||
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
15 |
|
| 24 | 16 |
class UserProfile(models.Model): |
|
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
|
17 |
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='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
|
18 |
|
|
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
|
19 |
# TODO: |
|
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
|
20 |
default_group = models.ForeignKey( |
|
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
|
21 |
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
|
22 |
null=False, |
| 142 | 23 |
verbose_name=_("UserProfile|default_group"), |
24 |
on_delete=models.PROTECT) |
|
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
25 |
|
| 24 | 26 |
class Meta: |
27 |
verbose_name = _('UserProfile') |
|
28 |
verbose_name_plural = _('UserProfiles') |
|
29 |
||
30 |
||
31 |
class GroupProfile(models.Model): |
|
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
32 |
group = models.OneToOneField( |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
33 |
Group, unique=True, on_delete=models.CASCADE, related_name='profile') |
| 24 | 34 |
description = models.TextField(null=True, blank=True) |
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
35 |
# TODO: manage when user is deleted: put first user as owner. delete group if empty |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
36 |
owner = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) |
|
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
|
37 |
# TODO: can not delete group when user is not deleted. |
|
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 |
# TODO: other users cannot set as owner |
|
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 |
# TODO: delete personal group when user is deleted |
|
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 |
# TODO: change group name when user change 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 |
# indicate that this group is a 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
|
42 |
# used this instead of a boolean because it allows to easily enforce that a user has only one 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
|
43 |
owner_personal = models.OneToOneField(User, on_delete=models.CASCADE, null=True, related_name='personal_group') |
|
133
6f3078f7fd47
Work on correct protocol propagation
ymh <ymh.work@gmail.com>
parents:
131
diff
changeset
|
44 |
protocol = models.CharField(max_length=512, null=True, blank=True) |
|
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
|
45 |
|
|
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 |
@property |
|
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 |
def is_personal(self): |
|
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 |
return self.owner == self.owner_personal |
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
49 |
|
| 24 | 50 |
class Meta: |
51 |
verbose_name = _('GroupProfile') |
|
52 |
verbose_name_plural = _('GroupProfiles') |