From 1786f208df3ec4526974bd4842e8267fb4fa7468 Mon Sep 17 00:00:00 2001 From: denikryt Date: Sun, 15 Jun 2025 16:08:04 +0300 Subject: [PATCH 1/4] Email implementation --- app/api/web_api.py | 2 +- app/models/user.py | 24 +++++++++++--------- app/schema.sql | 2 +- app/templates/prismo/users.html | 39 +++++++++++++++++++++++---------- 4 files changed, 43 insertions(+), 24 deletions(-) diff --git a/app/api/web_api.py b/app/api/web_api.py index 68c6b61..8261e28 100644 --- a/app/api/web_api.py +++ b/app/api/web_api.py @@ -85,7 +85,7 @@ def api_get_user_permissions(): @web_api.route("/api/users", methods=["POST"]) def api_add_user(): user_data = request.get_json() - user = User(user_data["name"], user_data["key"]) + user = User(user_data["name"], user_data["key"], user_data["email"]) number_of_new_user_added = user.save() diff --git a/app/models/user.py b/app/models/user.py index fa452f7..01f3a72 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -3,10 +3,10 @@ class User: - def __init__(self, name, key, slack_id=None): + def __init__(self, name, key, email=None): self.name = name self.key = key - self.slack_id = slack_id + self.email = email @classmethod def get_by_key(cls, key): @@ -34,14 +34,14 @@ def save(self): if existing_user: # Update existing user data cursor.execute( - "UPDATE users SET name = ?, slack_id = ? WHERE key = ?", - (self.name, self.slack_id, self.key), + "UPDATE users SET name = ?, key = ? WHERE email = ?", + (self.name, self.key, self.email if self.email else None), ) else: # Create new user cursor.execute( - "INSERT INTO users (name, key, slack_id) VALUES (?, ?, ?)", - (self.name, self.key, self.slack_id), + "INSERT INTO users (name, key, email) VALUES (?, ?, ?)", + (self.name, self.key, self.email if self.email else None), ) number_of_new_user = 1 conn.commit() @@ -79,7 +79,7 @@ def get_permissions(cls, user_key=None): if user_key: cursor.execute( """ - SELECT users.name, users.key, + SELECT users.name, users.key, users.email, (SELECT operation_time FROM event_logs WHERE user_key = users.key @@ -93,7 +93,7 @@ def get_permissions(cls, user_key=None): else: cursor.execute( """ - SELECT users.name, users.key, + SELECT users.name, users.key, users.email, (SELECT operation_time FROM event_logs WHERE user_key = users.key @@ -106,7 +106,9 @@ def get_permissions(cls, user_key=None): for row in cursor.fetchall(): user_name = row[0] user_key = row[1] - latest_activity = row[2] + user_email = row[2] if row[2] else None # Handle email being None + latest_activity = row[3] + # Get device permissions for the current user device_permissions = [] @@ -138,6 +140,7 @@ def get_permissions(cls, user_key=None): user_record = { "user_name": user_name, "user_key": user_key, + "user_email": user_email, "permissions": device_permissions, "latest_activity": latest_activity, } @@ -145,7 +148,8 @@ def get_permissions(cls, user_key=None): # Close the database connection conn.close() - + + print(f"User data fetched: {user_data}") # Debugging output return user_data def has_permission_for_device(self, device_id): diff --git a/app/schema.sql b/app/schema.sql index aa0e1c3..66d8fb6 100644 --- a/app/schema.sql +++ b/app/schema.sql @@ -8,7 +8,7 @@ CREATE TABLE IF NOT EXISTS users ( name TEXT NOT NULL, key TEXT NOT NULL, - slack_id TEXT DEFAULT NULL + email TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS permissions ( diff --git a/app/templates/prismo/users.html b/app/templates/prismo/users.html index c897055..f366332 100644 --- a/app/templates/prismo/users.html +++ b/app/templates/prismo/users.html @@ -6,8 +6,9 @@
Add last used RFID card as new user:
- + +
@@ -46,8 +47,9 @@
Add last used RFID card as new user: Add last used RFID card as new user: Add last used RFID card as new user: Delete' } }) @@ -135,14 +138,26 @@
Add last used RFID card as new user: ` - }, - visible: key !== 'key', - title: key.charAt(0).toUpperCase() + key.slice(1) - })) + return Object.keys(data[0]).map(key => { + // Force the email column to be visible and render as plain text + if (key === 'email') { + return { + data: row => row.email || '', + visible: true, + title: 'Email' + } + } + return { + data: (row) => { + const value = row[key] + return typeof value === 'string' + ? value + : `` + }, + visible: key !== 'key', + title: key.charAt(0).toUpperCase() + key.slice(1) + } + }) } async function initializeDataTable() { From 3e2bba33b82646444cf9d0184971170cfad258f6 Mon Sep 17 00:00:00 2001 From: denikryt Date: Sun, 15 Jun 2025 16:25:07 +0300 Subject: [PATCH 2/4] ignore R0914 pylint rule --- .github/workflows/pylint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 9f58452..f7da68b 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -20,7 +20,7 @@ jobs: pip install -r requirements.txt - name: Analysing the code with pylint run: | - pylint app --disable=C0116,C0114,C0115,C0411,E0401,W0611,W0622,W0719,C0103,W1514,R0903,R1732 + pylint app --disable=C0116,C0114,C0115,C0411,E0401,W0611,W0622,W0719,C0103,W1514,R0903,R1732,R0914 - name: Analysing the code with pycodestyle run: | pycodestyle app From d1c7961d6c08b519d218b1890df1e88835d302d3 Mon Sep 17 00:00:00 2001 From: denikryt Date: Sun, 15 Jun 2025 16:27:18 +0300 Subject: [PATCH 3/4] whitespaces removed --- app/models/user.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/models/user.py b/app/models/user.py index 01f3a72..1edb656 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -108,7 +108,6 @@ def get_permissions(cls, user_key=None): user_key = row[1] user_email = row[2] if row[2] else None # Handle email being None latest_activity = row[3] - # Get device permissions for the current user device_permissions = [] @@ -149,7 +148,7 @@ def get_permissions(cls, user_key=None): # Close the database connection conn.close() - print(f"User data fetched: {user_data}") # Debugging output + print(f"User data fetched: {user_data}") return user_data def has_permission_for_device(self, device_id): From c2e5765d94dcd2b1ae813928111a8b14dc3108c6 Mon Sep 17 00:00:00 2001 From: denikryt Date: Sun, 15 Jun 2025 16:28:48 +0300 Subject: [PATCH 4/4] whitespaces removed --- app/models/user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.py b/app/models/user.py index 1edb656..f4d2ca3 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -147,7 +147,7 @@ def get_permissions(cls, user_key=None): # Close the database connection conn.close() - + print(f"User data fetched: {user_data}") return user_data