From 3a86eb38025c2a1bbac93c8aa240327c5a33bbe0 Mon Sep 17 00:00:00 2001 From: nikolaswollenberg Date: Tue, 13 Feb 2024 11:15:19 +0100 Subject: [PATCH 01/16] spacing udn cards --- templates/index.html | 507 ++++++++++++++++++++++--------------------- 1 file changed, 257 insertions(+), 250 deletions(-) diff --git a/templates/index.html b/templates/index.html index 793795f..caaf011 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,266 +1,273 @@ {% extends 'layouts/main.html' %} {% block content %} -

{{ title }}

-

{{ utc_dt }}

+

{{ title }}

+

{{ utc_dt }}

- + .day { + width: 50px; + height: 50px; + border: 1px solid #ccc; + display: flex; + align-items: center; + justify-content: center; + } + +
-
- -
+
+
+
Heatmap
- - - -
-
-

Gewohnheiten

- Neue Liste erstellen -
- - {% for habit_list in habit_lists %} - -
-

{{ habit_list.name }}

- Gewohnheit erstellen -
- -
    - {% for habit in habit_list.habits %} -
  • -
    - -
    -
    - -
    - -
    - {{ habit.name }} -
    - -
    - {{ habit.note }} -
    - -
    - {% if habit %} - 5 🔥 - {% endif %} - -
    - - -
    -
    -
    -
    -
    -
  • - - {% endfor %} -
- - {% endfor %} -
- - - - - - -
+ + +
+
+

Gewohnheiten

+ Neue Liste erstellen +
+ + {% for habit_list in habit_lists %} + +
+

{{ habit_list.name }}

+ Gewohnheit + erstellen +
+ +
    + {% for habit in habit_list.habits %} +
  • +
    + +
    +
    + +
    + +
    + {{ habit.name }} +
    + +
    + + {{ habit.note }} + +
    + +
    + {% if habit %} + + {% else %} + 5 🔥 + {% endif %} + +
    + + +
    +
    +
    +
    +
    +
  • + + {% endfor %} +
+ + {% endfor %} +
+ + + + + + + +
+ + {% endblock %} \ No newline at end of file From ce0a6b588b5029c1d27d439721f030a5462ec1d9 Mon Sep 17 00:00:00 2001 From: nikolaswollenberg Date: Wed, 14 Feb 2024 11:15:37 +0100 Subject: [PATCH 02/16] gap for spacing and heatmap but unfinished --- app.py | 1 + models/User.py | 2 +- templates/index.html | 245 ++++++++++++++++++++++--------------------- 3 files changed, 127 insertions(+), 121 deletions(-) diff --git a/app.py b/app.py index 5419869..3f68c80 100644 --- a/app.py +++ b/app.py @@ -136,6 +136,7 @@ def index(): title=name, utc_dt=datetime.datetime.now().strftime("%d.%m.%Y %H:%M %A"), habit_lists=habit_lists, + heatmap_values=current_user.get_heatmap(), errors={}, ) diff --git a/models/User.py b/models/User.py index 13f9f72..317843b 100644 --- a/models/User.py +++ b/models/User.py @@ -46,7 +46,7 @@ class User(UserMixin): def get_heatmap(self): heatmap = [] - for day in range (0, 27): + for day in range(0, 28): value = get_heatmap_value(self.id, day) heatmap.append(value) return heatmap \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index e3a58d3..76ced99 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,43 +1,40 @@ {% extends 'layouts/main.html' %} {% block content %} -

{{ title }}

-

{{ utc_dt }}

+

{{ title }}

+

{{ utc_dt }}

