Найти - Пользователи
Полная версия: Ребята, помогите написать tamplatetag
Начало » Django » Ребята, помогите написать tamplatetag
1
FishHook
Никогда этим не заморачивался, а тут вдруг понадобилось.
Что-то не возьму в толк как осуществить,
есть такое
                            {% menu "Здания" "/s\d+/building/.*" building-lst org_id %}
{% menu "Группы" "/s\d+/group/.*" group-lst org_id %}
{% menu "Персонал" "/s\d+/staff/.*" staff-lst org_id %}
Есть модель, в которой каждому юзеру дано разрешение на кнопку меню.
Хочу замутить свой тэг if, что-то вроде.

                  
{% if_has_permission user 'building' %}
{% menu "Здания" "/s\d+/building/.*" building-lst org_id %}
{% endif_has_permission %}
{% if_has_permission user 'group' %}
{% menu "Группы" "/s\d+/group/.*" group-lst org_id %}
{% endif_has_permission %}
и так далее
Как сиё делается?
Imposeren
Подключаете контекст процессор django.core.context_processors.auth (обычно включен). Потом в темплейттеге menu делаете что бы он принимал контекст (takes_context=True) (найдёте по ссылке выше), и проверяете:
context.has_perm('app_menu.view_building')

как создавать пермишены читать тут:
https://docs.djangoproject.com/en/dev/topics/auth/#permissions

Можно просто каким-то своим методом проверять есть ли разрешения, т.к. у вас в темплейт-теге есть полный доступ к инстансу юзера и любым моделям
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB