diff --git a/models/Habit.py b/models/Habit.py index 51afaeb..fde259c 100644 --- a/models/Habit.py +++ b/models/Habit.py @@ -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