Skip to content

Commit 51314e9

Browse files
feat: enable cache and other buttons added in settings
1 parent 7766c7b commit 51314e9

File tree

16 files changed

+288
-36
lines changed

16 files changed

+288
-36
lines changed

src/models.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ class DashboardSettings(db.Model):
2525
speedtest_cooldown = db.Column(db.Integer, default=1)
2626
number_of_speedtests = db.Column(db.Integer, default=1)
2727
timezone = db.Column(db.String(50), default="Asia/Kolkata")
28+
is_cpu_info_enabled = db.Column(db.Boolean, default=True)
29+
is_memory_info_enabled = db.Column(db.Boolean, default=True)
30+
is_disk_info_enabled = db.Column(db.Boolean, default=True)
31+
is_network_info_enabled = db.Column(db.Boolean, default=True)
32+
is_process_info_enabled = db.Column(db.Boolean, default=True)
33+
is_speedtest_enabled = db.Column(db.Boolean, default=True)
34+
enable_cache = db.Column(db.Boolean, default=True)
2835

2936
def __repr__(self):
3037
return f"<DashboardSettings {self.speedtest_cooldown}, {self.timezone}, {self.number_of_speedtests}>"
@@ -76,4 +83,10 @@ class User(db.Model, UserMixin):
7683
hashed_password = generate_password_hash('adminpassword')
7784
admin_user = User(username='admin', password=hashed_password, user_level='admin')
7885
db.session.add(admin_user)
79-
db.session.commit()
86+
db.session.commit()
87+
88+
# ibject for all templates
89+
@app.context_processor
90+
def inject_settings():
91+
settings = DashboardSettings.query.first()
92+
return dict(settings=settings)

src/routes/cpu_info.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@
33

44
from src.config import app
55
from src.utils import get_cpu_core_count, get_cpu_frequency, cpu_usage_percent, get_cpu_temp, get_cached_value
6+
from src.models import DashboardSettings
67

78
cpu_info_bp = blueprints.Blueprint("cpu_usage", __name__)
89

