Update Habit.py
Streak for Daylies was added.
This commit is contained in:
parent
5138e6d25f
commit
bcfb7aaec6
@ -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]:
|
|
||||||
streak += 1
|
|
||||||
for habitdate in trackings[1:]:
|
|
||||||
future_date = habitdate - relativedelta(day=1)
|
|
||||||
if future_date - habitdate == 0-0-1:
|
|
||||||
streak + 1
|
|
||||||
|
|
||||||
|
|
||||||
future_date = habitdate - relativedelta(day=1)
|
|
||||||
|
|
||||||
for habitdate in trackings:
|
|
||||||
current_date = date.today()
|
current_date = date.today()
|
||||||
if current_date == habitdate or current_date == habitdate - relativedelta(day=1):
|
yesterdate = date.today() - timedelta(days=1)
|
||||||
streak += 1
|
|
||||||
|
|
||||||
future_date = habitdate - relativedelta(day=1)
|
if not trackings:
|
||||||
|
return self.streak
|
||||||
|
|
||||||
return streak
|
# 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
|
||||||
|
|
||||||
|
def removeStreak(self):
|
||||||
|
self.streak -= 1
|
||||||
|
return
|
||||||
|
|
||||||
|
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
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user