first commit
This commit is contained in:
commit
b71ea45681
898 changed files with 138202 additions and 0 deletions
67
common/decorators.py
Normal file
67
common/decorators.py
Normal file
|
@ -0,0 +1,67 @@
|
|||
from functools import wraps
|
||||
|
||||
from django.http import JsonResponse, HttpResponse
|
||||
from django.shortcuts import redirect
|
||||
|
||||
from extensions.consts import UserRoles
|
||||
|
||||
|
||||
def require_ajax(view_func):
|
||||
@wraps(view_func)
|
||||
def _wrapped_view(request, *args, **kwargs):
|
||||
if not request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
||||
return JsonResponse({'error': 'Only AJAX requests are allowed.'}, status=400)
|
||||
return view_func(request, *args, **kwargs)
|
||||
|
||||
return _wrapped_view
|
||||
|
||||
|
||||
def allowed_roles(allowed_roles: list[UserRoles]):
|
||||
"""
|
||||
@param allowed_roles must not be empty
|
||||
"""
|
||||
|
||||
def decorator(views_func):
|
||||
def wrapper_func(request, *args, **kwargs):
|
||||
roles = [role.slug for role in request.user.profile.roles.all()]
|
||||
allowed_role_names = [role.value for role in allowed_roles]
|
||||
if any(item in roles for item in allowed_role_names):
|
||||
return views_func(request, *args, **kwargs)
|
||||
else:
|
||||
return HttpResponse('you are not allow', status=401)
|
||||
|
||||
return wrapper_func
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
def profile_complete_needed(view_func):
|
||||
@wraps(view_func)
|
||||
def _wrapped_view(request, *args, **kwargs):
|
||||
if not request.user.profile or not request.user.profile.is_completed:
|
||||
return redirect("accounts:profile")
|
||||
return view_func(request, *args, **kwargs)
|
||||
|
||||
return _wrapped_view
|
||||
|
||||
|
||||
def superuser_required(views_func):
|
||||
def wrapper_func(request, *args, **kwargs):
|
||||
user = request.user
|
||||
if user.is_superuser:
|
||||
return views_func(request, *args, **kwargs)
|
||||
else:
|
||||
return redirect('dashboard:vodDashboard')
|
||||
|
||||
return wrapper_func
|
||||
|
||||
|
||||
def staffuser_required(views_func):
|
||||
def wrapper_func(request, *args, **kwargs):
|
||||
user = request.user
|
||||
if user.is_staff:
|
||||
return views_func(request, *args, **kwargs)
|
||||
else:
|
||||
return redirect('dashboard:vodDashboard')
|
||||
|
||||
return wrapper_func
|
Loading…
Add table
Add a link
Reference in a new issue