aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/staff/models
diff options
context:
space:
mode:
authorGravatar Sebastiaan Zeeff <[email protected]>2019-10-18 12:34:09 +0200
committerGravatar Sebastiaan Zeeff <[email protected]>2019-10-18 12:34:09 +0200
commit6670a3ba48dad0b2e6e79d77d780c5ee77773e3e (patch)
tree30fdc507353e902f194fa84bfcb7516ea72903fd /pydis_site/apps/staff/models
parentPrevent double active infractions with constraint (diff)
parentAdd 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__.py3
-rw-r--r--pydis_site/apps/staff/models/role_mapping.py26
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}"