| author | ymh <ymh.work@gmail.com> |
| Thu, 03 Aug 2017 09:44:37 +0200 | |
| changeset 133 | 6f3078f7fd47 |
| parent 131 | adad5563603c |
| child 142 | 56850f5c73f6 |
| 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, |
|
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 |
verbose_name=_("UserProfile|default_group")) |
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
24 |
|
| 24 | 25 |
class Meta: |
26 |
verbose_name = _('UserProfile') |
|
27 |
verbose_name_plural = _('UserProfiles') |
|
28 |
||
29 |
||
30 |
class GroupProfile(models.Model): |
|
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
31 |
group = models.OneToOneField( |
|
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
32 |
Group, unique=True, on_delete=models.CASCADE, related_name='profile') |
| 24 | 33 |
description = models.TextField(null=True, blank=True) |
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
34 |
# 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
|
35 |
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
|
36 |
# 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
|
37 |
# 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
|
38 |
# 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
|
39 |
# 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
|
40 |
# 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
|
41 |
# 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
|
42 |
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
|
43 |
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
|
44 |
|
|
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 |
@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
|
46 |
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
|
47 |
return self.owner == self.owner_personal |
|
117
9864fe2067cd
Add api endpoints for group management
ymh <ymh.work@gmail.com>
parents:
24
diff
changeset
|
48 |
|
| 24 | 49 |
class Meta: |
50 |
verbose_name = _('GroupProfile') |
|
51 |
verbose_name_plural = _('GroupProfiles') |