1
0
Fork 0
forked from Fuji/Fuji

Compare commits

...

3 commits

Author SHA1 Message Date
daa2126756 Fix timetable error when Room is null 2025-04-18 23:44:34 +02:00
1866f61b05 Add logging out 2025-04-18 23:42:34 +02:00
8c2ab10eb1 Home: create bar with full name and class 2025-04-18 22:55:17 +02:00
4 changed files with 69 additions and 8 deletions

View file

@ -1,15 +1,39 @@
import flet as ft
import configparser
from i18n import _
from constants import *
from homeutils import RecentGradesColumn # Import the function from your new file
from homeutils import RecentGradesColumn
from utils import getconfigpath, getinitials
def HomePage():
config = configparser.ConfigParser()
config.read(f"{getconfigpath()}/config.ini")
studentFullName = config['User']['fullName']
studentClass = config['User']['grade']
return ft.Column([
ft.Text((_("Home")), size=30, weight="bold"),
ft.Text("\n", size=30, weight="bold"),
ft.Card(
content=ft.Container(
content=ft.Column(
controls=[
ft.ListTile(
leading=ft.CircleAvatar(
content=ft.Text(getinitials(studentFullName)),
),
title=ft.Text(studentFullName),
subtitle=ft.Text(studentClass),
),
]
),
width=400,
padding=10
),
),
ft.Row([
ft.Card(
content=ft.Container( # Timetable Card
content=ft.Container(
content=ft.Column([
ft.Row([
ft.Icon(ft.Icons.BACKPACK_OUTLINED, size=32, color="#FFFFFF"),
@ -34,8 +58,8 @@ def HomePage():
),
ft.Card(
content=ft.Container( # Recent Grades Card
content=RecentGradesColumn(), # Use the imported function here
content=ft.Container(
content=RecentGradesColumn(),
#margin=20,
padding=10,
alignment=ft.alignment.top_left,

View file

@ -1,13 +1,26 @@
import flet as ft
from constants import *
from utils import setthemecolor, setlanguage, restart
from utils import setthemecolor, setlanguage, restart, logout
from i18n import _, set_language
def SettingsPage(page):
# Create the main container to hold everything
main_container = ft.Container()
def handle_logout(e):
logout()
restart(e.page)
logout_modal = ft.AlertDialog(
modal=True,
title=ft.Text(_("Logout")),
content=ft.Text(_("Do you want to logout?")),
actions=[
ft.TextButton("Yes", on_click=handle_logout),
ft.TextButton("No", on_click=lambda e: page.close(logout_modal)),
],
actions_alignment=ft.MainAxisAlignment.END,
)
# Create a custom notification that we'll show/hide
notification = ft.Container(
visible=False,
bgcolor=ft.colors.AMBER_100,
@ -103,6 +116,12 @@ def SettingsPage(page):
on_change=onthemechange
)
]),
ft.Row([
ft.ElevatedButton(
_("Logout"),
on_click=lambda e: page.open(logout_modal)
),
]),
]),
expand=True # Make this container expand to push the notification to the bottom
),

View file

@ -32,7 +32,7 @@ class Lesson(BaseModel):
return Lesson(
position = data["TimeSlot"]["Position"],
date = datetime.fromtimestamp(data["Date"]["Timestamp"] / 1000).date(),
room = data["Room"]["Code"],
room = data["Room"]["Code"] if data.get("Room") else None,
start = datetime.strptime(data["TimeSlot"]["Start"], "%H:%M").time(),
end = datetime.strptime(data["TimeSlot"]["End"], "%H:%M").time(),
subject = data["Subject"]["Name"] if data["Subject"] else data["Event"],

View file

@ -102,4 +102,22 @@ def get_current_month_dates():
next_month = today.replace(month=today.month + 1, day=1)
end_date = next_month - timedelta(days=1)
return start_date.strftime("%Y-%m-%d"), end_date.strftime("%Y-%m-%d")
return start_date.strftime("%Y-%m-%d"), end_date.strftime("%Y-%m-%d")
def getinitials(full_name):
initials = ''.join([part[0].upper() for part in full_name.split()])
return initials
def logout():
config = configparser.ConfigParser()
config.read(f"{getconfigpath()}/config.ini")
config["Settings"]["islogged"] = "False"
config["User"]["fullname"] = ""
config["User"]["grade"] = ""
config["User"]["semester"] = "1"
if os.path.exists("database.db"):
os.remove("database.db")
with open(f"{getconfigpath()}/config.ini", "w") as file:
config.write(file)