Skip to content
Empty file added Access/__init__.py
Empty file.
1 change: 1 addition & 0 deletions Access/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Register your models here.
6 changes: 6 additions & 0 deletions Access/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class AccessConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "Access"
37 changes: 37 additions & 0 deletions Access/decorators.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
from django.core.exceptions import PermissionDenied


def user_admin_or_ops(function):
def wrap(request, *args, **kwargs):
if request.user.is_superuser or request.user.user.is_ops:
return function(request, *args, **kwargs)
else:
raise PermissionDenied

wrap.__doc__ = function.__doc__
wrap.__name__ = function.__name__
return wrap


def authentication_classes(authentication_classes):
def decorator(func):
func.authentication_classes = authentication_classes
return func

return decorator


def user_with_permission(permissions_list):
def user_with_permission_decorator(function):
def wrap(request, *args, **kwargs):
if hasattr(request.user, "user"):
permission_labels = [
permission.label for permission in request.user.user.permissions
]
if len(set(permissions_list).intersection(permission_labels)) > 0:
return function(request, *args, **kwargs)
raise PermissionDenied

return wrap

return user_with_permission_decorator
30 changes: 30 additions & 0 deletions Access/helpers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from os.path import dirname, basename, isfile, join
import glob
import re
import logging

logger = logging.getLogger(__name__)
available_accesses = []
cached_accesses = []


def getAvailableAccessModules():
global available_accesses
if len(available_accesses) > 0:
return available_accesses
available_accesses = [access for access in getAccessModules() if access.available]
return available_accesses


def getAccessModules():
global cached_accesses
if len(cached_accesses) > 0:
return cached_accesses
access_modules_dirs = glob.glob(join(dirname(__file__), "access_modules", "*"))
for each_dir in access_modules_dirs:
if re.search(r"/(base_|__pycache__)", each_dir):
access_modules_dirs.remove(each_dir)
access_modules_dirs.sort()
cached_accesses = \
[globals()[basename(f)].access.get_object() for f in access_modules_dirs if not isfile(f)]
return cached_accesses
Loading