910
@app.route("/cpu_usage")
1011
def cpu_usage():
12+
settings = DashboardSettings.query.first()
13+
if not settings.is_cpu_info_enabled:
14+
return render_template("error/404.html")
15+
1116
current_temp, high_temp, critical_temp = get_cpu_temp()
1217
cpu_core = get_cached_value("cpu_core", get_cpu_core_count)
1318
system_info = {

src/routes/disk_info.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@
44

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 DashboardSettings
78

89
disk_info_bp = blueprints.Blueprint("disk_usage", __name__)
910

1011
@app.route("/disk_usage")
1112
def disk_usage():
13+
settings = DashboardSettings.query.first()
14+
if not settings.is_disk_info_enabled:
15+
return render_template("error/404.html")
1216
disk_total = get_cached_value("disk_total", get_disk_total)
1317
system_info = {
1418
"disk_usage": get_disk_usage_percent(),

src/routes/memory_info.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33

44
from src.config import app
55
from src.utils import get_cached_value, get_memory_percent, get_memory_available, get_memory_used, get_swap_memory_info
6+
from src.models import DashboardSettings
67

78
memory_info_bp = blueprints.Blueprint("memory_usage", __name__)
89

910

1011
@app.route("/memory_usage")
1112
def memory_usage():
12-
13+
settings = DashboardSettings.query.first()
14+
if not settings.is_memory_info_enabled:
15+
return render_template("error/404.html")
1316
memory_available = get_cached_value("memory_available", get_memory_available)
1417
system_info = {
1518
"memory_percent": get_memory_percent(),

src/routes/network_info.py

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

44
from src.config import app
55
from src.utils import get_established_connections
6+
from src.models import DashboardSettings
7+
68
network_info_bp = blueprints.Blueprint("network_stats", __name__)
79

810
@app.route("/network_stats")
911
def network_stats():
12+
settings = DashboardSettings.query.first()
13+
if not settings.is_network_info_enabled:
14+
return render_template("error/404.html")
1015
net_io = psutil.net_io_counters()
1116
ipv4_ip, ipv6_ip = get_established_connections()
1217
system_info = {

src/routes/process.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
from flask_login import login_required, current_user
44
from src.config import app
55
from src.utils import get_top_processes
6+
from src.models import DashboardSettings
67

78
process_bp = blueprints.Blueprint("process", __name__)
89

910
@app.route("/process", methods=["GET", "POST"])
1011
@login_required
1112
def process():
13+
settings = DashboardSettings.query.first()
14+
if not settings.is_process_info_enabled:
15+
return render_template("error/404.html")
1216
if current_user.user_level != "admin":
1317
flash("You do not have permission to view this page.", "danger")
1418
return redirect(url_for("dashboard"))

src/routes/settings.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,29 @@
11
from flask import render_template, request, flash, blueprints
2-
32
from src.config import app, db
43
from src.models import DashboardSettings
54

65
settings_bp = blueprints.Blueprint("settings", __name__)
76

87
@app.route("/settings", methods=["GET", "POST"])
98
def settings():
10-
# Fetch the settings from the database and update them
9+
# Fetch the settings from the database
1110
settings = DashboardSettings.query.first()
1211
if settings:
1312
if request.method == "POST":
13+
# Update settings from the form inputs
1414
settings.speedtest_cooldown = int(request.form["speedtest_cooldown"])
1515
settings.number_of_speedtests = int(request.form["number_of_speedtests"])
1616
settings.timezone = request.form["timezone"]
17+
settings.is_cpu_info_enabled = "is_cpu_info_enabled" in request.form
18+
settings.is_memory_info_enabled = "is_memory_info_enabled" in request.form
19+
settings.is_disk_info_enabled = "is_disk_info_enabled" in request.form
20+
settings.is_network_info_enabled = "is_network_info_enabled" in request.form
21+
settings.is_process_info_enabled = "is_process_info_enabled" in request.form
22+
settings.is_speedtest_enabled = "is_speedtest_enabled" in request.form
23+
settings.enable_cache = "enable_cache" in request.form
24+
25+
# Commit the changes to the database
1726
db.session.commit()
1827
flash("Settings updated successfully!", "success")
28+
1929
return render_template("settings.html", settings=settings)
20-

src/scripts/locustfile.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os
2+
13
from locust import HttpUser, TaskSet, task, between
24
from locust.exception import StopUser
35

@@ -44,5 +46,4 @@ class WebsiteUser(HttpUser):
4446
wait_time = between(1, 5) # Time to wait between tasks
4547

4648
if __name__ == "__main__":
47-
import os
48-
# os.system("locust -f locustfile.py --host=http://localhost:5000")
49+
os.system("locust -f locustfile.py --host=http://localhost:5000")

src/static/css/404.css

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
.container {
2+
text-align: center;
3+
background-color: #ffffff;
4+
padding: 30px 50px;
5+
border-radius: 8px;
6+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
7+
}
8+
9+
h1 {
10+
font-size: 100px;
11+
margin: 0;
12+
color: #dc3545;
13+
}
14+
15+
p {
16+
font-size: 20px;
17+
margin: 20px 0;
18+
color: #6c757d;
19+
}
20+
21+
.btn {
22+
display: inline-block;
23+
padding: 10px 20px;
24+
font-size: 16px;
25+
color: #ffffff;
26+
background-color: #007bff;
27+
border: none;
28+
border-radius: 4px;
29+
text-decoration: none;
30+
transition: background-color 0.3s ease;
31+
}
32+
33+
.btn:hover {
34+
background-color: #0056b3;
35+
}

src/static/css/settings.css

Lines changed: 68 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,93 @@
1-
.container {
1+
.settings-container {
22
max-width: 600px;
3-
margin: auto;
4-
background: white;
3+
margin: 0 auto;
54
padding: 20px;
5+
background-color: #f8f9fa;
66
border-radius: 8px;
7-
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
8-
margin-bottom: 10px;
7+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
98
}
109

11-
h1 {
10+
.settings-title {
11+
font-size: 28px;
12+
color: #343a40;
1213
margin-bottom: 20px;
13-
font-size: 24px;
14+
text-align: center;
15+
}
16+
17+
.settings-form {
18+
display: flex;
19+
flex-direction: column;
20+
gap: 15px;
1421
}
1522

1623
.form-group {
17-
margin-bottom: 15px;
24+
display: flex;
25+
flex-direction: row;
26+
align-items: center; /* Align items vertically in the center */
27+
justify-content: space-between; /* Space out label and input */
28+
margin-bottom: 10px;
1829
}
1930

2031
.form-group label {
21-
display: block;
22-
margin-bottom: 5px;
23-
font-weight: bold;
32+
font-weight: 600;
33+
color: #495057;
34+
margin-right: 10px; /* Add some space between the label and checkbox */
2435
}
2536

26-
.form-group input,
37+
.form-group input[type="checkbox"] {
38+
width: 20px;
39+
height: 20px;
40+
cursor: pointer;
41+
margin: 0; /* Remove any default margin */
42+
}
43+
44+
.form-group input[type="number"],
2745
.form-group select {
28-
width: 100%;
2946
padding: 8px;
30-
box-sizing: border-box;
47+
border: 1px solid #ced4da;
48+
border-radius: 4px;
49+
background-color: #ffffff;
50+
font-size: 16px;
51+
width: 100%;
52+
}
53+
54+
@media (max-width: 576px) {
55+
.form-group {
56+
flex-direction: column;
57+
align-items: flex-start;
58+
}
59+
60+
.form-group label {
61+
margin-bottom: 5px;
62+
}
3163
}
3264

33-
.btn {
65+
.btn-primary {
66+
padding: 10px 20px;
3467
background-color: #007bff;
35-
color: white;
36-
padding: 10px 15px;
68+
color: #ffffff;
3769
border: none;
38-
border-radius: 5px;
70+
border-radius: 4px;
3971
cursor: pointer;
72+
font-size: 16px;
73+
text-align: center;
74+
transition: background-color 0.3s ease;
4075
}
4176

42-
.btn:hover {
77+
.btn-primary:hover {
4378
background-color: #0056b3;
4479
}
80+
81+
@media (max-width: 576px) {
82+
.settings-container {
83+
padding: 15px;
84+
}
85+
86+
.settings-title {
87+
font-size: 24px;
88+
}
89+
90+
.btn-primary {
91+
width: 100%;
92+
}
93+
}

0 commit comments

Comments
 (0)