Я разрабатываю приложение Django. У меня есть разрешение на 2 модели. Я использую эти разрешения для отображения или отсутствия какой-либо ссылки в навигационной панели, но у меня неожиданное поведение, которого я не понимаю
ниже html код с Django логическим кодом между ними не должен отображаться одним из моих пользователей, у которого нет двух разрешений
Я контролирую, чтобы убедиться, что разрешения фактически ложные, но даже без разрешений, ссылки 'Randomize a Пациент »и« Перераспределить пациента »отображаются
что не так в моей логике c?
Я даю в конце весь navbar html код
частичный шаблон:
{% if user.is_authenticated %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{% trans 'Randomization' %}</a>
<div id="randomize" class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
{% if user_allowed_to_randomize and user_can_randomize or allowed_to_randomize and can_randomize %}
**<!-- SHOULD NOT BE DISPLAY - START-->**
{% if perms.randomization.can_randomize %}
<a class="dropdown-item" href="{% url 'randomization:randomisation_edit' %}">{% trans 'Randomize a patient' %}</a>
{% endif %}
{% if perms.randomization.can_reallocate %}
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{% url 'randomization:reallocate_edit' %}">{% trans 'Reallocate a treatment' %}</a>
{% endif %}
**<!-- SHOULD NOT BE DISPLAY - END-->**
{% endif %}
</div>
</li>
<li class="nav-item">
<a class="nav-link" href="#">{% trans 'Pharmacy' %}</a>
</li>
{% endif %}
полный шаблон:
{% load static %}
{% load i18n %}
<nav class="navbar navbar-expand-lg navbar-dark bg-dark mb-4">
<div class="container">
<a class="navbar-brand" href="">Intense TBM</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li>
</li>
<li class="nav-item active">
<a class="nav-link" href="{% url 'home' %}">{% trans 'Home' %}<span class="sr-only">(current)</span></a>
</li>
{% if user.is_authenticated %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{% trans 'Randomization' %}</a>
<!--Vérification stock via requete ajax stock avant d'afficher les menus deroulants-->
<div id="randomize" class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<!--affichage par défaut pour les profils utilisateurs 'Site'-->
<!--OU SI DROIT ATTRIBUE APRES SELECTION LISTE SITE-->
{% if user_allowed_to_randomize and user_can_randomize or allowed_to_randomize and can_randomize %}
{% if perms.randomization.can_randomize %}
<a class="dropdown-item" href="{% url 'randomization:randomisation_edit' %}">{% trans 'Randomize a patient' %}</a>
{% endif %}
{% if perms.randomization.can_reallocate %}
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{% url 'randomization:reallocate_edit' %}">{% trans 'Reallocate a treatment' %}</a>
{% endif %}
{% endif %}
</div>
</li>
<li class="nav-item">
<a class="nav-link" href="#">{% trans 'Pharmacy' %}</a>
</li>
{% endif %}
<li class="nav-item">
<a class="nav-link" href="#">{% trans 'Contact' %}</a>
</li>
</ul>
{% if user.is_authenticated %}
<ul class="navbar-nav">
<!--Vérification stock via requete ajax stock avant d'afficher le message d'alerte-->
<li class="nav-item" id="alerte">
<!--affichage par défaut pour les profils utilisateurs 'Site'-->
{% if user_allowed_to_randomize and not user_can_randomize or allowed_to_randomize and not can_randomize %}
<a class="nav-link" id="informations" href="#" style="color:red; padding-right: 50px;"><strong>{% trans 'Insufficient stock' %}</strong></a>
{% endif %}
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ user.username }}
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<!--Sélection d'un site-->
<form id="site_selectionne" method="POST" class="post-form">
{% csrf_token %}
<div class="form-group">
<!--data-randomization-url utilisé pour passer l'url dans le fichier .js qui ne considère pas les tag dajgo-->
<!--data-randomization-url récupéré pour définir l'url de la requete ajax-->
<select name="site" class="form-control" id="site" data-randomization-url="{% url 'randomization:stock' %}">
<option></option>
{% for site in sites %}
<!--récupération du site sélectionné middleware/context_processor-->
{% if site.sit_abr == site_selectionne %}
<option value="{{ site.sit_ide }}" selected>{{ site.sit_nom }} - {{ site.reg.pay.pay_nom }}</option>
{% else %}
<option value='{{ site.sit_ide }}'>{{ site.sit_nom }} - {{ site.reg.pay.pay_nom }}</option>
{% endif %}
{% endfor %}
</select>
</div>
</form>
<!---->
<a class="dropdown-item" href="{% url 'password_change' %}">{% trans 'Change password' %}</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{%url 'logout'%}">{% trans 'Logout' %}</a>
</div>
</li>
</ul>
{% else %}
<form class="form-inline my-2 my-lg-0">
<a href="{% url 'login' %}" class="btn btn-outline-secondary">{% trans 'Login' %}</a>
</form>
{% endif %}
</div>
</div>
</nav>