diff --git a/aircox/templates/aircox/base.html b/aircox/templates/aircox/base.html index e1c9670..0b489f1 100644 --- a/aircox/templates/aircox/base.html +++ b/aircox/templates/aircox/base.html @@ -56,6 +56,10 @@ Usefull context: {% endfor %} {% endblock %} +
diff --git a/aircox/templates/aircox/page_detail.html b/aircox/templates/aircox/page_detail.html index d6764a5..82d57b6 100644 --- a/aircox/templates/aircox/page_detail.html +++ b/aircox/templates/aircox/page_detail.html @@ -1,5 +1,5 @@ {% extends "aircox/basepage_detail.html" %} -{% load static i18n humanize honeypot %} +{% load static i18n humanize honeypot aircox %} {% comment %} Base template used to display a Page @@ -14,6 +14,18 @@ Context: {% endif %} {% endblock %} +{% block top-nav-tools %} +{% has_perm page "change" as can_edit %} +{% if can_edit %} + + + + + {% trans "Edit" %} + +{% endif %} +{% endblock %} + {% block main %} {{ block.super }} diff --git a/aircox/templatetags/aircox.py b/aircox/templatetags/aircox.py index 668c807..0491d9e 100644 --- a/aircox/templatetags/aircox.py +++ b/aircox/templatetags/aircox.py @@ -2,6 +2,8 @@ import random import json from django import template +from django.contrib.admin.templatetags.admin_urls import admin_urlname +from django.urls import reverse from django.utils.safestring import mark_safe from aircox.models import Page, Diffusion, Log @@ -10,6 +12,12 @@ random.seed() register = template.Library() +@register.filter(name='admin_url') +def do_admin_url(obj, arg, pass_id=True): + """ Reverse admin url for object """ + name = admin_urlname(obj._meta, arg) + return reverse(name, args=(obj.id,)) if pass_id else reverse(name) + @register.filter(name='get_tracks') def do_get_tracks(obj): """ Get a list of track for the provided log, diffusion, or episode """ @@ -20,6 +28,14 @@ def do_get_tracks(obj): obj = obj.episode return obj.track_set.all() +@register.simple_tag(name='has_perm', takes_context=True) +def do_has_perm(context, obj, perm, user=None): + """ Return True if ``user.has_perm('[APP].[perm]_[MODEL]')`` """ + if user is None: + user = context['request'].user + return user.has_perm('{}.{}_{}'.format( + obj._meta.app_label, perm, obj._meta.model_name)) + @register.filter(name='is_diffusion') def do_is_diffusion(obj): """ Return True if object is a Diffusion. """