78 lines
2.5 KiB
Python
Raw Normal View History

2024-02-20 09:58:34 +01:00
from datetime import datetime
2024-01-12 16:53:03 +01:00
from flask_login import UserMixin
from db.SQLiteClient import (create_user, get_user, get_user_by_email, update_user, delete_user,
2024-03-06 11:14:15 +01:00
get_habitLists, get_heatmap_value, update_user_profile)
2024-01-12 10:57:58 +01:00
2024-01-12 16:53:03 +01:00
class User(UserMixin):
def __init__(self, id: int, name: str, email: str, password: str = None, profile_image:str = None):
2024-01-12 10:57:58 +01:00
self.id = id
self.name = name
self.email = email
2024-01-12 16:53:03 +01:00
self.password = password
self.profile_image = profile_image
2024-01-12 10:57:58 +01:00
2024-01-12 10:57:58 +01:00
@staticmethod
def create(name: str, email: str, password: str):
id, profile_image = create_user(name, email, password)
return User(id=id, name=name, email=email, profile_image=profile_image)
2024-01-12 10:57:58 +01:00
@staticmethod
2024-01-12 16:53:03 +01:00
def get(id: int):
2024-01-12 10:57:58 +01:00
user = get_user(id)
return User(user[0], user[1], user[2], user[3], user[4]) if user else None
2024-01-12 16:53:03 +01:00
@staticmethod
def get_by_email(email: str):
user = get_user_by_email(email)
return User(user[0], user[1], user[2], user[3], user[4]) if user else None
2024-02-16 08:11:22 +01:00
# Updates: name, email, password
2024-01-26 10:40:12 +01:00
def update(self):
update_user(self.id, self.name, self.email, self.password if self.password else None)
2024-01-26 08:10:36 +01:00
2024-03-06 11:14:15 +01:00
def update_profile_image(self, profile_image: str):
update_user_profile(self.id, profile_image)
2024-02-16 08:11:22 +01:00
# Deletes the User
2024-01-26 08:10:36 +01:00
def delete(self):
2024-02-16 08:11:22 +01:00
# calls the deletion of the users habitLists
habitLists = self.get_habitLists()
for habitList in habitLists:
habitList.delete(self.id)
2024-02-16 08:11:22 +01:00
# deletes the user
2024-01-26 08:10:36 +01:00
delete_user(self.id)
2024-02-16 08:11:22 +01:00
# Returns all HabitLists connected with the user
def get_habitLists(self) -> list:
2024-02-12 22:31:51 +01:00
from models.HabitList import HabitList
2024-02-12 21:07:55 +01:00
raw_habitLists = get_habitLists(self.id)
habitLists = []
for habitList in raw_habitLists:
2024-02-16 08:11:22 +01:00
habitList = HabitList(habitList[0], habitList[1], habitList[2])
2024-02-12 21:07:55 +01:00
habitLists.append(habitList)
return habitLists
2024-02-14 10:52:25 +01:00
2024-02-16 08:11:22 +01:00
# Returns all heatmap-values from the last 28 days
def get_heatmap(self) -> list:
2024-02-20 10:01:08 +01:00
# get current day of week as integer. monday is 0 and sunday is 6
weekday = datetime.today().weekday()
2024-03-07 15:07:26 +01:00
heatmap = [100]
2024-02-20 09:58:34 +01:00
# append the heatmap values of the current week
for day in range(0, weekday):
heatmap.append(0)
2024-03-07 15:04:29 +01:00
for day in range (0, 28-weekday):
2024-02-14 10:52:25 +01:00
value = get_heatmap_value(self.id, day)
heatmap.append(value)
2024-03-07 15:04:29 +01:00
heatmap.reverse()
2024-02-14 10:52:25 +01:00
return heatmap