Skip to content

Commit 18dc94a

Browse files
feat: fixed the intial db initailization issue
1 parent 800c61d commit 18dc94a

2 files changed

Lines changed: 37 additions & 26 deletions

File tree

src/models/__init__.py

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,42 +21,49 @@
2121
logger.info("Creating tables")
2222
db.create_all()
2323

24-
# initialize default dashboard user_dashboard_settings for users
24+
# Load predefined users from JSON file and add them to the database if not already present
25+
pre_defined_users_json = os.path.join(ROOT_DIR, "src/assets/predefine_user.json")
26+
try:
27+
with open(pre_defined_users_json, "r") as file:
28+
pre_defined_users = json.load(file)
29+
30+
for user_data in pre_defined_users:
31+
if not UserProfile.query.filter_by(user_level=user_data["user_level"]).first():
32+
hashed_password = generate_password_hash(user_data["password"])
33+
user = UserProfile(
34+
username=user_data["username"],
35+
email=user_data["email"],
36+
password=hashed_password,
37+
user_level=user_data["user_level"],
38+
receive_email_alerts=user_data["receive_email_alerts"],
39+
profession=user_data["profession"],
40+
)
41+
42+
db.session.add(user)
43+
db.session.commit()
44+
logger.info(f"Added predefined user: {user_data['username']}")
45+
46+
except (FileNotFoundError, json.JSONDecodeError) as e:
47+
logger.error(f"Error loading predefined users: {e}")
48+
49+
# Initialize default dashboard settings for all users
2550
users = UserProfile.query.all()
2651
for user in users:
2752
if not user.dashboard_settings:
53+
# Initialize settings with defaults if not set
2854
db.session.add(UserDashboardSettings(user_id=user.id))
2955
db.session.add(UserCardSettings(user_id=user.id))
3056
db.session.add(PageToggleSettings(user_id=user.id))
31-
32-
db.session.commit()
33-
logger.info("Initial card data added.")
34-
db.session.commit()
35-
36-
pre_defined_users_json = os.path.join(ROOT_DIR, "src/assets/predefine_user.json")
37-
with open(pre_defined_users_json, "r") as file:
38-
pre_defined_users = json.load(file)
39-
for user in pre_defined_users:
40-
if not UserProfile.query.filter_by(user_level=user["user_level"]).first():
41-
hashed_password = generate_password_hash(user["password"])
42-
user = UserProfile(
43-
username=user["username"],
44-
email=user["email"],
45-
password=hashed_password,
46-
user_level=user["user_level"],
47-
receive_email_alerts=user["receive_email_alerts"],
48-
profession=user["profession"],
49-
)
5057

51-
db.session.add(user)
52-
db.session.commit()
58+
db.session.commit() # Commit once per user
59+
logger.info(f"Initial settings data added for user ID: {user.id}")
5360

54-
# Initialize default user_dashboard_settings
61+
# Initialize default general settings if not present
5562
general_settings = GeneralSettings.query.first()
5663
if not general_settings:
5764
db.session.add(GeneralSettings())
5865
db.session.commit()
59-
66+
logger.info("General settings initialized.")
6067

6168
# ibject for all templates
6269
@app.context_processor

src/routes/dashboard.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import datetime
2-
from flask import render_template, blueprints, jsonify
2+
from flask import render_template, blueprints, jsonify, redirect, url_for
33
from flask_login import login_required, current_user
44

55
from src.config import app
@@ -11,7 +11,11 @@
1111
@app.route("/", methods=["GET"])
1212
@login_required
1313
def dashboard():
14-
user_dashboard_settings = UserDashboardSettings.query.first()
14+
# if user is not authenticated, redirect to login page
15+
if not current_user.is_authenticated:
16+
return redirect(url_for("login"))
17+
user_id = current_user.id if current_user.is_authenticated else 0
18+
user_dashboard_settings = UserDashboardSettings.query.filter_by(user_id=user_id).first()
1519
system_info = get_system_info()
1620

1721
# Fetch the last speedtest result

0 commit comments

Comments
 (0)