aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps
diff options
context:
space:
mode:
authorGravatar Gareth Coles <[email protected]>2019-10-03 20:45:18 +0100
committerGravatar Gareth Coles <[email protected]>2019-10-03 20:45:18 +0100
commit99263f6e43fc27e3c869bb79e647fb121f4b6199 (patch)
tree494874035791bdd6fde175239a11e91244f7cc64 /pydis_site/apps
parentDisable Allauth email verification (diff)
Add model to map Discord roles to Django permissions groups
Diffstat (limited to 'pydis_site/apps')
-rw-r--r--pydis_site/apps/staff/admin.py6
-rw-r--r--pydis_site/apps/staff/migrations/0001_initial.py25
-rw-r--r--pydis_site/apps/staff/models/__init__.py3
-rw-r--r--pydis_site/apps/staff/models/role_mapping.py27
4 files changed, 61 insertions, 0 deletions
diff --git a/pydis_site/apps/staff/admin.py b/pydis_site/apps/staff/admin.py
new file mode 100644
index 00000000..94cd83c5
--- /dev/null
+++ b/pydis_site/apps/staff/admin.py
@@ -0,0 +1,6 @@
+from django.contrib import admin
+
+from .models import RoleMapping
+
+
+admin.site.register(RoleMapping)
diff --git a/pydis_site/apps/staff/migrations/0001_initial.py b/pydis_site/apps/staff/migrations/0001_initial.py
new file mode 100644
index 00000000..7748e553
--- /dev/null
+++ b/pydis_site/apps/staff/migrations/0001_initial.py
@@ -0,0 +1,25 @@
+# Generated by Django 2.2.6 on 2019-10-03 18:24
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('auth', '0011_update_proxy_permissions'),
+ ('api', '0043_infraction_hidden_warnings_to_notes'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='RoleMapping',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('group', models.OneToOneField(help_text='The Django permissions group to use for this mapping.', on_delete=django.db.models.deletion.CASCADE, to='auth.Group')),
+ ('role', models.OneToOneField(help_text='The Discord role to use for this mapping.', on_delete=django.db.models.deletion.CASCADE, to='api.Role')),
+ ],
+ ),
+ ]
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..21825aea
--- /dev/null
+++ b/pydis_site/apps/staff/models/role_mapping.py
@@ -0,0 +1,27 @@
+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."
+ )
+
+ group = models.OneToOneField(
+ Group,
+ on_delete=models.CASCADE,
+ help_text="The Django permissions group to use for this mapping."
+ )
+
+ def __str__(self):
+ """Returns the mapping, for display purposes."""
+ return f"@{self.role.name} -> {self.group.name}"
+
+ class Meta:
+ app_label = 'auth'