- + .day { + width: 50px; + height: 50px; + border: 1px solid #ccc; + display: flex; + align-items: center; + justify-content: center; + } + -
- -
-
+
+
+
+
+
Heatmap
+
+
-
-
+ +
+ {% for habit_list in habit_lists %} -
-

{{ habit_list.name }}

- Gewohnheit erstellen -
+
+

{{ habit_list.name }}

+ Gewohnheit + erstellen +
-
    - {% for habit in habit_list.habits %} -
  • -
    - -
    -
    - -
    +
      + {% for habit in habit_list.habits %} +
    • +
      + +
      +
      + +
      -
      - {{ habit.name }} -
      +
      + {{ habit.name }} +
      -
      - {{ habit.note }} -
      +
      + {{ habit.note }} -
      - {% if habit %} - 5 🔥 - {% endif %} +
      -
      +
      + {% if habit %} - -
      -
      -
      -
      -
      -
    • + {% else %} + 5 🔥 + {% endif %} - {% endfor %} -
    +
+ + +
+
+
+
+
+ + + {% endfor %} + {% endfor %}
@@ -176,17 +180,17 @@ var progressBar = document.getElementById("progress-bar-" + habitId); var habitBlock = document.getElementById("habit-" + habitId); - if (percentage == 100) { - progressBar.style.backgroundColor = "green"; - habitBlock.classList.add("animate-bounce"); - setTimeout(function () { + if (percentage == 100) { + progressBar.style.backgroundColor = "green"; + habitBlock.classList.add("animate-bounce"); + setTimeout(function () { + habitBlock.classList.remove("animate-bounce"); + }, 2000); + } else { + progressBar.style.backgroundColor = ""; habitBlock.classList.remove("animate-bounce"); - }, 2000); - } else { - progressBar.style.backgroundColor = ""; - habitBlock.classList.remove("animate-bounce"); + } } - } function sendPostRequest(checkboxId) { // Get the checkbox element using the provided ID @@ -205,16 +209,16 @@ // Handle the success response if needed console.log(response.data); - // Set the percentage of the habit. percentage received as integer - var percentage = response.data.percentage; - var progressBar = document.getElementById("progress-bar-" + habitId); - progressBar.style.width = percentage + "%"; - checkCompletionAndAnimate(habitId, percentage); - }).catch(function (error) { - // Handle the error if needed - console.error('Error:', error); - }); - } + // Set the percentage of the habit. percentage received as integer + var percentage = response.data.percentage; + var progressBar = document.getElementById("progress-bar-" + habitId); + progressBar.style.width = percentage + "%"; + checkCompletionAndAnimate(habitId, percentage); + }).catch(function (error) { + // Handle the error if needed + console.error('Error:', error); + }); + } function deleteHabit(habitId) { // Make a POST request to /delete with the habit id @@ -237,30 +241,31 @@ }
+
- + }); + {% endblock %} \ No newline at end of file From bad718289e98efb730a36f494f6a716e0b4c067f Mon Sep 17 00:00:00 2001 From: Yapollon Date: Fri, 16 Feb 2024 08:11:22 +0100 Subject: [PATCH 03/16] Fixing --- db/SQLiteClient.py | 8 +++---- models/Habit.py | 51 ++++++++++++++++++++++++++------------------- models/HabitList.py | 3 +-- models/User.py | 17 ++++++++++----- 4 files changed, 46 insertions(+), 33 deletions(-) diff --git a/db/SQLiteClient.py b/db/SQLiteClient.py index 390c94d..d557bc2 100644 --- a/db/SQLiteClient.py +++ b/db/SQLiteClient.py @@ -8,7 +8,7 @@ def con3(): return conn -### User.py ### +### User ### def create_user(name: str, email: str, password: str): password = hashlib.sha256(password.encode()).hexdigest() now = datetime.now().isoformat() @@ -42,7 +42,7 @@ def get_user_by_email(email: str): return user -def update_user(id: int, name: str, email: str, password: str = None): +def update_user(id: int, name: str, email: str, password: str): now = datetime.now().isoformat() if password: query = (f"UPDATE users SET name = '{name}', email = '{email}', password = '{password}', updated_at = '{now}' " @@ -67,8 +67,8 @@ def delete_user(id: int): return cursor.lastrowid -### Habit.py ### -def create_habit(list_id: int, name: str, times: int, unit: int, slot: int, note: str | None=None): +### Habit ### +def create_habit(list_id: int, name: str, note: str, times: int, unit: int, slot: int): now = datetime.now().isoformat() query = (f"INSERT INTO habits (list_id, name, note, times, unit, slot, created_at, updated_at) " f"VALUES ('{list_id}', '{name}', '{note}', '{times}', '{unit}', '{slot}', '{now}', '{now}');") diff --git a/models/Habit.py b/models/Habit.py index 35faf65..24836e5 100644 --- a/models/Habit.py +++ b/models/Habit.py @@ -7,11 +7,11 @@ from db.SQLiteClient import (create_habit, get_habit, update_habit, delete_habit get_habitTrackings_by_habit_id, get_habitList) -# Unit wird als Integer wie folgt gemessen: -# 0: Tag -# 1: Woche (Default) -# 2: Monat -# 3: Jahr +# unit will be represented by integers like this: +# 0: day +# 1: week (default) +# 2: month +# 3: year @dataclass class Habit: @@ -28,9 +28,9 @@ class Habit: self.fill_statistics() @staticmethod - def create(list_id: int, name: str, times: int, note: str | None = None, unit: int | None = 1): + def create(list_id: int, name: str, times: int, note: str = None, unit: int = 1): slot = get_next_slot(list_id) - id = create_habit(list_id, name, times, unit, slot, note) + id = create_habit(list_id, name, note, times, unit, slot) return Habit(id, list_id, name, note, times, unit, slot) @staticmethod @@ -38,46 +38,52 @@ class Habit: habit = get_habit(id) return Habit(habit[0], habit[1], habit[2], habit[3], habit[4], habit[5], habit[6]) if habit else None - def update(self, name: str=None, note: str=None, times: int=None, unit: int=None): - update_habit(self.id, name, note, times, unit) - if name is not None: - self.name = name - if note is not None: - self.note = note - if times is not None: - self.times = times - if unit is not None: - self.unit = unit + + def update(self): + update_habit(self.id, self.name, self.note, self.times, self.unit) + def update_slot(self, new_slot: int): + # Fetches a list with the following structure [(id, slot), (id, slot), ...] slots = get_slots(self.list_id) - if new_slot > self.slot: - slots = slots[self.slot:new_slot] + + # Splits the list depending on whether the new slot is higher or lower than the current one + if new_slot > self.slot: # Example self.slot=1 new_slot=4 + slots = slots[self.slot:new_slot] # Expected list: [(id, 2), (id, 3), (id, 4)] for slot in slots: update_slot(slot[0], slot[1]-1) - if new_slot < self.slot: - slots = slots[new_slot-1:self.slot-1] + if new_slot < self.slot: # Example self.slot=4 new_slot=1 + slots = slots[new_slot-1:self.slot-1] # Expected list: [(id, 1), (id, 2), (id, 3)] for slot in slots: update_slot(slot[0], slot[1]+1) + + # Update the slot of the current habit update_slot(self.id, new_slot) + def delete(self): + # Deletes the current habit slots = get_slots(self.list_id)[self.slot+1:] for slot in slots: update_slot(slot[0], slot[1] - 1) + + # Deletes the current habit delete_habit(self.id) + def get_habitTrackings(self) -> list: trackings = [] for rawTracking in get_habitTrackings_by_habit_id(self.id): trackings.append(HabitTrackings(rawTracking[0], rawTracking[1])) return trackings - def habit_list(self): + + def habit_list(self) -> list: from models.HabitList import HabitList raw_habitLists = get_habitList(self.list_id) return HabitList(raw_habitLists[0], raw_habitLists[1], raw_habitLists[2]) if raw_habitLists else None + def fill_statistics(self): count = 0 self.checked = False @@ -104,5 +110,6 @@ class Habit: self.percentage = int(count / self.times * 100) + def to_json(self): return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4) diff --git a/models/HabitList.py b/models/HabitList.py index 64fa292..bf3525c 100644 --- a/models/HabitList.py +++ b/models/HabitList.py @@ -1,5 +1,4 @@ from dataclasses import dataclass -from datetime import datetime from models.Habit import Habit from models.User import User @@ -22,7 +21,7 @@ class HabitList: @staticmethod def get(id: int): habitList = get_habitList(id) - return HabitList(habitList[0], habitList[1], habitList[2], datetime.strptime(habitList[3], "%Y-%m-%dT%H:%M:%S.%f"), datetime.strptime(habitList[4], "%Y-%m-%dT%H:%M:%S.%f")) if habitList else None + return HabitList(habitList[0], habitList[1], habitList[2]) if habitList else None def get_habits(self) -> list: raw_habits = get_habits(self.id) diff --git a/models/User.py b/models/User.py index e058fc3..423c6b8 100644 --- a/models/User.py +++ b/models/User.py @@ -1,12 +1,10 @@ -from datetime import datetime - from flask_login import UserMixin from db.SQLiteClient import (create_user, get_user, get_user_by_email, update_user, delete_user, get_habitLists, get_heatmap_value) class User(UserMixin): - def __init__(self, id: int, name: str, email: str, password: str | None = None): + def __init__(self, id: int, name: str, email: str, password: str = None): self.id = id self.name = name self.email = email @@ -27,29 +25,38 @@ class User(UserMixin): user = get_user_by_email(email) return User(user[0], user[1], user[2], user[3]) if user else None + def update(self): update_user(self.id, self.name, self.email, self.password if self.password else None) + def delete(self): + # calls the deletion of the users habitLists habitLists = self.get_habitLists() for habitList in habitLists: habitList.delete(self.id) + + # deletes the user delete_user(self.id) + + # returns all habitLists assigned with the user def get_habitLists(self) -> list: from models.HabitList import HabitList raw_habitLists = get_habitLists(self.id) habitLists = [] for habitList in raw_habitLists: - habitList = HabitList(habitList[0], habitList[1], habitList[2], datetime.strptime(habitList[3], "%Y-%m-%dT%H:%M:%S.%f"), datetime.strptime(habitList[4], "%Y-%m-%dT%H:%M:%S.%f")) + habitList = HabitList(habitList[0], habitList[1], habitList[2]) habitLists.append(habitList) return habitLists + + # return the heatmap-values of the last 28 days def get_heatmap(self) -> list: heatmap = [] - for day in range (0, 27): + for day in range (0, 28): value = get_heatmap_value(self.id, day) heatmap.append(value) return heatmap \ No newline at end of file From 91252a598b42736ec5713423b60119f378947992 Mon Sep 17 00:00:00 2001 From: Yapollon Date: Fri, 16 Feb 2024 08:11:25 +0100 Subject: [PATCH 04/16] Create UML.dia.autosave --- UML.dia.autosave | Bin 0 -> 2378 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 UML.dia.autosave diff --git a/UML.dia.autosave b/UML.dia.autosave new file mode 100644 index 0000000000000000000000000000000000000000..c94e3e4a83b0257c9e4f33aca6519ac1cda24f50 GIT binary patch literal 2378 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 literal 0 HcmV?d00001 From 7600bd8f2c8e6eb78533bdf773c4a30f6c38b98a Mon Sep 17 00:00:00 2001 From: Yapollon Date: Fri, 16 Feb 2024 08:11:22 +0100 Subject: [PATCH 05/16] Fixing --- db/SQLiteClient.py | 8 +++---- models/Habit.py | 51 ++++++++++++++++++++++++++------------------- models/HabitList.py | 3 +-- models/User.py | 17 ++++++++++----- 4 files changed, 46 insertions(+), 33 deletions(-) diff --git a/db/SQLiteClient.py b/db/SQLiteClient.py index 390c94d..d557bc2 100644 --- a/db/SQLiteClient.py +++ b/db/SQLiteClient.py @@ -8,7 +8,7 @@ def con3(): return conn -### User.py ### +### User ### def create_user(name: str, email: str, password: str): password = hashlib.sha256(password.encode()).hexdigest() now = datetime.now().isoformat() @@ -42,7 +42,7 @@ def get_user_by_email(email: str): return user -def update_user(id: int, name: str, email: str, password: str = None): +def update_user(id: int, name: str, email: str, password: str): now = datetime.now().isoformat() if password: query = (f"UPDATE users SET name = '{name}', email = '{email}', password = '{password}', updated_at = '{now}' " @@ -67,8 +67,8 @@ def delete_user(id: int): return cursor.lastrowid -### Habit.py ### -def create_habit(list_id: int, name: str, times: int, unit: int, slot: int, note: str | None=None): +### Habit ### +def create_habit(list_id: int, name: str, note: str, times: int, unit: int, slot: int): now = datetime.now().isoformat() query = (f"INSERT INTO habits (list_id, name, note, times, unit, slot, created_at, updated_at) " f"VALUES ('{list_id}', '{name}', '{note}', '{times}', '{unit}', '{slot}', '{now}', '{now}');") diff --git a/models/Habit.py b/models/Habit.py index 35faf65..24836e5 100644 --- a/models/Habit.py +++ b/models/Habit.py @@ -7,11 +7,11 @@ from db.SQLiteClient import (create_habit, get_habit, update_habit, delete_habit get_habitTrackings_by_habit_id, get_habitList) -# Unit wird als Integer wie folgt gemessen: -# 0: Tag -# 1: Woche (Default) -# 2: Monat -# 3: Jahr +# unit will be represented by integers like this: +# 0: day +# 1: week (default) +# 2: month +# 3: year @dataclass class Habit: @@ -28,9 +28,9 @@ class Habit: self.fill_statistics() @staticmethod - def create(list_id: int, name: str, times: int, note: str | None = None, unit: int | None = 1): + def create(list_id: int, name: str, times: int, note: str = None, unit: int = 1): slot = get_next_slot(list_id) - id = create_habit(list_id, name, times, unit, slot, note) + id = create_habit(list_id, name, note, times, unit, slot) return Habit(id, list_id, name, note, times, unit, slot) @staticmethod @@ -38,46 +38,52 @@ class Habit: habit = get_habit(id) return Habit(habit[0], habit[1], habit[2], habit[3], habit[4], habit[5], habit[6]) if habit else None - def update(self, name: str=None, note: str=None, times: int=None, unit: int=None): - update_habit(self.id, name, note, times, unit) - if name is not None: - self.name = name - if note is not None: - self.note = note - if times is not None: - self.times = times - if unit is not None: - self.unit = unit + + def update(self): + update_habit(self.id, self.name, self.note, self.times, self.unit) + def update_slot(self, new_slot: int): + # Fetches a list with the following structure [(id, slot), (id, slot), ...] slots = get_slots(self.list_id) - if new_slot > self.slot: - slots = slots[self.slot:new_slot] + + # Splits the list depending on whether the new slot is higher or lower than the current one + if new_slot > self.slot: # Example self.slot=1 new_slot=4 + slots = slots[self.slot:new_slot] # Expected list: [(id, 2), (id, 3), (id, 4)] for slot in slots: update_slot(slot[0], slot[1]-1) - if new_slot < self.slot: - slots = slots[new_slot-1:self.slot-1] + if new_slot < self.slot: # Example self.slot=4 new_slot=1 + slots = slots[new_slot-1:self.slot-1] # Expected list: [(id, 1), (id, 2), (id, 3)] for slot in slots: update_slot(slot[0], slot[1]+1) + + # Update the slot of the current habit update_slot(self.id, new_slot) + def delete(self): + # Deletes the current habit slots = get_slots(self.list_id)[self.slot+1:] for slot in slots: update_slot(slot[0], slot[1] - 1) + + # Deletes the current habit delete_habit(self.id) + def get_habitTrackings(self) -> list: trackings = [] for rawTracking in get_habitTrackings_by_habit_id(self.id): trackings.append(HabitTrackings(rawTracking[0], rawTracking[1])) return trackings - def habit_list(self): + + def habit_list(self) -> list: from models.HabitList import HabitList raw_habitLists = get_habitList(self.list_id) return HabitList(raw_habitLists[0], raw_habitLists[1], raw_habitLists[2]) if raw_habitLists else None + def fill_statistics(self): count = 0 self.checked = False @@ -104,5 +110,6 @@ class Habit: self.percentage = int(count / self.times * 100) + def to_json(self): return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4) diff --git a/models/HabitList.py b/models/HabitList.py index 64fa292..bf3525c 100644 --- a/models/HabitList.py +++ b/models/HabitList.py @@ -1,5 +1,4 @@ from dataclasses import dataclass -from datetime import datetime from models.Habit import Habit from models.User import User @@ -22,7 +21,7 @@ class HabitList: @staticmethod def get(id: int): habitList = get_habitList(id) - return HabitList(habitList[0], habitList[1], habitList[2], datetime.strptime(habitList[3], "%Y-%m-%dT%H:%M:%S.%f"), datetime.strptime(habitList[4], "%Y-%m-%dT%H:%M:%S.%f")) if habitList else None + return HabitList(habitList[0], habitList[1], habitList[2]) if habitList else None def get_habits(self) -> list: raw_habits = get_habits(self.id) diff --git a/models/User.py b/models/User.py index e058fc3..423c6b8 100644 --- a/models/User.py +++ b/models/User.py @@ -1,12 +1,10 @@ -from datetime import datetime - from flask_login import UserMixin from db.SQLiteClient import (create_user, get_user, get_user_by_email, update_user, delete_user, get_habitLists, get_heatmap_value) class User(UserMixin): - def __init__(self, id: int, name: str, email: str, password: str | None = None): + def __init__(self, id: int, name: str, email: str, password: str = None): self.id = id self.name = name self.email = email @@ -27,29 +25,38 @@ class User(UserMixin): user = get_user_by_email(email) return User(user[0], user[1], user[2], user[3]) if user else None + def update(self): update_user(self.id, self.name, self.email, self.password if self.password else None) + def delete(self): + # calls the deletion of the users habitLists habitLists = self.get_habitLists() for habitList in habitLists: habitList.delete(self.id) + + # deletes the user delete_user(self.id) + + # returns all habitLists assigned with the user def get_habitLists(self) -> list: from models.HabitList import HabitList raw_habitLists = get_habitLists(self.id) habitLists = [] for habitList in raw_habitLists: - habitList = HabitList(habitList[0], habitList[1], habitList[2], datetime.strptime(habitList[3], "%Y-%m-%dT%H:%M:%S.%f"), datetime.strptime(habitList[4], "%Y-%m-%dT%H:%M:%S.%f")) + habitList = HabitList(habitList[0], habitList[1], habitList[2]) habitLists.append(habitList) return habitLists + + # return the heatmap-values of the last 28 days def get_heatmap(self) -> list: heatmap = [] - for day in range (0, 27): + for day in range (0, 28): value = get_heatmap_value(self.id, day) heatmap.append(value) return heatmap \ No newline at end of file From 18b63ba9a55587de14eabc21be938e5a34316c7c Mon Sep 17 00:00:00 2001 From: Yapollon Date: Fri, 16 Feb 2024 08:11:25 +0100 Subject: [PATCH 06/16] Create UML.dia.autosave --- UML.dia.autosave | Bin 0 -> 2378 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 UML.dia.autosave diff --git a/UML.dia.autosave b/UML.dia.autosave new file mode 100644 index 0000000000000000000000000000000000000000..c94e3e4a83b0257c9e4f33aca6519ac1cda24f50 GIT binary patch literal 2378 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 literal 0 HcmV?d00001 From 5c0a2b588644b4d8ad6148c2582a551d770f4261 Mon Sep 17 00:00:00 2001 From: nikolaswollenberg Date: Fri, 16 Feb 2024 09:25:31 +0100 Subject: [PATCH 07/16] card Tabs --- templates/index.html | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/templates/index.html b/templates/index.html index 76ced99..489a930 100644 --- a/templates/index.html +++ b/templates/index.html @@ -10,6 +10,8 @@ display: grid; grid-template-columns: repeat(7, 0fr); /* 7 Tage in einer Woche */ gap: 5px; + width: 100%; + table-layout: fixed; } .day { @@ -19,12 +21,13 @@ display: flex; align-items: center; justify-content: center; + table-layout: fixed; }
-
+
Heatmap
@@ -34,7 +37,7 @@ -
-
+
+

