Skip to content

Commit 38b23e3

Browse files
chore: refactor
1 parent 4c1a8b3 commit 38b23e3

48 files changed

Lines changed: 274 additions & 222 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/models/__init__.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from src.models.user_card_settings import UserCardSettings
33
from src.models.dashboard_netowrk import DashboardNetworkSettings
44
from src.models.user_dashboard_settings import UserDashboardSettings
5-
from src.models.feature_toggle_settings import FeatureToggleSettings
5+
from src.models.feature_toggle_settings import PageToggleSettings
66
from src.models.application_general_settings import ApplicationGeneralSettings
77
from src.models.smtp_configuration import SMTPSettings
88
from src.models.network_speed_test_result import NetworkSpeedTestResult
@@ -25,7 +25,7 @@
2525
if not user.dashboard_settings:
2626
db.session.add(UserDashboardSettings(user_id=user.id))
2727
db.session.add(UserCardSettings(user_id=user.id))
28-
db.session.add(FeatureToggleSettings(user_id=user.id))
28+
db.session.add(PageToggleSettings(user_id=user.id))
2929
db.session.commit()
3030

3131
pre_defined_users_json = os.path.join(ROOT_DIR, "src/assets/predefine_user.json")
@@ -57,19 +57,19 @@
5757
@app.context_processor
5858
def inject_settings():
5959
if current_user.is_anonymous:
60-
return dict(user_dashboard_settings=None, card_settings=None, feature_toggles_settings=None, general_settings=None)
60+
return dict(user_dashboard_settings=None, card_settings=None, page_toggles_settings=None, general_settings=None)
6161
general_settings = ApplicationGeneralSettings.query.first()
6262
card_settings = UserCardSettings.query.filter_by(user_id=current_user.id).first()
6363
user_dashboard_settings = UserDashboardSettings.query.filter_by(
6464
user_id=current_user.id
6565
).first() # Retrieve user-specific user_dashboard_settings from DB
66-
feature_toggles_settings = FeatureToggleSettings.query.filter_by(
66+
page_toggles_settings = PageToggleSettings.query.filter_by(
6767
user_id=current_user.id
6868
).first()
6969
all_settings = dict(
7070
user_dashboard_settings=user_dashboard_settings,
7171
general_settings=general_settings,
7272
card_settings=card_settings,
73-
feature_toggles_settings=feature_toggles_settings,
73+
page_toggles_settings=page_toggles_settings,
7474
)
7575
return all_settings

src/models/feature_toggle_settings.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import datetime
22
from src.config import db
33

4-
class FeatureToggleSettings(db.Model):
4+
class PageToggleSettings(db.Model):
55
__tablename__ = 'feature_toggle_settings'
66

77
id = db.Column(db.Integer, primary_key=True)
@@ -13,5 +13,3 @@ class FeatureToggleSettings(db.Model):
1313
is_disk_info_enabled = db.Column(db.Boolean, default=True)
1414
is_network_info_enabled = db.Column(db.Boolean, default=True)
1515
is_process_info_enabled = db.Column(db.Boolean, default=True)
16-
refresh_interval = db.Column(db.Integer, default=10)
17-

src/models/user_dashboard_settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ class UserDashboardSettings(db.Model):
88
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
99
speedtest_cooldown = db.Column(db.Integer, default=60)
1010
number_of_speedtests = db.Column(db.Integer, default=1)
11-
11+
refresh_interval = db.Column(db.Integer, default=10)

src/routes/auth.py

Lines changed: 24 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import os
22
import datetime
33
from flask import render_template, redirect, url_for, request, blueprints, flash
4-
from flask_login import LoginManager, login_user, login_required, logout_user, current_user
4+
from flask_login import LoginManager, login_user, logout_user, current_user
55
from werkzeug.security import generate_password_hash, check_password_hash
66

77
from src.scripts.email_me import send_smpt_email
88
from src.config import app, db
9-
from src.models import UserProfile, UserCardSettings, FeatureToggleSettings, UserDashboardSettings
9+
from src.models import UserProfile, UserCardSettings, PageToggleSettings, UserDashboardSettings
1010
from src.utils import render_template_from_file, ROOT_DIR
1111
from src.routes.helper import get_email_addresses
1212

@@ -29,41 +29,41 @@ def login():
2929
if user and check_password_hash(user.password, password):
3030
login_user(user)
3131
receiver_email = current_user.email
32-
admin_email_address = get_email_addresses(user_level='admin', receive_email_alerts=True)
33-
# if receiver_email in admin_email_address don't send email to the admin
32+
admin_emails_with_alerts = get_email_addresses(user_level='admin', receive_email_alerts=True)
33+
# if receiver_email in admin_emails_with_alerts don't send email to the admin
3434
# log in alert to admin
3535

36-
if admin_email_address:
37-
if receiver_email in admin_email_address:
38-
admin_email_address.remove(receiver_email)
39-
if admin_email_address:
36+
if admin_emails_with_alerts:
37+
if receiver_email in admin_emails_with_alerts:
38+
admin_emails_with_alerts.remove(receiver_email)
39+
if admin_emails_with_alerts:
4040
context = {"username": current_user.username, "login_time": datetime.datetime.now()}
4141

4242
login_alert_template = os.path.join(ROOT_DIR, "src/templates/email_templates/admin_login_alert.html")
43-
html_body = render_template_from_file(login_alert_template, **context)
43+
email_body = render_template_from_file(login_alert_template, **context)
4444

45-
send_smpt_email(admin_email_address, 'Login Alert', html_body, is_html=True)
45+
send_smpt_email(admin_emails_with_alerts, 'Login Alert', email_body, is_html=True)
4646

4747
# log in alert to user
4848
if receiver_email:
4949
context = {"username": current_user.username, "login_time": datetime.datetime.now()}
5050

5151
login_message_template = os.path.join(ROOT_DIR, "src/templates/email_templates/login.html")
52-
html_body = render_template_from_file(login_message_template, **context)
52+
email_body = render_template_from_file(login_message_template, **context)
5353

54-
send_smpt_email(receiver_email, 'Login Alert', html_body, is_html=True)
54+
send_smpt_email(receiver_email, 'Login Alert', email_body, is_html=True)
5555
return redirect(url_for('dashboard'))
5656
flash('Invalid username or password', 'danger')
57-
return render_template('login.html')
57+
return render_template('auths/login.html')
5858

5959
@app.route('/logout')
6060
def logout():
6161
receiver_email = current_user.email
6262
if receiver_email:
6363
context = {"username": current_user.username}
6464
logout_message_template = os.path.join(ROOT_DIR, "src/templates/email_templates/logout.html")
65-
html_body = render_template_from_file(logout_message_template, **context)
66-
send_smpt_email(receiver_email, 'Logout Alert', html_body, is_html=True)
65+
email_body = render_template_from_file(logout_message_template, **context)
66+
send_smpt_email(receiver_email, 'Logout Alert', email_body, is_html=True)
6767
logout_user()
6868
return redirect(url_for('login'))
6969

@@ -96,18 +96,18 @@ def signup():
9696
profession=profession)
9797

