Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions org_permissions/admin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.contrib import admin

from .models import OrganizationPermission
from .models import OrganizationPermission, OrganizationStaffGroup


admin.site.register(OrganizationPermission, admin.ModelAdmin)
admin.site.register(OrganizationPermission)
admin.site.register(OrganizationStaffGroup)
3 changes: 3 additions & 0 deletions org_permissions/auth_backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ def get_organization_permissions(self, user_obj, obj=None):
setattr(user_obj, self.perm_cache_name, set(perms))
return perms

def has_module_perms(self, app_label, obj=None):
return True

def has_perm(self, user_obj, perm, obj=None):
if perm in self.get_organization_permissions(user_obj, obj):
return True
Expand Down
20 changes: 14 additions & 6 deletions org_permissions/models.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
from django.db import models
from django.contrib.auth.models import Permission

from organizations.models import Organization


class OrganizationPermissionManager(models.Manager):

def add_user(self, organization_name, user):
Expand All @@ -17,10 +15,12 @@ def remove_user(self, organization_name, user):
org.users.remove(user)
return org, created


class OrganizationPermission(models.Model):
organization = models.OneToOneField(
Organization, on_delete=models.CASCADE, related_name='org_perm', null=False, primary_key=True, verbose_name='Organization'
name = models.CharField(max_length=100)
organizations = models.ManyToManyField(
Organization,
related_name='org_perm',
verbose_name='Organizations'
)
# Many Permission to many OrganizationPermission.
permissions = models.ManyToManyField(
Expand All @@ -34,4 +34,12 @@ class Meta:
verbose_name_plural = 'Organization permissions'

def __str__(self):
return '{} : {}'.format(str(self.organization), ' : '.join(str(perm) for perm in self.permissions.all()))
return '{}'.format(str(self.name))

class OrganizationStaffGroup(Group):
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the purpose of OrganizationStaffGroup?
Why just using Django built-in Group is not enough?

organization = models.OneToOneField(
Organization, on_delete=models.CASCADE, related_name='org_staff_groups', null=False, primary_key=True
)

def __str__(self):
return '{} : {}'.format(str(self.organization), self.name)