|
21 | 21 | logger.info("Creating tables") |
22 | 22 | db.create_all() |
23 | 23 |
|
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 |
25 | 50 | users = UserProfile.query.all() |
26 | 51 | for user in users: |
27 | 52 | if not user.dashboard_settings: |
| 53 | + # Initialize settings with defaults if not set |
28 | 54 | db.session.add(UserDashboardSettings(user_id=user.id)) |
29 | 55 | db.session.add(UserCardSettings(user_id=user.id)) |
30 | 56 | 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 | | - ) |
50 | 57 |
|
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}") |
53 | 60 |
|
54 | | - # Initialize default user_dashboard_settings |
| 61 | + # Initialize default general settings if not present |
55 | 62 | general_settings = GeneralSettings.query.first() |
56 | 63 | if not general_settings: |
57 | 64 | db.session.add(GeneralSettings()) |
58 | 65 | db.session.commit() |
59 | | - |
| 66 | + logger.info("General settings initialized.") |
60 | 67 |
|
61 | 68 | # ibject for all templates |
62 | 69 | @app.context_processor |
|
0 commit comments