-
Notifications
You must be signed in to change notification settings - Fork 184
/
Copy pathmodels.py
35 lines (24 loc) · 1.14 KB
/
models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import uuid
from django.db import models
from project.accounts.models import User
class Organisation(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
name = models.CharField(unique=True, max_length=100)
slug = models.SlugField(unique=True, null=True, blank=True)
members = models.ManyToManyField(User, through='Membership', through_fields=('organisation', 'user'))
is_active = models.BooleanField(default=False)
class Membership(models.Model):
class Meta:
unique_together = ("organisation", "user")
MEMBER_ROLES = (
("ADMIN", "Admin"),
("USER", "User")
)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
joined = models.DateTimeField(auto_now_add=True)
organisation = models.ForeignKey(Organisation, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
role = models.CharField(choices=MEMBER_ROLES, max_length=20, default="USER")
is_owner = models.BooleanField(default=False)