estagio/utilitarios/templatetags/geral_filters.py
#-*- coding: UTF-8 -*-
from django.conf import settings
from django.db.models import Q
from django.contrib.auth.models import Permission
from django.contrib.auth.models import User
from django import template
from utilitarios.funcoes import lista_status_parcela
register = template.Library()
@register.filter(name='format_value_null')
def format_value_null(value):
"""
Formata texto que é exido como NULL no campo
"""
if value:
return value
if not value:
return '-'
@register.filter(name='formata_booleano')
def formata_booleano(value):
if value:
return 'admin/img/icon-yes.gif'
else:
return 'admin/img/icon-no.gif'
@register.filter(name='formata_quantidade_produtos')
def formata_quantidade_produtos(value, quantidade_minima):
"""
Formata a classe da linha para indicar como vermelho se estiver com 50%\ do mínimo definido
"""
quantidade_minima_limite = quantidade_minima*0.5
if value <= quantidade_minima_limite:
return "error"
else:
return "warning"
@register.simple_tag
def template_dir(this_object, its_name=""):
"""
Retorna as variáveis da instância, os atributos da classe e das demais classes base.
Funciona apenas se o Debug está ativado no servidor.
Para utilizá-lo no template:
{%/ load geral_filters %}
{%/ template_dir object.field "object.field" %}
{%/ template_dir object "Propriedades do objeto" %}
"""
if settings.DEBUG:
output = dir(this_object)
return "<pre>" + str(its_name) + " " + str(output) + "</pre>"
return ""
@register.filter(name='pode_exportar')
def pode_exportar(usuario, opts):
"""
Retorna booleano que indica se usuário tem permissão para acesso ao elemento do contexto.
Para utilizá-lo no template:
{%/ load geral_filters %}
{%/ if user|pode_exportar:opts.model_name %}...{%/ endif %}
"""
nome_permissao = 'pode_exportar_' + opts.model_name
try:
perm = Permission.objects.get(codename=nome_permissao, content_type__app_label=opts.app_label, content_type__model=opts.model_name)
except Permission.DoesNotExist:
perm = False
tem_permissao = User.objects.filter((Q(groups__permissions=perm) | Q(user_permissions=perm) | Q(is_superuser=True)) & Q(username=usuario)).exists()
# Se existe permissão, retorna True
if tem_permissao:
return True
return False
@register.simple_tag
def tag_lista_status_parcela():
"""
Retorna lista de cores utilizadas na identificação dos status das parcelas de contas a pagar/receber.
Para utilizá-lo no template:
{%/ tag_lista_status_parcela as lsp %}
{{/ lsp }}
"""
return lista_status_parcela()