Skip to content
Snippets Groups Projects
Unverified Commit 08f433e4 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

In requests, automatically limit objects to current school.

Advances #19.
parent ce20715c
No related branches found
No related tags found
No related merge requests found
from django.db import models
from .util.core_helpers import get_current_school
class SchoolRelatedManager(models.Manager):
def get_queryset(self):
qs = super().get_queryset()
school = get_current_school()
if school:
return qs.filter(school=school)
else:
return qs.none()
def create(self, *args, **kwargs):
if 'school' not in kwargs:
kwargs['school'] = get_current_school()
return super().create(*args, **kwargs)
class SchoolRelated(models.Model):
class Meta:
abstract = True
objects = SchoolRelatedManager()
school = models.ForeignKey('core.School', on_delete=models.CASCADE)
......@@ -25,6 +25,7 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_global_request',
'easyaudit',
'bootstrap4',
'fa',
......@@ -40,6 +41,7 @@ INSTALLED_APPS += get_app_packages()
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django_global_request.middleware.GlobalRequestMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
......
......@@ -2,6 +2,8 @@ from importlib import import_module
import pkgutil
from typing import Sequence
from django_global_request.middleware import get_request
def get_app_packages() -> Sequence:
""" Find all packages within the biscuit.apps namespace. """
......@@ -25,3 +27,15 @@ def get_app_packages() -> Sequence:
pkgs.append('biscuit.apps.%s' % pkg[1])
return pkgs
def get_current_school():
request = get_request()
if request:
if request.user.person:
return request.user.person.school
else:
return None
else:
return None
......@@ -24,6 +24,7 @@ setup(
'django-fa',
'django-easy-audit',
'django-local-settings',
'django-middleware-global-request',
'django-phonenumber-field[phonenumbers]',
'django-simple-menu',
'django-tables2',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment