vpnmanager/manager/templatetags/manager.py

81 lines
1.8 KiB
Python

from django import template
from manager.models import Organization, Device, Wifi, Network
from django.contrib.auth.models import User
register = template.Library()
def abcSort(inlist):
return sorted(inlist, key=lambda x: str(x))
@register.simple_tag
def allOrgas():
return abcSort(Organization.objects.all())
@register.simple_tag
def allNets():
return abcSort(Network.objects.all())
def orgaObjects(cls, orga):
return abcSort(set(cls.objects.filter(organization__in=orga)))
def directUserOrgas(user):
return abcSort(user.organization_set.all())
@register.simple_tag
def directOrgaString(user):
return ", ".join(str(orga) for orga in directUserOrgas(user))
@register.simple_tag
def directOrgaAjax(user):
return "[" + ",".join(str(orga.id) for orga in directUserOrgas(user)) + "]"
@register.simple_tag(takes_context=True)
def userOrgas(context):
return directUserOrgas(context.request.user)
@register.simple_tag(takes_context=True)
def orgaString(context):
return directOrgaString(context.request.user)
@register.simple_tag(takes_context=True)
def userDevices(context):
return orgaObjects(Device, userOrgas(context))
@register.simple_tag(takes_context=True)
def userWifis(context):
return orgaObjects(Wifi, userOrgas(context))
@register.simple_tag(takes_context=True)
def userUsers(context):
return orgaObjects(User, userOrgas(context))
@register.simple_tag(takes_context=True)
def userNets(context):
return orgaObjects(Network, userOrgas(context))
def netOrgas(network):
return network.organization.all()
@register.simple_tag
def netOrgaString(network):
return ", ".join(str(orga) for orga in netOrgas(network))
@register.simple_tag
def netOrgaAjax(network):
return "[" + ",".join(str(orga.id) for orga in netOrgas(network)) + "]"