9898
# Get Admin Emails with Alerts Enabled:
99-
admin_email_address = get_email_addresses(user_level='admin', receive_email_alerts=True)
100-
if admin_email_address:
99+
admin_emails_with_alerts = get_email_addresses(user_level='admin', receive_email_alerts=True)
100+
if admin_emails_with_alerts:
101101
subject = "New User Alert"
102102
context = {
103103
"username": new_user.username,
104104
"email": new_user.email,
105-
"signup_time": datetime.datetime.now(),
105+
"registration_time": datetime.datetime.now(),
106106
"user_level": new_user.user_level
107107
}
108108
new_user_alert_template = os.path.join(ROOT_DIR, "src/templates/email_templates/new_user_alert.html")
109-
html_body = render_template_from_file(new_user_alert_template, **context)
110-
send_smpt_email(admin_email_address, subject, html_body, is_html=True)
109+
email_body = render_template_from_file(new_user_alert_template, **context)
110+
send_smpt_email(admin_emails_with_alerts, subject, email_body, is_html=True)
111111

112112
# Send email to the new user
113113
subject = "Welcome to the systemGuard"
@@ -116,75 +116,16 @@ def signup():
116116
"email": new_user.email,
117117
}
118118
welcome_template = os.path.join(ROOT_DIR, "src/templates/email_templates/welcome.html")
119-
html_body = render_template_from_file(welcome_template, **context)
120-
send_smpt_email(email, subject, html_body, is_html=True)
119+
email_body = render_template_from_file(welcome_template, **context)
120+
send_smpt_email(email, subject, email_body, is_html=True)
121121

122122
db.session.add(new_user)
123123
db.session.commit()
124124
db.session.add(UserDashboardSettings(user_id=new_user.id))
125125
db.session.add(UserCardSettings(user_id=new_user.id))
126-
db.session.add(FeatureToggleSettings(user_id=new_user.id))
126+
db.session.add(PageToggleSettings(user_id=new_user.id))
127127
db.session.commit()
128128
flash('Account created successfully, please log in.')
129129
return redirect(url_for('login'))
130130

