fix(stats): Implement attendance for goal card.

This commit is contained in:
2023-09-12 18:32:11 +03:00
parent 004718902c
commit 7dfc720c16

View File

@@ -6,6 +6,7 @@ from meta import LionBot
from gui.cards import WeeklyGoalCard, MonthlyGoalCard from gui.cards import WeeklyGoalCard, MonthlyGoalCard
from gui.base import CardMode from gui.base import CardMode
from tracking.text.data import TextTrackerData from tracking.text.data import TextTrackerData
from modules.schedule.lib import time_to_slotid
from .. import logger from .. import logger
from ..data import StatsData from ..data import StatsData
@@ -81,8 +82,33 @@ async def get_goals_card(
middle_completed = (await model.user_messages_between(userid, start, end))[0] middle_completed = (await model.user_messages_between(userid, start, end))[0]
# Compute schedule session progress # Compute schedule session progress
# TODO attendance = None
sessions_complete = 0.5 schedule_cog = bot.get_cog('ScheduleCog')
if schedule_cog:
booking_model = schedule_cog.data.ScheduleSessionMember
startid = time_to_slotid(start)
endid = time_to_slotid(end)
query = booking_model.table.select_where(
booking_model.slotid >= startid,
booking_model.slotid < endid,
userid=userid
)
if guildid:
query.where(guildid=guildid)
query.select(
_booked='COUNT(*)',
_attended='COUNT(*) FILTER (WHERE attended)',
)
query.with_no_adapter()
records = await query
if records:
record = records[0]
attended = record['_attended']
booked = record['_booked']
if booked:
attendance = attended / booked
# Get member profile # Get member profile
if user: if user:
@@ -105,7 +131,7 @@ async def get_goals_card(
tasks_goal=goals['task_goal'], tasks_goal=goals['task_goal'],
studied_hours=middle_completed, studied_hours=middle_completed,
studied_goal=middle_goal, studied_goal=middle_goal,
attendance=sessions_complete, attendance=attendance,
goals=tasks, goals=tasks,
date=today, date=today,
skin={'mode': mode} skin={'mode': mode}