Gewohnheiten

Neue Liste erstellen
+ +
+ +
+ +
+
Special title treatment
+

+ With supporting text below as a natural lead-in to additional content. +

+
+ + {% for habit_list in habit_lists %}
@@ -268,4 +297,6 @@ }); }); + + {% endblock %} \ No newline at end of file From 311d568525a3ff9167d659033820cc6db9a44f2f Mon Sep 17 00:00:00 2001 From: Yapollon Date: Fri, 16 Feb 2024 17:10:55 +0100 Subject: [PATCH 08/16] New UML and ER hope this is good, also i just lost all my changes from my previous work on this so I'm pretty depressed right now, anyway still got this,... great. --- ER.dia | Bin 4463 -> 4461 bytes ER.png | Bin 38743 -> 97619 bytes UML.dia | Bin 2333 -> 2922 bytes UML.dia.autosave | Bin 2378 -> 0 bytes UML.png | Bin 20979 -> 44232 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 UML.dia.autosave diff --git a/ER.dia b/ER.dia index 2e41641d445d2686fa5747c81bf3d3e57f7eae17..5d00e0b2b9f22fa122f1f7c5d741453dde962494 100644 GIT binary patch literal 4461 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 literal 4463 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 B!?^$e diff --git a/ER.png b/ER.png index 77f8f50dba3c8fa3656bf0937a23d2fe5cc60538..49ebe6ebb0b8d9c1486b545d938e4ba3318cdbee 100644 GIT binary patch literal 97619 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 EU$L$iQvd(} literal 38743 zcmb5W1yojVw>`Qgr8@-)36Tz^QyK&WNkLjbk?s!ZkQM|%qy?l?LP1Iq1f--(L`mts z3q9wabI%$7JI4R{9It%*@MZ7)JZr7F=A7$|&`?vr!=}bY5Cl(2QC1T{P&(o3h07@L zinSxB27h6gsVK-I=NJEb)m)H>AoPfmtn@vPjMbO!hKafpUFu`rq0NGovQl!FsId7s z3QOzdA|v0Cy)mib`i31|TBDY0&=Fbh5b!CqP=n*LX<2zZ*=54ZmlB%%C!ajHiYe3m zar;!ve@D1s!}%@!KF`q!pmqVRH!lX#jsAF<>#}AU7Z;o4(VEmkYzlj zCdCdpsf&(|4hjltYHG^J$f&KY&HTHvv$HEJ`Ie{Ao=&}bl^Y-hZ-l(c&b}1aW-D9fp7>S*56k-4X)c~9ov&t@fSgfN^5#j!9<@z?sbn%U#& zxnqOIqc;YPjb4~ty%8^NJ|3yG{0tY%!O6KIN)u;;`tLU}C#0ueA%WjRr#=%yNJ5nH zq)?(?c1TmbL+|$7?Unb4QFHK84DI>7n#CkR^11KVNpJAI&CjnjZ4V6yK*YtHi^@>u zi2vSc9CvtpeEithSYct|;Gm|3th#pJm+vO=$t^`GuMtVQ-zisVsM!i_?(~(ZaTc!7 z<06R0^`yi^Ek(ud`Hm?4IN@g!md-=%L77giEiQr6o+|)b$ zQT2YrRJ?{wnaUO72g%IKqj8}M2%@8-V`^#&kKZ;HtKm10=;7s+DdFqY8BLWDgWblXp$Qw-?ULWxDk&r+ zBqBnMyb4XhKI)vFaKq5mmQPTSKljM=7v92)mnA16!otD9!N#6nFgL}$Y z$jG;c$G5Lk-5>nsLFxB9!ATJ*}BrVN?`FA7u z#Fdnkwsv=!2`_h2W8b|m9`kJ=BlhQZF2(#_SJV4_JZdT`W)_yVZTcqkfByilr?1b= z-JLaF@v1ZKwOj9^u(6y(UPlZ@Zs45k-t{yOOGzQe2p;(Qb=E~TE&_!a9StQ=Rq)Xx zc%rsm-rl-GFS2&r7v6k|h~VK7Xks|ABYOMg+cyDjZgo}F=piC$7PJz7*o!zD^fc86 z4NjK!_GRfcAGTuNiWRUT$ULJAucS|D8H=%jL8J4snpzlY+Vy{ruX?^WjUOEyof>

