Update Habit.py

Streak for Daylies was added.
This commit is contained in:
Yapollon 2024-02-20 10:57:45 +01:00
parent 5138e6d25f
commit bcfb7aaec6

View File

@ -1,6 +1,8 @@
import json import json
from dataclasses import dataclass from dataclasses import dataclass
from datetime import datetime from datetime import datetime
from datetime import date
from datetime import timedelta
from models.HabitTracking import HabitTracking from models.HabitTracking import HabitTracking
from db.SQLiteClient import (create_habit, get_habit, update_habit, delete_habit, get_next_slot, get_slots, update_slot, from db.SQLiteClient import (create_habit, get_habit, update_habit, delete_habit, get_next_slot, get_slots, update_slot,
@ -23,6 +25,7 @@ class Habit:
unit: int unit: int
slot: int slot: int
percentage: int = 0 percentage: int = 0
streak: int = 0
def __post_init__(self): def __post_init__(self):
self.fill_statistics() self.fill_statistics()
@ -96,32 +99,32 @@ class Habit:
def getStreak(self): def getStreak(self):
streak = 0
trackings = [] trackings = []
for rawTracking in get_habitTrackings(self.id): for rawTracking in get_habitTrackings(self.id):
trackings.append(HabitTracking(datetime.strptime(rawTracking[2], "%Y-%m-%d"))) trackings.append(datetime.strptime(rawTracking[2], "%Y-%m-%d"))
trackings.sort(reverse=True) trackings.sort(reverse=True)
if current_date == tracking[0]: current_date = date.today()
streak += 1 yesterdate = date.today() - timedelta(days=1)
for habitdate in trackings[1:]:
future_date = habitdate - relativedelta(day=1)
if future_date - habitdate == 0-0-1:
streak + 1
if not trackings:
return self.streak
future_date = habitdate - relativedelta(day=1) # bisherige streak zurückgeben, falls nicht vorhanden bei null starten
if self.streak != 0 and (current_date == trackings[0] or yesterdate == trackings[0]):
return self.streak
else:
self.streak = 0
return self.streak
for habitdate in trackings: def removeStreak(self):
current_date = date.today() self.streak -= 1
if current_date == habitdate or current_date == habitdate - relativedelta(day=1): return
streak += 1
future_date = habitdate - relativedelta(day=1)
return streak
def addStreak(self):
self.streak += 1
return
# Saves the progress of the Habit in the attribute percentage # Saves the progress of the Habit in the attribute percentage
def fill_statistics(self): def fill_statistics(self):
@ -152,11 +155,3 @@ class Habit:
def to_json(self): def to_json(self):
return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4) return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4)
def habit_list(self):
from models.HabitList import HabitList
raw_habitLists = get_habitList(self.list_id)
return HabitList(raw_habitLists[0], raw_habitLists[1], raw_habitLists[2],
datetime.strptime(raw_habitLists[3], "%Y-%m-%dT%H:%M:%S.%f"),
datetime.strptime(raw_habitLists[4], "%Y-%m-%dT%H:%M:%S.%f")) \
if raw_habitLists else None