from django.core.exceptions import PermissionDenied
from CommonApp.models import UserProfile

from django.contrib import auth
from django.shortcuts import redirect
from django.urls import resolve

def user_is_coach(function):
	def wrap(request, *args, **kwargs):
		entry = UserProfile.objects.get(user_id=request.user.id)
		# raise Exception(entry.category.is_active)
		if entry.user_type == 'coach':
			if request.user.is_active == 1 and entry.category.is_active == 1:
				return function(request, *args, **kwargs)
			else:
				raise PermissionDenied
		else:
			raise PermissionDenied
	wrap.__doc__ = function.__doc__
	wrap.__name__ = function.__name__
	return wrap

def user_is_client(function):
	def wrap(request, *args, **kwargs):
		# raise Exception(request.user.id)
		entry = UserProfile.objects.get(user_id=request.user.id)
		if entry.user_type == 'client':
			if request.user.is_active == 1:
				return function(request, *args, **kwargs)
		else:
			raise PermissionDenied
	wrap.__doc__ = function.__doc__
	wrap.__name__ = function.__name__
	return wrap

def user_is_admin(function):
	def wrap(request, *args, **kwargs):
		# raise Exception(resolve(request.path_info).url_name)
		entry = UserProfile.objects.get(user_id=request.user.id)
		if entry.user_type == 'admin':
			if request.user.is_active == 1 and request.user.userprofile.menu_list is not None and (request.build_absolute_uri().split('/')[4] in request.user.userprofile.menu_list.split(',') or request.build_absolute_uri().split('/')[4] == 'extra'):
				return function(request, *args, **kwargs)
			else:
				# raise Exception('hii')
				return redirect('admin-dashboard')
		else:
			auth.logout(request)
			return redirect('admin-login')
			raise PermissionDenied
	wrap.__doc__ = function.__doc__
	wrap.__name__ = function.__name__
	return wrap
