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
from dataclasses import dataclass
from datetime import datetime
from datetime import date
from datetime import timedelta
from models.HabitTracking import HabitTracking
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
slot: int
percentage: int = 0
streak: int = 0
def __post_init__(self):
self.fill_statistics()
@ -96,32 +99,32 @@ class Habit:
def getStreak(self):
streak = 0
trackings = []
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)
if current_date == tracking[0]:
streak += 1
for habitdate in trackings[1:]:
future_date = habitdate - relativedelta(day=1)
if future_date - habitdate == 0-0-1:
streak + 1
current_date = date.today()
yesterdate = date.today() - timedelta(days=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:
current_date = date.today()
if current_date == habitdate or current_date == habitdate - relativedelta(day=1):
streak += 1
future_date = habitdate - relativedelta(day=1)
return streak
def removeStreak(self):
self.streak -= 1
return
def addStreak(self):
self.streak += 1
return
# Saves the progress of the Habit in the attribute percentage
def fill_statistics(self):
@ -152,11 +155,3 @@ class Habit:
def to_json(self):
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