diff options
| author | 2019-10-18 12:34:09 +0200 | |
|---|---|---|
| committer | 2019-10-18 12:34:09 +0200 | |
| commit | 6670a3ba48dad0b2e6e79d77d780c5ee77773e3e (patch) | |
| tree | 30fdc507353e902f194fa84bfcb7516ea72903fd /pydis_site/apps/staff/models | |
| parent | Prevent double active infractions with constraint (diff) | |
| parent | Add Code of Conduct to navbar submenu (diff) | |
Merge branch 'master' into active-infractions-validation
Diffstat (limited to 'pydis_site/apps/staff/models')
| -rw-r--r-- | pydis_site/apps/staff/models/__init__.py | 3 | ||||
| -rw-r--r-- | pydis_site/apps/staff/models/role_mapping.py | 26 |
2 files changed, 29 insertions, 0 deletions
diff --git a/pydis_site/apps/staff/models/__init__.py b/pydis_site/apps/staff/models/__init__.py index e69de29b..b49b6fd0 100644 --- a/pydis_site/apps/staff/models/__init__.py +++ b/pydis_site/apps/staff/models/__init__.py @@ -0,0 +1,3 @@ +from .role_mapping import RoleMapping + +__all__ = ["RoleMapping"] diff --git a/pydis_site/apps/staff/models/role_mapping.py b/pydis_site/apps/staff/models/role_mapping.py new file mode 100644 index 00000000..10c09cf1 --- /dev/null +++ b/pydis_site/apps/staff/models/role_mapping.py @@ -0,0 +1,26 @@ +from django.contrib.auth.models import Group +from django.db import models + +from pydis_site.apps.api.models import Role + + +class RoleMapping(models.Model): + """A mapping between a Discord role and Django permissions group.""" + + role = models.OneToOneField( + Role, + on_delete=models.CASCADE, + help_text="The Discord role to use for this mapping.", + unique=True, # Unique in order to simplify group assignment logic + ) + + group = models.OneToOneField( + Group, + on_delete=models.CASCADE, + help_text="The Django permissions group to use for this mapping.", + unique=True, # Unique in order to simplify group assignment logic + ) + + def __str__(self): + """Returns the mapping, for display purposes.""" + return f"@{self.role.name} -> {self.group.name}" |