2021-01-01 17:17:10 +00:00
|
|
|
from django import template
|
|
|
|
|
2024-05-17 13:03:20 +00:00
|
|
|
from datetime import datetime, timedelta
|
2021-01-01 17:17:10 +00:00
|
|
|
from collections import Counter
|
|
|
|
|
|
|
|
register = template.Library()
|
|
|
|
|
2024-05-17 13:03:20 +00:00
|
|
|
|
2021-01-01 17:17:10 +00:00
|
|
|
@register.simple_tag(takes_context=True)
|
|
|
|
def total_dreams(context):
|
|
|
|
return len(context["user"].dream_set.all())
|
|
|
|
|
2024-05-17 13:03:20 +00:00
|
|
|
|
2021-01-01 17:17:10 +00:00
|
|
|
@register.simple_tag(takes_context=True)
|
|
|
|
def weekly_dreams(context):
|
2024-05-17 13:03:20 +00:00
|
|
|
now = datetime.now()
|
|
|
|
start = now - timedelta(days=7)
|
|
|
|
|
|
|
|
return len(
|
|
|
|
context["user"].dream_set.filter(timestamp__gte=start, timestamp__lte=now)
|
|
|
|
)
|
2021-01-01 17:17:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
@register.simple_tag(takes_context=True)
|
|
|
|
def most_common_theme(context, start, end=None):
|
2024-05-17 13:03:20 +00:00
|
|
|
dream_list = context["user"].dream_set.filter(
|
|
|
|
timestamp__gte=start.date(),
|
|
|
|
timestamp__lte=(end.date() if end else start.date()),
|
|
|
|
)
|
2021-01-01 17:17:10 +00:00
|
|
|
themes = list()
|
|
|
|
|
|
|
|
for dream in dream_list:
|
|
|
|
for theme in dream.dreamtheme_set.all():
|
|
|
|
themes.append(theme.theme)
|
|
|
|
|
|
|
|
try:
|
|
|
|
most_common = Counter(themes).most_common(1)[0]
|
|
|
|
return most_common[0], most_common[1]
|
2024-05-17 13:03:20 +00:00
|
|
|
except Exception:
|
2021-01-01 17:17:10 +00:00
|
|
|
return None, None
|
|
|
|
|
2024-05-17 13:03:20 +00:00
|
|
|
|
2021-01-01 17:17:10 +00:00
|
|
|
@register.simple_tag(takes_context=True)
|
|
|
|
def most_common_theme_weekly(context):
|
2024-05-17 13:03:20 +00:00
|
|
|
now = datetime.now()
|
|
|
|
start = now - timedelta(days=7)
|
2021-01-01 17:17:10 +00:00
|
|
|
|
|
|
|
return most_common_theme(context, start, now)
|
|
|
|
|
2024-05-17 13:03:20 +00:00
|
|
|
|
2021-01-01 17:17:10 +00:00
|
|
|
@register.simple_tag(takes_context=True)
|
|
|
|
def special_dreams(context, start, end=None):
|
2024-05-17 13:03:20 +00:00
|
|
|
dream_list = context["user"].dream_set.filter(
|
|
|
|
timestamp__gte=start.date(),
|
|
|
|
timestamp__lte=(end.date() if end else start.date()),
|
|
|
|
)
|
|
|
|
lucid = sum([1 for dream in dream_list if dream.lucid])
|
|
|
|
wet = sum([1 for dream in dream_list if dream.wet])
|
2021-01-01 17:17:10 +00:00
|
|
|
return lucid, wet
|
|
|
|
|
2024-05-17 13:03:20 +00:00
|
|
|
|
2021-01-01 17:17:10 +00:00
|
|
|
@register.simple_tag(takes_context=True)
|
|
|
|
def special_dreams_weekly(context):
|
2024-05-17 13:03:20 +00:00
|
|
|
now = datetime.now()
|
|
|
|
start = now - timedelta(days=7)
|
2021-01-01 17:17:10 +00:00
|
|
|
|
2024-05-17 13:03:20 +00:00
|
|
|
return special_dreams(context, start, now)
|