Update web/core/views.py
This commit is contained in:
parent
3c282d86ec
commit
3a931926cf
@ -427,59 +427,59 @@ def export_csv(request):
|
||||
return response
|
||||
|
||||
|
||||
@login_required
|
||||
def stats_page(request):
|
||||
total = Entry.objects.count()
|
||||
today = date.today()
|
||||
last30 = Entry.objects.filter(date_added__gte=today - timedelta(days=30)).count()
|
||||
last365 = Entry.objects.filter(date_added__gte=today - timedelta(days=365)).count()
|
||||
|
||||
from collections import Counter
|
||||
|
||||
months = []
|
||||
y = today.year
|
||||
m = today.month
|
||||
for i in range(12):
|
||||
mm = m - i
|
||||
yy = y
|
||||
while mm <= 0:
|
||||
mm += 12
|
||||
yy -= 1
|
||||
from datetime import date as _d
|
||||
start = _d(yy, mm, 1)
|
||||
end = _d(yy + 1, 1, 1) if mm == 12 else _d(yy, mm + 1, 1)
|
||||
label = f"{yy}-{mm:02d}"
|
||||
months.append((label, start, end))
|
||||
months = list(reversed(months))
|
||||
|
||||
series = [
|
||||
(label, Entry.objects.filter(date_added__gte=start, date_added__lt=end).count())
|
||||
for label, start, end in months
|
||||
]
|
||||
peak = max((v for _, v in series), default=1)
|
||||
heights = [
|
||||
(label, value, 8 + int((value / peak) * 100) if peak else 8)
|
||||
for label, value in series
|
||||
]
|
||||
|
||||
counts = Counter()
|
||||
for subj in Entry.objects.exclude(subject="").values_list("subject", flat=True):
|
||||
for tag in [t.strip() for t in subj.split(",") if t.strip()]:
|
||||
counts[tag.lower()] += 1
|
||||
top_subjects = [{"name": n.title(), "count": c} for n, c in counts.most_common(20)]
|
||||
|
||||
return render(
|
||||
request,
|
||||
"stats.html",
|
||||
{
|
||||
"total": total,
|
||||
"last30": last30,
|
||||
"last365": last365,
|
||||
"series": series,
|
||||
"heights": heights,
|
||||
"top_subjects": top_subjects,
|
||||
},
|
||||
)
|
||||
#@login_required
|
||||
#def stats_page(request):
|
||||
# total = Entry.objects.count()
|
||||
# today = date.today()
|
||||
# last30 = Entry.objects.filter(date_added__gte=today - timedelta(days=30)).count()
|
||||
# last365 = Entry.objects.filter(date_added__gte=today - timedelta(days=365)).count()
|
||||
#
|
||||
# from collections import Counter
|
||||
#
|
||||
# months = []
|
||||
# y = today.year
|
||||
# m = today.month
|
||||
# for i in range(12):
|
||||
# mm = m - i
|
||||
# yy = y
|
||||
# while mm <= 0:
|
||||
# mm += 12
|
||||
# yy -= 1
|
||||
# from datetime import date as _d
|
||||
# start = _d(yy, mm, 1)
|
||||
# end = _d(yy + 1, 1, 1) if mm == 12 else _d(yy, mm + 1, 1)
|
||||
# label = f"{yy}-{mm:02d}"
|
||||
# months.append((label, start, end))
|
||||
# months = list(reversed(months))
|
||||
#
|
||||
# series = [
|
||||
# (label, Entry.objects.filter(date_added__gte=start, date_added__lt=end).count())
|
||||
# for label, start, end in months
|
||||
# ]
|
||||
# peak = max((v for _, v in series), default=1)
|
||||
# heights = [
|
||||
# (label, value, 8 + int((value / peak) * 100) if peak else 8)
|
||||
# for label, value in series
|
||||
# ]
|
||||
#
|
||||
# counts = Counter()
|
||||
# for subj in Entry.objects.exclude(subject="").values_list("subject", flat=True):
|
||||
# for tag in [t.strip() for t in subj.split(",") if t.strip()]:
|
||||
# counts[tag.lower()] += 1
|
||||
# top_subjects = [{"name": n.title(), "count": c} for n, c in counts.most_common(20)]
|
||||
#
|
||||
# return render(
|
||||
# request,
|
||||
# "stats.html",
|
||||
# {
|
||||
# "total": total,
|
||||
# "last30": last30,
|
||||
# "last365": last365,
|
||||
# "series": series,
|
||||
# "heights": heights,
|
||||
# "top_subjects": top_subjects,
|
||||
# },
|
||||
# )
|
||||
|
||||
|
||||
# ========= Scripture Normalizer =========
|
||||
|
||||
Loading…
Reference in New Issue
Block a user