A%C-bDh;{i0F_ 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

+)E`t{=Z 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 diff --git a/UML.dia b/UML.dia index fd384877159a0e45e4098fdd8743bf5a420c6295..f13573d344952ec569ec65417efa0f086e683746 100644 GIT binary patch literal 2922 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 A2mk;8 literal 2333 zcmV+&3F7u2iwFP!000023+-K9Z{kK5zTaPAu{V9Ctg($hn&Md ziJ7jksXZi%RQ0!a41{2eG5&%;9;9p*GM>jXe$F{_&K%Bs_x;ytC_U07WpQ*jP-SHx z(a4K^76o^M&%gil!5(~n|L!}Vk#EIMkdUb)u87j?-Q8fq`Rv=_@agGE4i_omaUzFo zE~j+(F9}036pe<1`*)JG-GNUy$v#_uN;ps0c+RO5ktw|!jEVOpNaA_q4_2+#?YuaQ z6X}tJcZ2s2%hzDI?q-E(&}eByrXX}VUuFM8_zk)>=L(tUT&BHmf|i*CB# zeL73+{c?FrHmrIpH4nZ`4QkXk55b)IG_9anzD-F_lXbIU)vWKfJ9c7LAMF_HB}7OT zG+B55Q9L@D1W9J6rS%hDs~m}VoIO6j+nSVk{1^53dbFQ^{v>^nehf*P4qjFuV*SDV zyTPwYeyVl{CwdZEurOD%_=QliZQK~LYV1xxQGJvFjK{nEC*t-=6ohnxkwM&!6j{}7 znnKZ#PF*ifqT=G9yYVbRmRh7Zrj3=dWleRqUoEgElm!!B4(7wi5< zu2=6Qe)SWNd*=mQuNf6{0+nqj;g{-J8!1Bwe5s5Lyz||Jm#sgu|5o2ZN`xwVMz=TcA8GhVIrGSe|Hq-<@?kW+ zo#NfJ(?{n)-;#;S^`o-8epK{sXm~p0oCux{HqWt2T(wh5_XW32+#{yabn-8=;UG(w zhP%G~d>U>V7sDWxLEs&afcYh1-~+LfGE0|tY>H43?+i;!{`??VXGlelsz0pds+xt2 zFZRLFXg*!DZaZXCA7+mecVyVK!SrP^>!x13pBs(g_J*KNBs1CHPbM|1-w+%K&gBaZ zoe~y8av(X7oSKp|6GM866Cc6@;khQ^skM<-8V24Ydz;4XWv_Jar^)>8-2>{6p;bVg zj_pL^a7qb3rRcF}LKDVGVA!HhVpgmr z!A)@UaAW}F1Ub)0&PwOIe|}2;NWa7pJr7NLL4Gq-?Jl0wp-<~2lyC~K7G5p9T6nc^ zAFx7$`v7u+oLA~TfS>RgTKfzE<=5;mRJqvj8{jv z^YeGDDx4 z)e-MiM|MoR*K(bm4DzU=otkWqwyOeZJr?a$4SD2rP$BeC(aw)#%s8rcqG~6qcA{!$ zW2r>dP6<^zyB`CpcA{!0s&=AkC#rU$YA338q6!pBsP!x}^Hewrrxl!UGE9m2|APcU zf-YZzQ1=#s1How`I5CIdKyV;9bp?mBDNW((Kx`m3wOpNuao8IO4g{yB;G|*9VQwHb zS0go-P+z?~P3H=-t-Bo@Qm&D5jg)JoTqEWBRaW|{+F}AX!A+F!1UJFW8v7&QCb)S< zZXVu(fJFy0&$ik;6y?84Vya-~MKJSV7#%7T#6$&E*gd+yw++AO=7BmG-UwzybBn3%ddk7aCMa-;wm)Gqyg&Kh~xV>dc$dw;9q_sY5NR<`E&~G$H zHZ0ZX^ROXBc8oQWrW&`VC0ir$eq_kHruKW-P#1$d>aZbGHtinI7cyikU*X&C>3pHX z{yGjC!a+kgXb1-l;h-TLG=zhOaL^DA8p1(CIA~};E)E(xFi0FUgmS1Thk6l3gqPd+ zE+hw%1Iei;Ii9ebocb;~T@mh1zorf0f$&^(74A2de1^?lZ1&>29H`5UZ*g4r*K8|2 zGLRGGJQq2SaC-Wr=RpSu{KQw_@D(`Zm&08^Zsx7YYu#qJroF;#OqHWKTsq2P)9f~v zcd1`Ge>J5Jft4KsTb(fYaE`vwmc6PbG@xzWXqs%NR}bA=TCUkSu6&|8Dh0`~(S^-oN_~bI$}Q`2zs} DN^ywZ diff --git a/UML.dia.autosave b/UML.dia.autosave deleted file mode 100644 index c94e3e4a83b0257c9e4f33aca6519ac1cda24f50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2378 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 diff --git a/UML.png b/UML.png index 1770aa73ee803d0dfa8dbd86dd0ffdddee6091de..60d2c2d944c50b334efc2613b1de33f2b273ae13 100644 GIT binary patch literal 44232 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 T)(xrQTa1I9>ml~RuYdd-+@&+~ literal 20979 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

c6>%U2-C5!F9kikrRJ@X;{6V3wNBzvrFQ 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 Date: Fri, 16 Feb 2024 17:30:27 +0100 Subject: [PATCH 09/16] updated URL found a small issue --- UML.dia | Bin 2922 -> 2921 bytes UML.png | Bin 44232 -> 44116 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/UML.dia b/UML.dia index f13573d344952ec569ec65417efa0f086e683746..54da21e7af9eb0e4412ed8e642899efe03dc31a1 100644 GIT binary patch literal 2921 zcmZuxXEYlO8#P+7qo}@CXsDuQ5>!#6qDo1vqGpv;ZStD6YgK9l9lUn!-5~a;8JonY z&>F2-t3rZOUwhs^-*?XU+;i?Te%^bYD}-jG`BQW(+cx^1UvF}@Q>*3XXX^6bN8l7`&&e1x$KxL#8(R* zN($^UDT={68UJMrK~Sh@`G1T``M43gx6fU|Z0!iEfR-k98)u2QOfGpR?@M>L4eGuy znxG7brvJ$ATO<74`UAeCo_M8_yWnflTx-!!N^`ufUVMyYR9;fe7qxw__aS%0n-H$8 z*OMq+-YW@um)5#`BBYy^jSW9cY9Ku{M-@j#_h0t+)EPtU18-VkcCD<@T>WCSOSLdbG9HOWPn9dPPJjzzP`Prg%C zYyDZx^52D4UL7)n!TOSl#4xjl#Q0MD)`2}LRw)fC9O0NWw$S#8`}Q%K!KaqwdEP1% z%zFyLzyx^Eb%G#GRFfJYBGpTT%8((a56Gjx#t(h1)z)0TZtg^dboN__~bC!l4V@-^(c^diQUY4O!1Q zMK{6}ZgB7CP7;C0g3ffSzPdvs+0$>pTt@y-gb#ssYkJ~TEEpq7+-P6>yuoHEofo<5 zJ2Fn~c*SG?^S0T&@k*suC{QZC>=FgRx_MRi z-p`-A!U`uuUP}qvg?=^qw2y?fWiC(EeSJTp8J5TO8uY%ZNx2!@a;ckqb+>f!*q-WC zK~mT?E%+JvT%z&1+sdc8b3P?&$5PjKz=JDfXO+ePG2=jRCYsU0!bdFln{eSUVH=v02Bf8;!9553)|X?*<2!09`Ns5al518qtXIvk0WpIsDv4ES4V&MU zVjt4b-zev-nDkVwwE(H%)=lJY1mDApIg*bCXrj2fj^n#5d4uiBf`6g=xgjJ|ofZ|{ zO}Te$7p|p%GvPPUUOY=u%M6XkIDX+w4#OU{WJC{ZY=f`f$~6G%i*xowhUPea4kcla z&L?sfZAr+((*eRRB@6ye{Wm&*kAHc=Xhn{85*EQsvPa&R+(2$$u8~^5H)w*cCWzzd zztQf~1j3j*o;r4YQ`2_}Di!4{?TygY5EV`deHq26e4WYSf)pK36O5&Ava>4Z#I`}#~Zz1k_C4IMdkNvnk`Tm7NAzDF;8aP(=l+o5dYPtiWO z|Dk>766sI1qmIS>x48lF^u3yb&f@Ic#bLcmoWHk-S54?(G0qU3r}@;Vn5&3&If;jiygO^wW^jYRTJ3=~){oJ1Fbreg_gBN2zA1}ND2(Q^pzAr$tOvAAzC4|*q z+DyI}lHoNSSeY<~}%Y8(3)h*6ZNYWS~Ln z1dR9p6Yy*PvwaLa{~6@OG#Am^vi<`bY7HETSk*vfOm?$`__U8YWFhgIfw`)?&1!_+ zjt?ZFT6k1DHiL;Eb>&x&+Xq%999hLtK zBGW;|sl0=*&-~p}QZvmEn-Qo%!`N`A$HPElkK9Vj=er}f)Wn$iVvyS%`Ew@uiy@W? z{NEVCcR7?J@t3p{g?%nyMB)TA|N8{VO0MuuPdB`)QrK}==J!BAeAHFKP?xAtBg(Rp zr#>#^$keX&X7TKzdH!x_M8G_{zb&ANNmglTrAR3~)ECD2{dZ8b>ir3dGT9L0@ zEL1F14qSAU8Il2b`YMPaX-T%*PDV{~-@H&%78e1JiXD~<+56|G7-smd$UB`^7dgCi zx!A8hZd~TjUdRQG1M+tVHPS|z(0fG;UAt6)P?lS3N!&5Of6+f$^Ss)FDpTNhSp95} z9;ZlbVV+(simX?2v(9MrRbEJTx>iR096P`5X#tnc`fU46?$NYq&rg{f`Vm=#$$>Q^*V}ilRZFk{Ou9figm~qs=oTAl<1XUqa{I@tZ=*Z ze(QSWAQ{Kw=g&c#^tC?3kOg}C94RN_-B>z&lIv#bXV*5kwbZC5SVgG?6POhWi# zU+bCU2I)nnoDxZVE`=PL#$O`y@A4|59Gn~Eg$&)V+J*^Xu3h%enO-PSH_=@6&-n%H MXH@H<2GP>|2dvGimjD0& literal 2922 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 A2mk;8 diff --git a/UML.png b/UML.png index 60d2c2d944c50b334efc2613b1de33f2b273ae13..2515778ab51b82bd83bfd84abcf23024365de431 100644 GIT binary patch literal 44116 zcmeFZcT`hb*FL)K9t(IB5jBEG=|vC`0t65hkS-uynn)*LklqidC#n2%@sCVt?IdA#i_kQ>O#<>68?HPldWY@LUob#E_eCB>~Q$y+Sfl~({ z2s*5Mee=llsVj$=&qgnmHCd)S6hM!8~*(E$dt`CgaUiO zTHEI?BLV12+`!;qT6%iInLW^p-TM0avy?hvX>j){%RE;5z`erT)Qm~r4hS;+*w@$B z)~4R41wn(K8XFsFG&lHj@rl=i@Y6xim4{LPXP&bxlpKqXfrCj-}G zv`_x5$3qK){O(xot{G(eT~R}sH!UlhO?MYQTI_JN|GKQcR(Wk;6Ss5C}H$`%X zxVgBTlgNx#<#P)NaAqGvMof4)vvGrcP0vgULC{Su?blXc>@T;J3?s!Q1(kgaA7wd83PnFLAymXZQaWtHSZ z;9`Rxs!G6cL90w;d_qJ|Gu6GS(Z&w#?fC9F`1Z9}9(V+JyJ-PG%>TPjv&~EpGyTT?-y%wK z8!JLaB(QT$OGk1%dTC`?JKJKy?GbO4Xl1AzZNRK2d>Fn+B)m+OJ}jaN-Hz;5ot}30 zkxI2M#PuX3BnV6Umy-_%nZGf}w9CU4k*LudC1_)ZX=H@|kk?>)!d`Iry|Nq5JL+FX zc#QHfwkZXLQ=;HZ0pXPb*#!QgW>s)P)a2@PmOLdOW(QRAZ{i z$K_^9oGcq~;!%DT8~VytG;wPA;UfnEbHhz1C9TX@d$Chp^3BbAgXIhLbW|iGVzMV^ z?!(LGUO~YGN6t=&moz;+O{dd;xso@3yAoP=clY|rY)ix*C@}hsB)q=C_V1?u|N6Uo zXMHKm4aHNu@R8Lx57?=B3Skfw3dN&ppk!CyLu%zBeM6b~WF!I00xxvnc;HzL6FDT* zvfxJnUa90Z>9R*7W~#ENEO{sId|+lQuoS#wiW9VD zaK&r=RRd1>-O)>WIYc|0kxN&6*=jAtQ5-ztl$xX1DJ_<8f~91M3Evn}qsEj%H$EsV zEX;M3fLTaB21a!E5K<#4yUTXrw)HvfxcH8MCKDrS5WRikKFKYH6Rea@`^(_ckWagJ zd&E(wUiNKGjf|X}oV0XRMFpR9{EsM6v55G6HziM;I6)$j{tCgsU#WZ?zYf)3bTQEv z*BTrch$6#5mOmUkL7=5rdPfTrh{;fW%ZvXOCgH38SNkbG4|~4W@(&nC5QYp@r^k%K zkHP2r!%N>C7y;=hVSaPdubk|cHBT6s*AAQTGNS6Yaa9yar+1_;J?looS4SLW_=dZN z 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 TY(JytigR*sJ5+Jt)Wv@T>sw2g literal 44232 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 T)(xrQTa1I9>ml~RuYdd-+@&+~ From 759c7d277f8c33506c16b25941f334e3e49fbee5 Mon Sep 17 00:00:00 2001 From: Yapollon Date: Fri, 16 Feb 2024 17:57:49 +0100 Subject: [PATCH 10/16] Model Overhaul I'm done, this is the now complete code for the models and all. To make it short: - made some renaming that was necessary, HabitTrackings -> HabitTracking because every goddamn class is singular and not plural - made the deletion process everywhere the same (Habit Deletion now handles the HabitTracking deletion inside the model and not through Sqlite.py) - Some much needed comments - Some adjustments to the HabitLists, nothing big, plus addition of update - Also as a question, why does the HabitList have a redundant habits attribute, for now i marked this issue in the code to not forget it --- app.py | 2 +- db/SQLiteClient.py | 16 +++++++--------- models/Habit.py | 25 +++++++++++++++++++------ models/HabitList.py | 35 ++++++++++++++++++++++++++--------- models/HabitTracking.py | 26 ++++++++++++++++++++++++++ models/HabitTrackings.py | 21 --------------------- models/User.py | 6 ++++-- 7 files changed, 83 insertions(+), 48 deletions(-) create mode 100644 models/HabitTracking.py delete mode 100644 models/HabitTrackings.py diff --git a/app.py b/app.py index 5419869..a305689 100644 --- a/app.py +++ b/app.py @@ -6,7 +6,7 @@ from flask_login import login_required, LoginManager, login_user, logout_user, c from models.Habit import Habit from models.HabitList import HabitList -from models.HabitTrackings import HabitTrackings +from models.HabitTracking import HabitTrackings from models.User import User from utils import anonymous_required diff --git a/db/SQLiteClient.py b/db/SQLiteClient.py index d557bc2..0173b9e 100644 --- a/db/SQLiteClient.py +++ b/db/SQLiteClient.py @@ -178,18 +178,16 @@ def update_habit(id: int, name: str, note: str, times: int, unit: int): def delete_habit(id: int): - query = f"DELETE FROM habit_trackings WHERE id = habit_id;" - query2 = f"DELETE FROM habits WHERE id = {id};" + query = f"DELETE FROM habits WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) - cursor.execute(query2) conn.commit() conn.close() -### HabitTrackings.py ### -def create_habitTrackings(habit_id: int): +### HabitTracking ### +def create_habitTracking(habit_id: int): now = datetime.now().isoformat() query = f"INSERT INTO habit_trackings (habit_id, created_at) VALUES ('{habit_id}','{now}');" conn = con3() @@ -200,7 +198,7 @@ def create_habitTrackings(habit_id: int): return cursor.lastrowid -def get_habitTrackings(id: int): +def get_habitTracking(id: int): query = f"SELECT * FROM habit_trackings WHERE id = {id};" conn = con3() cursor = conn.cursor() @@ -210,7 +208,7 @@ def get_habitTrackings(id: int): return habit_tracking -def get_habitTrackings_by_habit_id(habit_id: int): +def get_habitTrackings(habit_id: int): query = f"SELECT * FROM habit_trackings WHERE habit_id = {habit_id};" conn = con3() cursor = conn.cursor() @@ -220,7 +218,7 @@ def get_habitTrackings_by_habit_id(habit_id: int): return habit_trackings -def delete_habitTrackings(id: int): +def delete_habitTracking(id: int): query = f"DELETE FROM habit_trackings WHERE id = {id};" conn = con3() cursor = conn.cursor() @@ -229,7 +227,7 @@ def delete_habitTrackings(id: int): conn.close() -### HabitList.py ### +### HabitList ### def create_habitList(user_id: int, name: str, description: str): now = datetime.now().isoformat() query = (f"INSERT INTO habit_lists (name, description, created_at, updated_at) " diff --git a/models/Habit.py b/models/Habit.py index 24836e5..cf39fce 100644 --- a/models/Habit.py +++ b/models/Habit.py @@ -2,9 +2,9 @@ import json from dataclasses import dataclass from datetime import datetime -from models.HabitTrackings import HabitTrackings +from models.HabitTracking import HabitTracking from db.SQLiteClient import (create_habit, get_habit, update_habit, delete_habit, get_next_slot, get_slots, update_slot, - get_habitTrackings_by_habit_id, get_habitList) + get_habitTrackings, get_habitList) # unit will be represented by integers like this: @@ -39,10 +39,12 @@ class Habit: return Habit(habit[0], habit[1], habit[2], habit[3], habit[4], habit[5], habit[6]) if habit else None + # Updates: name, note, times, unit def update(self): update_habit(self.id, self.name, self.note, self.times, self.unit) + # Updates the slot and reorders the HabitList accordingly def update_slot(self, new_slot: int): # Fetches a list with the following structure [(id, slot), (id, slot), ...] slots = get_slots(self.list_id) @@ -61,29 +63,39 @@ class Habit: update_slot(self.id, new_slot) + # Deletes the Habit def delete(self): - # Deletes the current habit + # Reorders the slots slots = get_slots(self.list_id)[self.slot+1:] for slot in slots: update_slot(slot[0], slot[1] - 1) - # Deletes the current habit + # Deletes all track-records associated with the Habit + trackings = self.get_habitTrackings() + for tracking in trackings: + tracking.delete() + + # Deletes the current Habit delete_habit(self.id) + # Returns all track-records for a Habit def get_habitTrackings(self) -> list: trackings = [] - for rawTracking in get_habitTrackings_by_habit_id(self.id): - trackings.append(HabitTrackings(rawTracking[0], rawTracking[1])) + for rawTracking in get_habitTrackings(self.id): + trackings.append(HabitTracking(rawTracking[0], rawTracking[1], + datetime.strptime(rawTracking[2], "%Y-%m-%dT%H:%M:%S.%f"))) return trackings + # Returns the HabitList in which the Habit is located def habit_list(self) -> list: from models.HabitList import HabitList raw_habitLists = get_habitList(self.list_id) return HabitList(raw_habitLists[0], raw_habitLists[1], raw_habitLists[2]) if raw_habitLists else None + # Saves the progress of the Habit in the attribute percentage def fill_statistics(self): count = 0 self.checked = False @@ -111,5 +123,6 @@ class Habit: self.percentage = int(count / self.times * 100) + # Converts the Habit data to a json format def to_json(self): return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4) diff --git a/models/HabitList.py b/models/HabitList.py index bf3525c..bdff3f5 100644 --- a/models/HabitList.py +++ b/models/HabitList.py @@ -2,8 +2,8 @@ from dataclasses import dataclass from models.Habit import Habit from models.User import User -from db.SQLiteClient import (delete_habitList, create_habitList, get_habitList, get_habits, - get_users, add_user, remove_user) +from db.SQLiteClient import (create_habitList, get_habitList, get_habits, get_users, add_user, remove_user, + update_habitList, delete_habitList) @dataclass @@ -11,7 +11,7 @@ class HabitList: id: int name: str description: str - habits: list = None + habits: list = None #? unclear usage @staticmethod def create(user_id: int, name: str, description: str): @@ -23,6 +23,21 @@ class HabitList: habitList = get_habitList(id) return HabitList(habitList[0], habitList[1], habitList[2]) if habitList else None + + # Updates: name, description + def update(self): + update_habitList(self.id, self.name, self.description) + + + # Deletes the HabitList | The id of the current user is necessary + def delete(self, user_id): + if len(get_users) > 1: + self.remove_user(user_id) + else: + delete_habitList(self.id) + + + # Returns the Habits connected with the HabitList def get_habits(self) -> list: raw_habits = get_habits(self.id) habits = [] @@ -32,6 +47,8 @@ class HabitList: return habits + + # Returns the Users connected with the HabitList def get_users(self) -> list: raw_users = get_users(self.id) users = [] @@ -41,13 +58,13 @@ class HabitList: return users + + # Adds a User by email to the HabitList def add_user(self, email: str): user = User.get_by_email(email) add_user(self.id, user.id) - # The id of the current user is necessary - def delete(self, user_id): - if len(get_users) > 1: - remove_user(self.id, user_id) - else: - delete_habitList(self.id) + + # Removes a User from the HabitList + def remove_user(self, user_id): + remove_user(self.id, user_id) diff --git a/models/HabitTracking.py b/models/HabitTracking.py new file mode 100644 index 0000000..76ee855 --- /dev/null +++ b/models/HabitTracking.py @@ -0,0 +1,26 @@ +from datetime import date, datetime +from dataclasses import dataclass +from db.SQLiteClient import create_habitTracking, get_habitTracking, delete_habitTracking + + +@dataclass +class HabitTracking: + id: int + habit_id: int + created_at: date + + @staticmethod + def create(habit_id: int): + id = create_habitTracking(habit_id) + return HabitTracking(id, habit_id, datetime.now()) + + @staticmethod + def get(id: int): + habitTrackings = get_habitTracking(id) + return HabitTracking(habitTrackings[0], habitTrackings[1], + datetime.strptime(habitTrackings[2], "%Y-%m-%dT%H:%M:%S.%f")) \ + if habitTrackings else None + + # Deletes the HabitTracking + def delete(self): + delete_habitTracking(self.id) diff --git a/models/HabitTrackings.py b/models/HabitTrackings.py deleted file mode 100644 index 996aed6..0000000 --- a/models/HabitTrackings.py +++ /dev/null @@ -1,21 +0,0 @@ -from dataclasses import dataclass -from db.SQLiteClient import create_habitTrackings, get_habitTrackings, delete_habitTrackings - - -@dataclass -class HabitTrackings: - id: int - habit_id: int - - @staticmethod - def create(habit_id: int): - id = create_habitTrackings(habit_id) - return HabitTrackings(id, habit_id) - - @staticmethod - def get(id: int): - habitTrackings = get_habitTrackings(id) - return HabitTrackings(habitTrackings[0], habitTrackings[1]) if habitTrackings else None - - def delete(self): - delete_habitTrackings(self.id) diff --git a/models/User.py b/models/User.py index 423c6b8..05a897b 100644 --- a/models/User.py +++ b/models/User.py @@ -26,10 +26,12 @@ class User(UserMixin): return User(user[0], user[1], user[2], user[3]) if user else None + # Updates: name, email, password def update(self): update_user(self.id, self.name, self.email, self.password if self.password else None) + # Deletes the User def delete(self): # calls the deletion of the users habitLists habitLists = self.get_habitLists() @@ -40,7 +42,7 @@ class User(UserMixin): delete_user(self.id) - # returns all habitLists assigned with the user + # Returns all HabitLists connected with the user def get_habitLists(self) -> list: from models.HabitList import HabitList @@ -53,7 +55,7 @@ class User(UserMixin): return habitLists - # return the heatmap-values of the last 28 days + # Returns all heatmap-values from the last 28 days def get_heatmap(self) -> list: heatmap = [] for day in range (0, 28): From e5709775bb54c6ede7fa520042e984cde3cd8094 Mon Sep 17 00:00:00 2001 From: Yapollon Date: Fri, 16 Feb 2024 18:04:53 +0100 Subject: [PATCH 11/16] fixed renaming in app.py he guess i missed some --- app.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index a305689..028c8c6 100644 --- a/app.py +++ b/app.py @@ -6,7 +6,7 @@ from flask_login import login_required, LoginManager, login_user, logout_user, c from models.Habit import Habit from models.HabitList import HabitList -from models.HabitTracking import HabitTrackings +from models.HabitTracking import HabitTracking from models.User import User from utils import anonymous_required @@ -335,7 +335,7 @@ def check_habit(): if current_user not in users: return {"error": "Habit does not belong to user"} - trackings = habit.get_habitTrackings() + trackings = habit.get_habitTracking() # Check if habit has been tracked today delete_tracking = None @@ -344,7 +344,7 @@ def check_habit(): delete_tracking = tracking if not delete_tracking: - HabitTrackings.create(habit_id, 1) + HabitTracking.create(habit_id) else: delete_tracking.delete() From 6f363a104e12254e5d4147828cb2cec21ea102b6 Mon Sep 17 00:00:00 2001 From: Yapollon Date: Sun, 18 Feb 2024 04:53:15 +0100 Subject: [PATCH 12/16] Profile Pictures YES YOU HEARD RIGHT!! I ALSO DID THE HTML! This is the most awesome most epic addition, i sold my kidney for this. --- .gitignore | 3 + app.py | 72 ++++++++++++- db/SQLiteClient.py | 15 +-- .../1708105700_delete_users_table.sql | 1 + .../1708105768_create_users_table.sql | 10 ++ models/User.py | 17 +-- static/{main.css => css/background.css} | 0 static/css/profile.css | 45 ++++++++ templates/layouts/main.html | 4 +- templates/profile.html | 102 +++++++++++++----- 10 files changed, 222 insertions(+), 47 deletions(-) create mode 100644 db/migrations/1708105700_delete_users_table.sql create mode 100644 db/migrations/1708105768_create_users_table.sql rename static/{main.css => css/background.css} (100%) create mode 100644 static/css/profile.css diff --git a/.gitignore b/.gitignore index 5ac73e1..a930a3f 100644 --- a/.gitignore +++ b/.gitignore @@ -165,3 +165,6 @@ cython_debug/ db/db.sqlite /HabitTracker.iml + +static/profile_images + diff --git a/app.py b/app.py index 028c8c6..09188a7 100644 --- a/app.py +++ b/app.py @@ -1,5 +1,7 @@ import datetime import hashlib +import os +from PIL import Image from flask import Flask, render_template, redirect, url_for, request from flask_login import login_required, LoginManager, login_user, logout_user, current_user @@ -270,6 +272,7 @@ def profile(): "profile.html", name=current_user.name, email=current_user.email, + profile_image_url=current_user.profile_image, errors={} ) @@ -292,15 +295,15 @@ def profile_change(): if not oldPassword: errors['oldPassword'] = 'Du musst dein aktuelles Passwort angeben.' - else: - if hashlib.sha256(oldPassword.encode()).hexdigest() != current_user.password: - errors['oldPassword'] = 'Das Passwort ist falsch.' + elif hashlib.sha256(oldPassword.encode()).hexdigest() != current_user.password: + errors['oldPassword'] = 'Das Passwort ist falsch.' if errors: return render_template( "profile.html", name=current_user.name, email=current_user.email, + profile_image_url=current_user.profile_image, errors=errors ) @@ -316,6 +319,69 @@ def profile_change(): "profile.html", name=current_user.name, email=current_user.email, + profile_image_url=current_user.profile_image, + errors={} + ) + +UPLOAD_FOLDER = 'static/profile_images/' # Folder to store profile images +app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER + +def save_profile_image(image_file): + print("we are saving...") + filename = image_file.filename + if '.' not in filename: + # Ensure the filename has an extension + raise ValueError("Invalid filename") + + # Check if the file extension is allowed + allowed_extensions = {'jpg', 'jpeg', 'png', 'gif'} + file_extension = filename.rsplit('.', 1)[1].lower() + if file_extension not in allowed_extensions: + raise ValueError("Invalid file extension") + + # Open the uploaded image + image = Image.open(image_file) + + # Determine the size of the square image + min_dimension = min(image.size) + square_size = (min_dimension, min_dimension) + + # Calculate the coordinates for cropping + left = (image.width - min_dimension) / 2 + top = (image.height - min_dimension) / 2 + right = (image.width + min_dimension) / 2 + bottom = (image.height + min_dimension) / 2 + + # Crop the image to a square and resize it + image = image.crop((left, top, right, bottom)) + image.thumbnail(square_size) + image = image.resize((128, 128)) + + # Save the processed image + image_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) + image.save(image_path) + + return filename + +@app.route('/upload', methods=['POST']) +def upload_profile_image(): + if 'file' not in request.files: + return 'No file part' + + file = request.files['file'] + + filename = save_profile_image(file) + + # Update user + current_user.profile_image = url_for('static', filename=f'profile_images/{filename}') + current_user.update() + + # Back to profile + return render_template( + "profile.html", + name=current_user.name, + email=current_user.email, + profile_image_url=current_user.profile_image, errors={} ) diff --git a/db/SQLiteClient.py b/db/SQLiteClient.py index 0173b9e..c407599 100644 --- a/db/SQLiteClient.py +++ b/db/SQLiteClient.py @@ -9,11 +9,11 @@ def con3(): ### User ### -def create_user(name: str, email: str, password: str): +def create_user(name: str, email: str, password: str, profile_image: str): password = hashlib.sha256(password.encode()).hexdigest() now = datetime.now().isoformat() - query = (f"INSERT INTO users (name, email, password, created_at, updated_at) VALUES ('{name}', '{email}', " - f"'{password}', '{now}', '{now}');") + query = (f"INSERT INTO users (name, email, password, profile_image, created_at, updated_at) VALUES " + f"('{name}', '{email}', '{password}', '{profile_image}', '{now}', '{now}');") conn = con3() cursor = conn.cursor() cursor.execute(query) @@ -42,13 +42,14 @@ def get_user_by_email(email: str): return user -def update_user(id: int, name: str, email: str, password: str): +def update_user(id: int, name: str, email: str, password: str, profile_image:str): now = datetime.now().isoformat() if password: - query = (f"UPDATE users SET name = '{name}', email = '{email}', password = '{password}', updated_at = '{now}' " - f"WHERE id = {id};") + query = (f"UPDATE users SET name = '{name}', email = '{email}', password = '{password}', " + f"profile_image = '{profile_image}', updated_at = '{now}' WHERE id = {id};") else: - query = f"UPDATE users SET name = '{name}', email = '{email}', updated_at = '{now}' WHERE id = {id};" + query = (f"UPDATE users SET name = '{name}', email = '{email}', profile_image = '{profile_image}'," + f" updated_at = '{now}' WHERE id = {id};") conn = con3() cursor = conn.cursor() cursor.execute(query) diff --git a/db/migrations/1708105700_delete_users_table.sql b/db/migrations/1708105700_delete_users_table.sql new file mode 100644 index 0000000..441087a --- /dev/null +++ b/db/migrations/1708105700_delete_users_table.sql @@ -0,0 +1 @@ +DROP TABLE users; \ No newline at end of file diff --git a/db/migrations/1708105768_create_users_table.sql b/db/migrations/1708105768_create_users_table.sql new file mode 100644 index 0000000..5210527 --- /dev/null +++ b/db/migrations/1708105768_create_users_table.sql @@ -0,0 +1,10 @@ +CREATE TABLE IF NOT EXISTS users +( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + email TEXT NOT NULL, + password TEXT NOT NULL, + profile_image TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL +); diff --git a/models/User.py b/models/User.py index 05a897b..16a24d9 100644 --- a/models/User.py +++ b/models/User.py @@ -4,31 +4,32 @@ from db.SQLiteClient import (create_user, get_user, get_user_by_email, update_us class User(UserMixin): - def __init__(self, id: int, name: str, email: str, password: str = None): + def __init__(self, id: int, name: str, email: str, password: str = None, profile_image:str = None): self.id = id self.name = name self.email = email self.password = password + self.profile_image = profile_image @staticmethod - def create(name: str, email: str, password: str): - id = create_user(name, email, password) - return User(id, name, email) + def create(name: str, email: str, password: str, profile_image: str=None): + id = create_user(name, email, password, profile_image) + return User(id=id, name=name, email=email, profile_image=profile_image) @staticmethod def get(id: int): user = get_user(id) - return User(user[0], user[1], user[2], user[3]) if user else None + return User(user[0], user[1], user[2], user[3], user[4]) if user else None @staticmethod def get_by_email(email: str): user = get_user_by_email(email) - return User(user[0], user[1], user[2], user[3]) if user else None + return User(user[0], user[1], user[2], user[3], user[4]) if user else None - # Updates: name, email, password + # Updates: name, email, password, profile_image def update(self): - update_user(self.id, self.name, self.email, self.password if self.password else None) + update_user(self.id, self.name, self.email, self.password if self.password else None, self.profile_image) # Deletes the User diff --git a/static/main.css b/static/css/background.css similarity index 100% rename from static/main.css rename to static/css/background.css diff --git a/static/css/profile.css b/static/css/profile.css new file mode 100644 index 0000000..55b1d07 --- /dev/null +++ b/static/css/profile.css @@ -0,0 +1,45 @@ +.profile-image-container { + position: relative; + width: 150px; /* Adjust the size as needed */ + height: 150px; /* Adjust the size as needed */ +} + +.profile-image { + width: 100%; + height: 100%; + border-radius: 50%; + object-fit: cover; +} + +.profile-image-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); /* Grey overlay */ + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + color: white; + font-size: 16px; + opacity: 0; /* Initially hidden */ + transition: opacity 0.3s ease; + cursor: pointer; +} + +.profile-image-overlay:hover { + opacity: 1; /* Show overlay on hover */ +} + +.profile-image-overlay span { + /* Center the text and make it bold */ + text-align: center; + font-weight: bold; +} + +.profile-image-overlay:hover span { + /* Style the text when hovering */ + color: white; +} \ No newline at end of file diff --git a/templates/layouts/main.html b/templates/layouts/main.html index c375f6a..43d392c 100644 --- a/templates/layouts/main.html +++ b/templates/layouts/main.html @@ -6,10 +6,12 @@ {{ title }} - HabitTracker - + + + diff --git a/templates/profile.html b/templates/profile.html index e5f81e4..7ae87be 100644 --- a/templates/profile.html +++ b/templates/profile.html @@ -2,45 +2,91 @@ {% block content %} -

Account Einstellungen👤

+
+

Account Einstellungen👤

- -
-
- - -
- {{ errors.get('newName', '') }} +
+
+
Profilbild
+
+ Profile Image +
+ Profilbild bearbeiten +
+
+
+ + + +
-
- - -
- {{ errors.get('newEmail', '') }} +
+
+ + +
+ {{ errors.get('newName', '') }} +
-
-
- - -
- {{ errors.get('newPassword', '') }} +
+ + +
+ {{ errors.get('newEmail', '') }} +
-
-
- - -
- {{ errors.get('oldPassword', '') }} +
+ + +
+ {{ errors.get('newPassword', '') }} +
-
- - +
+ + +
+ {{ errors.get('oldPassword', '') }} +
+
+ + +
+ {% endblock %} \ No newline at end of file From 684beb372f853ed23fea2723fbd3ac7b6c37f161 Mon Sep 17 00:00:00 2001 From: Yapollon Date: Tue, 20 Feb 2024 04:16:28 +0100 Subject: [PATCH 13/16] Profil upgrade and MORE Very cool isn't it, totally didn't take a lot of time --- .gitignore | 4 +- app.py | 78 +++---- db/SQLiteClient.py | 37 ++- models/User.py | 9 +- static/css/profile.css | 28 +++ static/css/symbols/eye-closed.svg | 1 + static/css/symbols/eye-opened.svg | 1 + static/profile_images/no_avatar/user.jpg | Bin 0 -> 6168 bytes templates/layouts/main.html | 15 +- templates/profile.html | 284 +++++++++++++++++++---- 10 files changed, 357 insertions(+), 100 deletions(-) create mode 100644 static/css/symbols/eye-closed.svg create mode 100644 static/css/symbols/eye-opened.svg create mode 100644 static/profile_images/no_avatar/user.jpg diff --git a/.gitignore b/.gitignore index a930a3f..f7f20ae 100644 --- a/.gitignore +++ b/.gitignore @@ -166,5 +166,5 @@ db/db.sqlite /HabitTracker.iml -static/profile_images - +static/profile_images/* +!/static/profile_images/no_avatar/ diff --git a/app.py b/app.py index 09188a7..cf07dec 100644 --- a/app.py +++ b/app.py @@ -3,7 +3,7 @@ import hashlib import os from PIL import Image -from flask import Flask, render_template, redirect, url_for, request +from flask import Flask, render_template, redirect, url_for, request, jsonify from flask_login import login_required, LoginManager, login_user, logout_user, current_user from models.Habit import Habit @@ -273,7 +273,6 @@ def profile(): name=current_user.name, email=current_user.email, profile_image_url=current_user.profile_image, - errors={} ) @@ -282,34 +281,37 @@ def profile(): def profile_change(): newName = request.form.get('newName') newEmail = request.form.get('newEmail') - newPassword = request.form.get('newPassword') - oldPassword = request.form.get('oldPassword') - - # Check for errors - errors = {} - if not newName: - errors['newName'] = 'Der Name ist erforderlich.' - - if not newEmail: - errors['newEmail'] = 'Die E-Mail Adresse ist erforderlich.' - - if not oldPassword: - errors['oldPassword'] = 'Du musst dein aktuelles Passwort angeben.' - elif hashlib.sha256(oldPassword.encode()).hexdigest() != current_user.password: - errors['oldPassword'] = 'Das Passwort ist falsch.' - - if errors: - return render_template( - "profile.html", - name=current_user.name, - email=current_user.email, - profile_image_url=current_user.profile_image, - errors=errors - ) # Update user current_user.name = newName current_user.email = newEmail + current_user.update() + + # Back to profile + return render_template( + "profile.html", + name=current_user.name, + email=current_user.email, + profile_image_url=current_user.profile_image, + ) + +@app.route('/check_password', methods=['POST']) +@login_required +def check_password(): + # Get the password sent from the client + password = request.json.get('password') + + if hashlib.sha256(password.encode()).hexdigest() == current_user.password: + return jsonify({"valid": True}) + else: + return jsonify({"valid": False}) + +@app.route('/password', methods=['POST']) +@login_required +def password_change(): + newPassword = request.form.get('newPassword') + + # Update user if newPassword: current_user.password = hashlib.sha256(newPassword.encode()).hexdigest() current_user.update() @@ -320,14 +322,12 @@ def profile_change(): name=current_user.name, email=current_user.email, profile_image_url=current_user.profile_image, - errors={} ) UPLOAD_FOLDER = 'static/profile_images/' # Folder to store profile images app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER def save_profile_image(image_file): - print("we are saving...") filename = image_file.filename if '.' not in filename: # Ensure the filename has an extension @@ -339,9 +339,15 @@ def save_profile_image(image_file): if file_extension not in allowed_extensions: raise ValueError("Invalid file extension") + # Get the filename from the image path saved in the user + filename = os.path.basename(current_user.profile_image) + # Open the uploaded image image = Image.open(image_file) + # Convert the image to RGB mode (required for JPEG) + image = image.convert('RGB') + # Determine the size of the square image min_dimension = min(image.size) square_size = (min_dimension, min_dimension) @@ -355,13 +361,11 @@ def save_profile_image(image_file): # Crop the image to a square and resize it image = image.crop((left, top, right, bottom)) image.thumbnail(square_size) - image = image.resize((128, 128)) + image = image.resize((256, 256)) # Save the processed image image_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) - image.save(image_path) - - return filename + image.save(image_path, 'JPEG', quality=100) @app.route('/upload', methods=['POST']) def upload_profile_image(): @@ -369,12 +373,7 @@ def upload_profile_image(): return 'No file part' file = request.files['file'] - - filename = save_profile_image(file) - - # Update user - current_user.profile_image = url_for('static', filename=f'profile_images/{filename}') - current_user.update() + save_profile_image(file) # Back to profile return render_template( @@ -440,7 +439,6 @@ def delete_habit(): habit.delete() return {} - @app.route('/reorder', methods=['POST']) @login_required def reorder_habits(): @@ -462,4 +460,4 @@ def reorder_habits(): # Run the application if __name__ == '__main__': - app.run(port=5000, debug=True) + app.run(port=5000, debug=True) \ No newline at end of file diff --git a/db/SQLiteClient.py b/db/SQLiteClient.py index c407599..fb183f3 100644 --- a/db/SQLiteClient.py +++ b/db/SQLiteClient.py @@ -1,6 +1,8 @@ from datetime import datetime, timedelta import hashlib import sqlite3 +import os +import shutil def con3(): @@ -9,7 +11,23 @@ def con3(): ### User ### -def create_user(name: str, email: str, password: str, profile_image: str): +def create_user_profile_image(user_id): + script_directory = os.path.dirname(os.path.abspath(__file__)) + source_path = os.path.join(script_directory, '../static/profile_images/no_avatar/user.jpg') + destination_directory = os.path.join(script_directory, '../static/profile_images/') + new_filename = f'user{user_id}-profile.jpg' + + destination_path = os.path.join(destination_directory, new_filename) + shutil.copyfile(source_path, destination_path) + + # Just save the part after static + static_index = destination_path.find('static') + relative_destination_path = destination_path[static_index:] + + return relative_destination_path + + +def create_user(name: str, email: str, password: str, profile_image:str = None): password = hashlib.sha256(password.encode()).hexdigest() now = datetime.now().isoformat() query = (f"INSERT INTO users (name, email, password, profile_image, created_at, updated_at) VALUES " @@ -17,9 +35,15 @@ def create_user(name: str, email: str, password: str, profile_image: str): conn = con3() cursor = conn.cursor() cursor.execute(query) + + id = cursor.lastrowid + profile_image = create_user_profile_image(id) + query2 = f"UPDATE users SET profile_image = '{profile_image}' WHERE id = '{id}';" + cursor.execute(query2) + conn.commit() conn.close() - return cursor.lastrowid + return id, profile_image def get_user(id: int): @@ -42,14 +66,13 @@ def get_user_by_email(email: str): return user -def update_user(id: int, name: str, email: str, password: str, profile_image:str): +def update_user(id: int, name: str, email: str, password: str): now = datetime.now().isoformat() if password: - query = (f"UPDATE users SET name = '{name}', email = '{email}', password = '{password}', " - f"profile_image = '{profile_image}', updated_at = '{now}' WHERE id = {id};") + query = (f"UPDATE users SET name = '{name}', email = '{email}', password = '{password}', updated_at = '{now}' " + f"WHERE id = {id};") else: - query = (f"UPDATE users SET name = '{name}', email = '{email}', profile_image = '{profile_image}'," - f" updated_at = '{now}' WHERE id = {id};") + query = f"UPDATE users SET name = '{name}', email = '{email}', updated_at = '{now}' WHERE id = {id};" conn = con3() cursor = conn.cursor() cursor.execute(query) diff --git a/models/User.py b/models/User.py index 16a24d9..e322983 100644 --- a/models/User.py +++ b/models/User.py @@ -11,9 +11,10 @@ class User(UserMixin): self.password = password self.profile_image = profile_image + @staticmethod - def create(name: str, email: str, password: str, profile_image: str=None): - id = create_user(name, email, password, profile_image) + 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) @staticmethod @@ -27,9 +28,9 @@ class User(UserMixin): return User(user[0], user[1], user[2], user[3], user[4]) if user else None - # Updates: name, email, password, profile_image + # Updates: name, email, password def update(self): - update_user(self.id, self.name, self.email, self.password if self.password else None, self.profile_image) + update_user(self.id, self.name, self.email, self.password if self.password else None) # Deletes the User diff --git a/static/css/profile.css b/static/css/profile.css index 55b1d07..af7832c 100644 --- a/static/css/profile.css +++ b/static/css/profile.css @@ -1,3 +1,4 @@ + /* Profile image */ .profile-image-container { position: relative; width: 150px; /* Adjust the size as needed */ @@ -42,4 +43,31 @@ .profile-image-overlay:hover span { /* Style the text when hovering */ color: white; +} + + + /* Edit-Modal Close Button */ +.close-icon { + fill: #aaa; + cursor: pointer; +} + +.close-icon:hover { + fill: #777; /* Change the color to whatever you'd like on hover */ +} + + +.fade-out { + -webkit-animation: fadeOut 3s forwards; + animation: fadeOut 3s forwards; +} + +@keyframes fadeOut { + 0% { opacity: 1; } + 100% { opacity: 0; display: none; } +} + +@-webkit-keyframes fadeOut { + 0% { opacity: 1; } + 100% { opacity: 0; display: none; } } \ No newline at end of file diff --git a/static/css/symbols/eye-closed.svg b/static/css/symbols/eye-closed.svg new file mode 100644 index 0000000..1176af5 --- /dev/null +++ b/static/css/symbols/eye-closed.svg @@ -0,0 +1 @@ +324324Created with Sketch.Created by Sonya Nikolaevafrom the Noun Project \ No newline at end of file diff --git a/static/css/symbols/eye-opened.svg b/static/css/symbols/eye-opened.svg new file mode 100644 index 0000000..9caef02 --- /dev/null +++ b/static/css/symbols/eye-opened.svg @@ -0,0 +1 @@ +123123Created with Sketch.Created by Sonya Nikolaevafrom the Noun Project \ No newline at end of file diff --git a/static/profile_images/no_avatar/user.jpg b/static/profile_images/no_avatar/user.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc70cadb1cc03e4315d6b10e9ff664202554ef99 GIT binary patch literal 6168 zcmbVQXIN9sww@$FD4~Q7p;tjcO3X)t%0ASD$9Q_9T z8eSgWH=KNZog4-1g9Y5YovumUaB}!}_7Gt|33#u9{`#f4&VR*69RBF41tCn zH3J?f0yqM89L)a^B^3-o0Y_3FjRWd`+J7AafZ$UMu2@=E{r-hKye4q03!A@pPY2LX z{Q6BihHa-V#slE_Xt^B%2sF7K4**||@+O3k*waMlaWi!h;(T`RAP#taZ2@2iQWJpQ z5ktFE0NCSXpm#v=_6{DPG<=B1Ksjd% z$TNsX05%-D2oNRL5vkMwWt`OjD021$fRP_8YK;g^CPRa;TCoK;Upb;T1VGS!JrMw} z1MM;(`m>3xPXOReA&o2Z4PeKieI^{hG#@~jkqrT`zeY|T;6Yn=C1mh%`!f+%-C$n< z5Krc&0AS4a2cUcw!w%rekSSoyY$t-p@pu;i!)&cX3F{Xj0{oEy#j!I$P;i(0uogK_UzFQsD%iC zhRF^yo16)Tbs`}QI~g<%*snCW0Brx) z2B?9Vqo;vtfBTjWqJ%jnPERp#KOI!42g6vyR z>L8*#*aoOutx(b+qB9yS2gr;k7m3G+^5GJ+d~bdDNA~&`i{WO0XXKy2mu719f$x+Xx>2uD1!;m z;o1I(Jn`*-9#-s2g$LY710NI-&?B#@Btj`Q@H5nf2I*cb8%+c-&t0A}=s>xxuFwEw zaR{{mX^i4oqK^T%0S$Ktz5~Tmk767;`v<-onHN;?jkQP8!K#XPrVpJ{= z`)@+^L&(_}V&bPDhE9VRtmlutl`Z5-=8xC=e>zZtWOM&?`)36I3#HQUFS{AhRr9o!~>oA|xYcY$srH<8A^ItMEDd7mW_D zeyUyx~=P+VGeoolNO?>iK%;zrCfgmmMoHam7bwx!+d_Q$y$Uyc`mu7q7bqfKj zHryT!Y zjICAh=TqIiEh&jci7(4#oJ7$14^3=N;?QQc{IOqOFLjTX)aa*7D~R)*HPsB_EQ`9K z=jkyszJ(DKRCiW@xuw2ISr8PG{kd-~>OQzjBPRdz5>tcRbM>*5`;;kDl!b+KG!uq4lkYd2+Fl*R+$Na%Yj*@b`BdI2*w2-8BPl7!8 z;0*4?d)xdEN<_h=xLIYkFP08MG*)H)EH(8dg-kEPgg<$q$J`|Ca-zGG?_d3VKxe~I zyYqJz3lHCd;@g%l6MMDWj>1VIe2a>uO>QA6ZY1W0=_h-95A14|4u*c#KCN2+S{s-w zPc0<%-k9C_ntivA$V>q3_?V0RvZz8*V*W_$uz%9UPN%2!Y}}8oW0R8zdZPF1MU_%4 zquy{YRJX@cIClCMjG>=$Dm|xGcxcis9w9R#CwzCc(%HjY?W%-ugPe6(Nui_yU$CKu z@uU&Vt@@q2vun;-q9>u@x?l1Qvi|Gyx2Zoj-K`WgGmjV9;E8=z%ZIcj6<`Oc4j+ik zdIZPLZ5NOUh7W8!x@<*GoN5D9BF}7|+_NzH*nIA(z;DAY|4FLwJ7h7AjwyriGLs8Y8L^RUMA(U*WLU(F(F6^aTGjoWWjGBDVInOr*s+&IB;T zo9&nt0L9LahbJqx@8lKd1kv=0bxnKRh!4oJ$kbVZeSopcX4 zb?2IExCZMhy=wA3#)L8fq86#lw9_tCQGsXwCfnwYS>N5B8ezNQJ0-CNdlAnVf;{|; zMhFA-Tg+ek=)=Qo-aJ((b^P^~^jktXHfyF1F(13oncMvKA=0hmG) z(V$lyt!lEnL+wuKml<})yzb@%3^NWelJAbM`j7$!;s%U{Bgb5`m-3p}bl&OD|LBQLD+ry6GePb>g^&I?WDO zItfp$E{X8wnAJ#@l;hdYqqDTmNZ#j{idspzJ@%5Hj{imPXzkr}R&JuWL!F(B#ZU>C zylbpM`k?>0Yo)nY#h$855W7x36x7#SVpK(O1*InzaWVigPWiU2T=d9D`(roiA!R+TD{7h$Fl%d|jRueK`Vz zJR=NBiDHfE-Q-m+Ei3bKeJEs%W-QKCGU@zm9orE~;LQ6uz|dTOTKfo0q)%tb_3h>H zM%11yJp#`}#I-IxyI1hqxu<(2Sw`EOB3?&XT4r|HEkYzWRY#OJM~%?tlozJ=loTd7 z?y$|{VL;(mrcL2cPGY!IBlNAS`_jtW%JGv~gVA`BH7$&o1ySqp@Lo3XlOb%Hd;9trH6cw9TQ$Y(%TqufpNaxkL`_EU| zYdj+s${w5W-BEt>xc6Q87JG_Im*jc?20PdUU+fXe+Hi1-jUUVvO2<9gP))A%_)4&` zD5hpJRJYhy+}pN@(WLRr7rdw#e)Zcmw>$BJ_3$iQ#0GCpg?y9JVv|tyhUx2b*qq3q z>W3Fml6gNm4px%SR1CRCZxREg->985-wq3wwKQLPGO1XZ{a81pwxqZ1CQpFEY$7`& zOS#Ns9-WC_SkSs<&a%ZM*O>x$S9cChQB+_-$Ad1%Y|f#k4a9ckoXkt#7PA#oBYGt+ z@pz#PT=DyFNt_FfntOc_o72wD0jE|j$2vam?Ja6=Oo*_{zjwEi?FfhjXYW=JRf;1xwj-MuHAC z#M#QhVWSHIi8Qonhm6YBd);gyvIc+qdLI^d*;Oa|M#Z3lnYH8iW}Q=s2W5)@QuOQ6q(;DGVt<)d%ar(;=_M%? z*-Wea!*oI=-vMQRIChG(QV>^|e(4A9N?fqYhUxi1{YHXEkPY)_*TVpN(=nrO2m8EV zg1XeDg)3Qt2KV{igasAaUw+};J~4}RzC07{<@IJKBGTlFoX>;qz#BU8q%L7fP0mD* zU>nA((uzeVr>;UCq&@|yQdG^^dvPBD;SsW4l2&4KV?wwnbFlY%G*W(dv}I&a zjqN+b>W|tO$25JZAJm~kLHnwG!Q8qbPp#H@jzIRt8*SMMW6fbxF=53t&Cv!6fQaHHv6UPKSpXG3vw*Xz;KgEprH+D8aUMn=|5hfI@9U-I z3nE$?`O&AA2p>6}^AO*efynrF@tI2f&QKa32`0rYpF zC;pmTNyKu27&fX*ncY%7+vp@|Qj+g(=~8c2iYX~zuKhsl2uM}AD;@Y6&Tj~|hvcrg zE$2%2D7$endY-?GPN+n?qDcW-BaCG_#+PFOO1JVhp{Ve&@3c5253AeeI4w!roTupn z14^M_6#6z@p9f_{gW!140X2aI44JEElwtHT;X$5Qv=1r2%Y)r z?v_Yrg+w3mu13kmyAAguDo@SirgF8-YS4m~htTi|70^wcPf#Yw} z!{AV@gR^@@AF^KPkfP^XHC7)=7D^W8(;nY_5Vns`%*D(kBS_I)hFMYr3~^n4U8Co? z7C!G{Liqh_-%M9!*NL#`)0zl=$L*b68b3h_7YP@kjsmn)0QTwvtFP92XVgYj_jfZTqy^Y<~R0bguHnT?j7A&!?1teRJIAOMer7Vk$-`5-x;d)56myBwOoM zhnr9f%u(YOk(zudbxvdVr@Cu}aYp7dDtV+|tRacXPg2?LS)RLbZO0SdSs2B}DtVWP z5C9+7RwG+1Z3@@OQQ6P++@P-#$#p6<)gmltT#~#lf)_$_C97TC;67f!3Q@3Il z7Jm7!Hj->gGH&(C?fc+rq%AR7Qk*R8!f%D0S3;KuuRC3&yadm-Rqw{w{6dA_R$P69 z)-7tDM0DLRERb}Wl^H%quKFB!5G(AJn_W=!NaF&X&b;?TAF*<{e?ekfyzYwLLG#He zo*y603FiulnYN%E_I8*+9@Q8&`;e%85MH9~Q#s%N)Kt%^#HP%BDMM@@V`QX?jbS@~ zn&+NnRl|30(>`;d79+Y2!J&LvTun8H1l^fMY2pMekJX&V1x;Obrl?f57=;s~eQ^mx ze+?}Z+i?JtXpA7zQu+}iLfV_M=chdS8}<7l6~)Y+T}g9kmisGPuE#{ zegxoO>oH#ylW$DdTTSOBn)m)v>8$#a7xy85B75nHQuVy?t7*cT z9)W*H4Tn)cRcoji@`qq(Jb(+x$TAxf@n4{{ title }} - HabitTracker - + + + + + + + + + + + @@ -53,9 +63,6 @@
{% block content %} {% endblock %} - - -
\ No newline at end of file diff --git a/templates/profile.html b/templates/profile.html index 7ae87be..06f64bd 100644 --- a/templates/profile.html +++ b/templates/profile.html @@ -5,58 +5,99 @@

Account Einstellungen👤

+
-
-
Profilbild
-
- Profile Image -
- Profilbild bearbeiten +
+
+
Profilbild
+
+ Profile Image +
+ Profilbild aktualisieren +
+
+
+
+ +
-
-
- -
+
+
Name
+

{{ name }}

+
Email
+

{{ email }}

+
-
-
- - -
- {{ errors.get('newName', '') }} + +
+
+
Passwort ändern
+ +
+ + +
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + + + + {% endblock %} \ No newline at end of file From 94fa2f567ff9b0d71c0afbf1f241a5a4e510b605 Mon Sep 17 00:00:00 2001 From: Verox001 Date: Tue, 20 Feb 2024 09:58:34 +0100 Subject: [PATCH 14/16] Reverted merge commit from model --- models/User.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/models/User.py b/models/User.py index e322983..066ebf5 100644 --- a/models/User.py +++ b/models/User.py @@ -1,3 +1,5 @@ +from datetime import datetime + from flask_login import UserMixin from db.SQLiteClient import (create_user, get_user, get_user_by_email, update_user, delete_user, get_habitLists, get_heatmap_value) @@ -59,7 +61,14 @@ class User(UserMixin): # Returns all heatmap-values from the last 28 days def get_heatmap(self) -> list: + # get current day of week as integer. monday is 1 and sunday is 7 + weekday = datetime.today().weekday() + 1 heatmap = [] + + # append the heatmap values of the current week + for day in range(0, weekday): + heatmap.append(0) + for day in range (0, 28): value = get_heatmap_value(self.id, day) heatmap.append(value) From 08ff2cfc16ff7ef683481ae347ffef1d3678061b Mon Sep 17 00:00:00 2001 From: nikolaswollenberg Date: Tue, 20 Feb 2024 10:00:31 +0100 Subject: [PATCH 15/16] Fixed bug --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index d433c6c..7387f4b 100644 --- a/app.py +++ b/app.py @@ -401,7 +401,7 @@ def check_habit(): if current_user not in users: return {"error": "Habit does not belong to user"} - trackings = habit.get_habitTracking() + trackings = habit.get_habitTrackings() # Check if habit has been tracked today delete_tracking = None From f07456a95bf4c1d0cc87ae5ebe7b52298b918dcc Mon Sep 17 00:00:00 2001 From: Verox001 Date: Tue, 20 Feb 2024 10:01:08 +0100 Subject: [PATCH 16/16] Reduced weekday count by one --- models/User.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/User.py b/models/User.py index 066ebf5..d455980 100644 --- a/models/User.py +++ b/models/User.py @@ -61,8 +61,8 @@ class User(UserMixin): # Returns all heatmap-values from the last 28 days def get_heatmap(self) -> list: - # get current day of week as integer. monday is 1 and sunday is 7 - weekday = datetime.today().weekday() + 1 + # get current day of week as integer. monday is 0 and sunday is 6 + weekday = datetime.today().weekday() heatmap = [] # append the heatmap values of the current week