In views.py, I want users who belong to a specific group to be True.
opened this issue · comments
Hello! This is my first question.
I don't usually use English very much, so if something doesn't make sense to you, please ask for more details.
I'm currently trying to use django-rules to determine if a user belongs to a certain group or not.
but the superuser is successfully excluded in html, but in views.py, it is always True.
What is wrong with this?
#rules.py
import rules
from rules import has_perm
is_admin = rules.is_group_member( 'is_admin' )
is_aaa = rules.is_group_member( 'aaa' )
@rules.predicate
def is_aaa_group(user):
return user.has_perm( 'is_aaa' )
# Permissions
rules.add_perm( 'is_admin', is_admin )
rules.add_perm( 'is_aaa', is_aaa )
# views.py
class BookListView( ListView ):
model = Book
template_name = 'index.html'
def get( self, request, *args, **kwargs ):
user = self.request.user
print( is_aaa_group(user) )
return super().get( request, *args, **kwargs )
# superuser
Reality -> True ← orz
Ideal -> False
# aaa group
Reality -> True
Ideal -> True
In html, it works as expected. ↓
{% extends "base.html" %}
{% load static %}
{% load rules %}
{% has_perm 'is_admin' request.user as is_admin %}
{% has_perm 'is_aaa' request.user as is_aaa %}
{% block content %}
{% if is_admin %}j
<li>only superuser.</li>
{% elif is_aaa %}
<li>only aaa group.</li>
{% endif %}
{% endblock %}
thank you.