def wrapper(request, *args, **kw): from cyano.views import login user = request.user if not user.is_authenticated(): # Special handling for guests user = User.objects.get(username="******") # Admins always have full access if user.is_superuser: return function(request, *args, **kw) # Global perm check if user.profile.has_perm(permission): return function(request, *args, **kw) # No perm fallthrough msg = "You need global permission \"{}\"".format(permission) return login( request, species=None, error=403, message=msg, force_next=request.build_absolute_uri(), required_perm=permission)
def wrapper(request, *args, **kw): from cyano.views import login user = request.user if not user.is_authenticated(): # Special handling for guests user = User.objects.get(username="******") # Admins always have full access if user.is_superuser: return function(request, *args, **kw) # Global perm check if user.profile.has_perm(permission): return function(request, *args, **kw) # No perm fallthrough msg = "You need global permission \"{}\"".format(permission) return login(request, species=None, error=403, message=msg, force_next=request.build_absolute_uri(), required_perm=permission)
def wrapper(request, *args, **kw): from cyano.views import login species = kw.get("species", False) item = kw.get("item", False) user = request.user if not user.is_authenticated(): # Special handling for guests user = User.objects.get(username="******") else: pass # Admins always have full access if user.is_superuser: return function(request, *args, **kw) if species: species_old_cls = species.__class__ species.__class__ = Entry allow_item = None if item: # __class__ assignment: 'Entry' object layout differs from 'ModelBase'# #item_old_cls = item.__class__ #item = item.__class__ = Entry entry_item = Entry.objects.get(pk=item.pk) allow_item = user.profile.has_perm(permission, entry_item) #item.__class__ = item_old_cls allow_species = user.profile.has_perm(permission, species) species._class__ = species_old_cls if allow_species or allow_item: # Has permission return function(request, *args, **kw) else: raise ValueError( "Species required for permission check. Use global_permission_required to check for global permissions." ) # No perm fallthrough msg = "You need permission \"{}\" to access ".format(permission) if item: msg += "item {} of ".format(item.wid) msg += "species {}".format(species.wid) return login(request, species=species, error=403, message=msg, force_next=request.build_absolute_uri(), required_perm=permission)
def wrapper(request, *args, **kw): from cyano.views import login species = kw.get("species", False) item = kw.get("item", False) user = request.user if not user.is_authenticated(): # Special handling for guests user = User.objects.get(username="******") else: pass # Admins always have full access if user.is_superuser: return function(request, *args, **kw) if species: species_old_cls = species.__class__ species.__class__ = Entry allow_item = None if item: # __class__ assignment: 'Entry' object layout differs from 'ModelBase'# #item_old_cls = item.__class__ #item = item.__class__ = Entry entry_item = Entry.objects.get(pk=item.pk) allow_item = user.profile.has_perm(permission, entry_item) #item.__class__ = item_old_cls allow_species = user.profile.has_perm(permission, species) species._class__ = species_old_cls if allow_species or allow_item: # Has permission return function(request, *args, **kw) else: raise ValueError("Species required for permission check. Use global_permission_required to check for global permissions.") # No perm fallthrough msg = "You need permission \"{}\" to access ".format(permission) if item: msg += "item {} of ".format(item.wid) msg += "species {}".format(species.wid) return login( request, species=species, error=403, message=msg, force_next=request.build_absolute_uri(), required_perm=permission)