53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
from django.db.models import Count
|
|
from taggit.models import Tag
|
|
from math import floor
|
|
from operator import itemgetter
|
|
from django.conf import settings
|
|
import os
|
|
from random import choice
|
|
|
|
def randomheader(request):
|
|
header_file = choice(filter(
|
|
lambda x: os.path.isfile(
|
|
settings.HEADER_DIR + os.path.sep + x
|
|
),
|
|
os.listdir(settings.HEADER_DIR)
|
|
))
|
|
return {'header': header_file}
|
|
|
|
def tagcloud(request):
|
|
tagcloud = []
|
|
tagcloudlist = Tag.objects.annotate(
|
|
ct = Count('taggit_taggeditem_items')
|
|
).order_by('-ct')
|
|
|
|
if (len(tagcloudlist) > 0):
|
|
tmax = tagcloudlist[0].ct
|
|
tmin = 1
|
|
|
|
if (tmax == tmin):
|
|
tmax += 1
|
|
|
|
for cloudelement in tagcloudlist:
|
|
tagcount = cloudelement.ct
|
|
|
|
if (tagcount >= tmin):
|
|
size = int(floor((5.0 * (tagcount - tmin)) / (tmax - tmin)))
|
|
tagcloud.append({
|
|
'name': cloudelement.name,
|
|
'slug': cloudelement.slug,
|
|
'size': size
|
|
})
|
|
|
|
tagcloud.sort(key = itemgetter('name'))
|
|
|
|
return {'tagcloud': tagcloud}
|
|
|
|
def viewname(request):
|
|
if hasattr(request, 'view_name'):
|
|
return {
|
|
'view_name': request.view_name,
|
|
}
|
|
else:
|
|
return {}
|