131-
return render_template('signup.html')
132-
133-
@app.route("/send_email", methods=["GET", "POST"])
134-
@login_required
135-
def send_email_page():
136-
dasboard_settings = UserCardSettings.query.first()
137-
receiver_email = get_email_addresses(user_level='admin', receive_email_alerts=True)
138-
if dasboard_settings:
139-
enable_alerts = dasboard_settings.enable_alerts
140-
if request.method == "POST":
141-
receiver_email = request.form.get("recipient")
142-
subject = request.form.get("subject")
143-
body = request.form.get("body")
144-
priority = request.form.get("priority")
145-
attachment = request.files.get("attachment")
146-
147-
if not receiver_email or not subject or not body:
148-
flash("Please provide recipient, subject, and body.", "danger")
149-
return redirect(url_for('send_email_page'))
150-
151-
print("Priority:", priority)
152-
print("receiver_email:", receiver_email)
153-
154-
# on high priority, send to all users or admin users even the receive_email_alerts is False
155-
if priority == "high" and receiver_email == "all_users":
156-
print("Sending to all users")
157-
receiver_email = get_email_addresses(fetch_all_users=True)
158-
elif priority == "high" and receiver_email == "admin_users":
159-
print("Sending to admin users")
160-
receiver_email = get_email_addresses(user_level='admin', fetch_all_users=True)
161-
162-
# priority is low, send to users with receive_email_alerts is True
163-
if priority == "low" and receiver_email == "all_users":
164-
print("Sending to all users with receive_email_alerts=True")
165-
receiver_email = get_email_addresses(receive_email_alerts=True)
166-
elif priority == "low" and receiver_email == "admin_users":
167-
print("Sending to admin users with receive_email_alerts=True")
168-
receiver_email = get_email_addresses(user_level='admin', receive_email_alerts=True)
169-
170-
if not receiver_email:
171-
flash("No users found to send email to.", "danger")
172-
return redirect(url_for('send_email_page'))
173-
174-
# Save attachment if any
175-
attachment_path = None
176-
if attachment:
177-
attachment_path = f"/tmp/{attachment.filename}"
178-
attachment.save(attachment_path)
179-
try:
180-
respose = send_smpt_email(receiver_email, subject, body, attachment_path)
181-
print(respose)
182-
if respose and respose.get("status") == "success":
183-
flash(respose.get("message"), "success")
184-
except Exception as e:
185-
flash(f"Failed to send email: {str(e)}", "danger")
186-
187-
return redirect(url_for('send_email_page'))
188-
189-
return render_template("send_email.html", enable_alerts=enable_alerts)
190-
131+
return render_template('auths/signup.html')

src/routes/cpu_info.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55

66
from src.config import app
77
from src.utils import get_cpu_core_count, get_cpu_frequency, cpu_usage_percent, get_cpu_temp, get_cached_value
8-
from src.models import FeatureToggleSettings
8+
from src.models import PageToggleSettings
99

1010
cpu_info_bp = blueprints.Blueprint("cpu_usage", __name__)
1111

1212
@app.route("/cpu_usage")
1313
@login_required
1414
def cpu_usage():
15-
feature_toggles_settings = FeatureToggleSettings.query.first()
16-
if not feature_toggles_settings.is_cpu_info_enabled:
15+
page_toggles_settings = PageToggleSettings.query.first()
16+
if not page_toggles_settings.is_cpu_info_enabled:
1717
flash("You do not have permission to view this page.", "danger")
1818
return render_template("error/permission_denied.html")
1919

src/routes/disk_info.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
from flask_login import login_required
55
from src.config import app
66
from src.utils import get_cached_value, get_disk_free, get_disk_total, get_disk_used, get_disk_usage_percent
7-
from src.models import FeatureToggleSettings
7+
from src.models import PageToggleSettings
88

99
disk_info_bp = blueprints.Blueprint("disk_usage", __name__)
1010

1111
@app.route("/disk_usage")
1212
@login_required
1313
def disk_usage():
14-
feature_toggles_settings = FeatureToggleSettings.query.first()
15-
if not feature_toggles_settings.is_disk_info_enabled:
14+
page_toggles_settings = PageToggleSettings.query.first()
15+
if not page_toggles_settings.is_disk_info_enabled:
1616
flash("You do not have permission to view this page.", "danger")
1717
return render_template("error/permission_denied.html")
1818
disk_total = get_cached_value("disk_total", get_disk_total)

src/routes/memory_info.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44

55
from src.config import app
66
from src.utils import get_cached_value, get_memory_percent, get_memory_available, get_memory_used, get_swap_memory_info
7-
from src.models import FeatureToggleSettings
7+
from src.models import PageToggleSettings
88

99
memory_info_bp = blueprints.Blueprint("memory_usage", __name__)
1010

1111

1212
@app.route("/memory_usage")
1313
@login_required
1414
def memory_usage():
15-
feature_toggles_settings = FeatureToggleSettings.query.first()
16-
if not feature_toggles_settings.is_memory_info_enabled:
15+
page_toggles_settings = PageToggleSettings.query.first()
16+
if not page_toggles_settings.is_memory_info_enabled:
1717
flash("You do not have permission to view this page.", "danger")
1818
return render_template("error/permission_denied.html")
1919
memory_available = get_cached_value("memory_available", get_memory_available)

src/routes/network_info.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
from flask_login import login_required
44
from src.config import app
55
from src.utils import get_established_connections
6-
from src.models import FeatureToggleSettings
6+
from src.models import PageToggleSettings
77

88
network_info_bp = blueprints.Blueprint("network_stats", __name__)
99

1010
@app.route("/network_stats")
1111
@login_required
1212
def network_stats():
13-
feature_toggles_settings = FeatureToggleSettings.query.first()
14-
if not feature_toggles_settings.is_network_info_enabled:
13+
page_toggles_settings = PageToggleSettings.query.first()
14+
if not page_toggles_settings.is_network_info_enabled:
1515
flash("You do not have permission to view this page.", "danger")
1616
return render_template("error/permission_denied.html")
1717
net_io = psutil.net_io_counters()

0 commit comments

Comments
 (0)